FSCTL_OPBATCH_ACK_CLOSE_PENDING IOCTL (winioctl.h)

通知服务器客户端应用程序已准备好关闭文件。 在通知文件上的机会锁已准备好被破坏后,请使用此操作。

若要执行此操作,请使用以下参数调用 DeviceIoControl 函数。

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to file
  FSCTL_OPBATCH_ACK_CLOSE_PENDING,  // dwIoControlCode
  NULL,                             // lpInBuffer
  0,                                // nInBufferSize
  NULL,                             // lpOutBuffer
  0,                                // nOutBufferSize
  (LPDWORD) lpBytesReturned,        // number of bytes returned
  (LPOVERLAPPED) lpOverlapped       // OVERLAPPED structure
);

注解

在调用此函数之前,请不要假设可用虚拟通道的数量,因为系统和其他插件可能具有保留的虚拟通道。 调用此函数后,始终检查CHANNEL_RC_TOO_MANY_CHANNELS返回代码。

有关重叠 I/O 对此操作的影响,请参阅 DeviceIoControl 主题的“备注”部分。

如果收到文件上的机会锁已准备好损坏,并且你打算尽快关闭文件时,请使用 FSCTL_OPBATCH_ACK_CLOSE_PENDING 控制代码。 此操作不请求新的机会锁。

如果不打算关闭文件,可以使用 FSCTL_OPLOCK_BREAK_ACKNOWLEDGEFSCTL_OPLOCK_BREAK_ACK_NO_2 控制代码来响应通知。 如果被破坏的锁是独占机会锁,则使用前者指示文件应改为接收 2 级机会锁。 后者请求文件保持打开状态,但会丢失所有锁定。

通过使用机会锁被断开的文件关联的 OVERLAPPED 结构的 hEvent 成员来通知应用程序机会性锁已断开。 应用程序还可以使用 GetOverlappedResultHasOverlappedIoCompleted 等函数。

在 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)

另请参阅