FSCTL_REQUEST_OPLOCK_LEVEL_1 IOCTL (winioctl.h)
要求檔案上層級 1 的商機鎖定。
若要執行這項作業,請使用下列參數呼叫 DeviceIoControl 函 式。
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to file
FSCTL_REQUEST_OPLOCK_LEVEL_1, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
備註
這項作業只會由從本地伺服器要求商機鎖定的用戶端應用程式使用。 從遠端伺服器要求商機鎖定的用戶端應用程式不得直接要求它們,網路重新導向器會以透明方式要求應用程式的商機鎖定。 嘗試使用此作業向遠端伺服器要求商機鎖定,將會導致要求遭到拒絕。
如果需要新的 oplock 類型,則必須關閉句柄,並使用 CreateFile 重新開啟新的句柄,而且必須在具有所需FSCTL_REQUEST_OPLOCK的新句柄上呼叫 DeviceIoControl_XXX控件程式代碼。 若要在可以就地變更 oplock 類型的句柄上要求 oplock, (句柄不需要關閉並重新開啟) ,請使用 FSCTL_REQUEST_OPLOCK 控件程式代碼。
使用 FSCTL_REQUEST_OPLOCK_LEVEL_1 來要求檔案上層級 1 的商機鎖定。 只要保留層級 1 鎖定,用戶端文件系統就可以在本機快取讀取數據或寫入數據。
層級 1 oplock 擁有者必須認可 oplock 中斷 (請參閱 中斷商機鎖定) ,才能在另一個句柄上執行與層級 1 oplock 不相容的任何作業。 鎖定中斷之後,網路重新導向器會收到通知,不會將檔案中的任何快取數據視為有效。
如需詳細資訊,請參閱 Opportunistic Locks 的類型。
如需各種 oplock 控件代碼的比較,請參閱 FSCTL_REQUEST_OPLOCK。
如果檔案以非重疊 (同步) 模式開啟, FSCTL_REQUEST_OPLOCK_LEVEL_1 控件程序代碼就會失敗。
如需此作業上重疊 I/O 的影響,請參閱 DeviceIoControl 主題的一節。
在 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) |