unlockFile 函数 (fileapi.h)

解锁打开的文件中的区域。 通过解锁区域,其他进程可以访问该区域。

若要指定区域的另一种方法,请使用 UnlockFileEx 函数。

语法

BOOL UnlockFile(
  [in] HANDLE hFile,
  [in] DWORD  dwFileOffsetLow,
  [in] DWORD  dwFileOffsetHigh,
  [in] DWORD  nNumberOfBytesToUnlockLow,
  [in] DWORD  nNumberOfBytesToUnlockHigh
);

参数

[in] hFile

包含使用 LockFile 锁定的区域的文件的句柄。 文件句柄必须已使用 GENERIC_READGENERIC_WRITE 访问权限创建。 有关详细信息,请参阅 文件安全性和访问权限

[in] dwFileOffsetLow

锁定区域开始的文件中起始字节偏移量的低序字。

[in] dwFileOffsetHigh

锁定区域开始的文件中起始字节偏移量的高序字。

[in] nNumberOfBytesToUnlockLow

要解锁的字节范围长度的低序字。

[in] nNumberOfBytesToUnlockHigh

要解锁的字节范围长度的高序字。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

此函数始终同步运行,但当完成端口与文件句柄关联时,可能不会将完成项排队。

解锁文件的某个区域会释放文件上以前获取的锁。 要解锁的区域必须与现有锁定区域完全对应。 文件的两个相邻区域不能单独锁定,然后使用跨两个锁定区域的单个区域解锁。

如果进程终止并锁定了文件的一部分,或者关闭了具有未完成锁的文件,则操作系统会解锁锁。 但是,操作系统解锁这些锁所需的时间取决于可用的系统资源。 因此,建议进程在终止时显式解锁已锁定的所有文件。 如果未执行此操作,则如果操作系统尚未解锁这些文件,可能会拒绝访问这些文件。

在 Windows 8 和 Windows Server 2012 中,此函数由以下技术支持。

技术 支持
服务器消息块 (SMB) 3.0 协议
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CSV)
弹性文件系统 (ReFS)

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 fileapi.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

锁定和解锁文件中的字节范围

CreateFile

文件管理函数

LockFile

UnlockFileEx