FSCTL_REQUEST_FILTER_OPLOCK IOCTL (winioctl.h)

要求檔案的篩選準則不透明鎖定。

若要執行這項作業,請使用下列參數呼叫 DeviceIoControl 函 式。

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to file
  FSCTL_REQUEST_FILTER_OPLOCK,      // 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_FILTER_OPLOCK 來要求檔案上的篩選機率鎖定。 只要保留篩選鎖定,用戶端檔案系統就可以快取讀取資料並在本機處理資料,但一次只能有一個用戶端保存鎖定。

篩選作業鎖定擁有者必須認可 oplock 中斷 (請參閱 中斷商機鎖定) ,才能在另一個控制碼上執行與篩選 oplock 不相容的任何作業。 鎖定中斷之後,網路重新導向器會收到通知,不會將檔案中的任何快取資料視為有效。

如需詳細資訊,請參閱 Opportunistic Locks 的類型

如需各種 oplock 控制項代碼的比較,請參閱 FSCTL_REQUEST_OPLOCK

如果檔案以非重迭 (同步) 模式開啟, FSCTL_REQUEST_FILTER_OPLOCK控制項程式 代碼就會失敗。

如需此作業上重迭 I/O 的影響,請參閱 DeviceIoControl 主題的一節。

在 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)

另請參閱