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)

另請參閱