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_ACKNOWLEDGE 或 FSCTL_OPLOCK_BREAK_ACK_NO_2 控制項程式碼來回應通知。 如果中斷的鎖定是獨佔的商機鎖定,則會使用先前的 ,表示檔案應該改為收到層級 2 的機率鎖定。 後者會要求檔案保持開啟狀態,但會遺失所有鎖定。
應用程式會收到通知,指出使用與損毀鎖定之檔案相關聯的重迭結構hEvent成員,來中斷機率鎖定。 應用程式也可以使用 GetOverlappedResult 和 HasOverlappedIoCompleted等函式。
在 Windows 8 和 Windows Server 2012 中,下列技術支援此程式碼。
技術 | 支援 |
---|---|
伺服器訊息區 (SMB) 3.0 通訊協定 | 否 |
SMB 3.0 透明容錯移轉 (TFO) | 否 |
具有向外延展檔案共用的 SMB 3.0 (SO) | 否 |
叢集共用磁片區檔案系統 (CsvFS) | Yes |
彈性檔案系統 (ReFS) | 是 |
規格需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
標頭 | winioctl.h (包含 Windows.h) |