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 成員,來通知機會鎖定已中斷。 應用程式也可以使用 GetOverlappedResult 和 HasOverlappedIoCompleted 等函式。
在 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) |