共用方式為


FSCTL_OPLOCK_BREAK_ACK_NO_2 IOCTL (winioctl.h)

回應通知,指出檔案上的商機鎖定即將中斷。 使用此作業可解除鎖定檔案上的所有機會鎖定,但讓檔案保持開啟狀態。

若要執行這項作業,請使用下列參數呼叫 DeviceIoControl 函式。

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to file
  FSCTL_OPLOCK_BREAK_ACK_NO_2,      // 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_ACK_NO_2 控件程式代碼,向您想要放棄任何機會鎖定的伺服器指出,但計劃讓檔案保持開啟狀態。 如果作業傳回錯誤碼 ERROR_IO_PENDING,伺服器已授與檔案的層級 2 鎖定。

使用 FSCTL_OPLOCK_BREAK_ACK_NO_2 的其中一個替代方法是指出應用程式即將關閉檔案。 針對此回應使用 FSCTL_OPBATCH_ACK_CLOSE_PENDING 控件程序代碼。

另一個替代方法,如果中斷的鎖定是獨佔的商機鎖定,表示檔案應該改為收到層級 2 的商機鎖定。 針對此回應使用 FSCTL_OPLOCK_BREAK_ACKNOWLEDGE 控件程序代碼。

應用程式會透過使用與損毀之檔案相關聯的疊結構 hEvent 成員,來通知機會鎖定已中斷。 應用程式也可以使用 GetOverlappedResultHasOverlappedIoCompleted 等函式。

在 Windows 8 和 Windows Server 2012 中,下列技術支援此程序代碼。

技術 支援
伺服器消息塊 (SMB) 3.0 通訊協定 No
SMB 3.0 透明故障轉移 (TFO) No
具有向外延展檔案共用的SMB 3.0 (SO) No
叢集共用磁碟區文件系統 (CsvFS) Yes
彈性檔案系統 (ReFS) Yes

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
標頭 winioctl.h (包含 Windows.h)

另請參閱