Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 关于Win32 LockFileEx API中文件偏移量的混淆_Winapi_Ntfs - Fatal编程技术网

Winapi 关于Win32 LockFileEx API中文件偏移量的混淆

Winapi 关于Win32 LockFileEx API中文件偏移量的混淆,winapi,ntfs,Winapi,Ntfs,根据文档,文件偏移量在lpOverlapped->offset/OffsetHigh中指定。但是当调试winword.exe来分析其文件系统行为时,我看到它对一个122字节的文件调用了LockFileEx(),该文件具有Offset=0xfffffb和OffsetHigh=0xffffff,调用成功完成。显然这不是一个有效的偏移量,这意味着什么?来自MSDN: 锁定超出当前文件结尾位置的区域不是错误 他们可能将锁用作某种标志或用于同步。我严重怀疑WinWord是否会使用这样的偏移量调用LockF

根据文档,文件偏移量在
lpOverlapped->offset/OffsetHigh
中指定。但是当调试
winword.exe来分析其文件系统行为时,我看到它对一个122字节的文件调用了
LockFileEx()
,该文件具有
Offset=0xfffffb
OffsetHigh=0xffffff
,调用成功完成。显然这不是一个有效的偏移量,这意味着什么?

来自MSDN:

锁定超出当前文件结尾位置的区域不是错误


他们可能将锁用作某种标志或用于同步。

我严重怀疑WinWord是否会使用这样的偏移量调用
LockFileEx
0xffffffffffffb
is
-5
如果作为有符号值处理,
18446744073709551611
作为
无符号值)。在我怀疑WinWord中存在缺陷之前,我会怀疑您的调试中存在缺陷。现在我怀疑-5是从文件末尾返回的5个字节,这对于查找是有意义的,但不是锁我创建了一个示例并测试了
LockFileEx
函数,但它没有按照您所说的那样工作,您能否提供可复制的代码片段,以便我们发现问题。