FSCTL_OPLOCK_BREAK_ACKNOWLEDGE IOCTL (winioctl.h)
对如下通知进行响应:文件的独占机会锁即将中断。 使用此操作可指示文件应接收级别 2 的机会锁。
若要执行此操作,请使用以下参数调用 DeviceIoControl 函数。
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to file
FSCTL_OPLOCK_BREAK_ACKNOWLEDGE, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
注解
此操作仅由已从本地服务器请求机会锁的客户端应用程序使用。 从远程服务器请求机会性锁的客户端应用程序不得直接请求它们-网络重定向程序以透明方式请求应用程序的机会性锁。
有关重叠 I/O 对此操作的影响,请参阅 DeviceIoControl 主题的“备注”部分。
FSCTL_OPLOCK_BREAK_ACKNOWLEDGE 是响应应用程序文件上的级别 1、批处理或筛选器机会锁已损坏的通知。 它向服务器指示应用程序应接收 2 级机会性锁。 如果操作 ERROR_IO_PENDING返回错误代码,则服务器已对文件授予应用程序 2 级锁。
使用 FSCTL_OPLOCK_BREAK_ACKNOWLEDGE 的一种替代方法是指示应用程序即将关闭该文件。 对此响应使用 FSCTL_OPBATCH_ACK_CLOSE_PENDING 控制代码。
另一种方法是通过 FSCTL_OPLOCK_BREAK_ACK_NO_2 控制代码请求保持文件打开状态,但丢失所有锁定。
通过使用与机会锁断开的文件关联的 OVERLAPPED 结构的 hEvent 成员,通知应用程序机会性锁已断开。 应用程序还可以使用 GetOverlappedResult 和 HasOverlappedIoCompleted 等函数。
在Windows 8和Windows Server 2012中,以下技术支持此代码。
技术 | 支持 |
---|---|
服务器消息块 (SMB) 3.0 协议 | 否 |
SMB 3.0 透明故障转移 (TFO) | 否 |
具有横向扩展文件共享的 SMB 3.0 (SO) | 否 |
群集共享卷文件系统 (CSV) | 是 |
弹性文件系统 (ReFS) | 是 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | winioctl.h (包括 Windows.h) |