FSCTL_REQUEST_FILTER_OPLOCK IOCTL (winioctl.h)
请求对文件使用筛选器机会锁。
若要执行此操作,请使用以下参数调用 DeviceIoControl 函数。
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to file
FSCTL_REQUEST_FILTER_OPLOCK, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
注解
此操作仅由从本地服务器请求机会锁的客户端应用程序使用。 从远程服务器请求机会性锁的客户端应用程序不得直接请求它们-网络重定向程序以透明方式请求应用程序的机会性锁。 尝试使用此操作从远程服务器请求机会锁将导致请求被拒绝。
如果需要新的 oplock 类型,则必须关闭句柄并使用 CreateFile 重新打开新句柄,并且必须使用所需的FSCTL_REQUEST_OPLOCK_XXX控制代码在新句柄上调用 DeviceIoControl。 若要在可以更改 oplock 类型的句柄上请求 oplock, (无需在) 关闭并重新打开该句柄,请使用 FSCTL_REQUEST_OPLOCK 控件代码。
使用 FSCTL_REQUEST_FILTER_OPLOCK 请求文件上的筛选器机会锁。 只要保留筛选器锁,客户端文件系统就可以缓存读取的数据并在本地处理数据,但一次只能有一个客户端持有该锁。
筛选器 oplock 所有者必须确认 oplock 中断 (看到 中断机会锁) ,然后与筛选器 oplock 不兼容的任何操作都可以在另一个句柄上执行。 锁定断开后,将通知网络重定向程序不要将文件中的任何缓存数据视为有效数据。
有关详细信息,请参阅 机会锁的类型。
有关各种 oplock 控制代码的比较,请参阅 FSCTL_REQUEST_OPLOCK。
如果在非重叠 ( 同步) 模式下打开文件,FSCTL_REQUEST_FILTER_OPLOCK控制代码将失败。
有关重叠 I/O 对此操作的影响,请参阅 DeviceIoControl 主题的“备注”部分。
在 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) |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈