共用方式為


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 控件程式代碼而遺失所有鎖定。

應用程式會透過使用與損毀之檔案相關聯的疊結構 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)

另請參閱