共用方式為


FltOplockFsctrlEx 函式 (fltkernel.h)

FltOplockFsctrlEx 例程會代表迷你篩選驅動程式執行各種 oplock (oplock) 作業。

語法

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrlEx(
  [in] POPLOCK            Oplock,
  [in] PFLT_CALLBACK_DATA CallbackData,
  [in] ULONG              OpenCount,
  [in] ULONG              Flags
);

參數

[in] Oplock

檔案的不透明不透明鎖定指標。 此指標必須由先前呼叫 FltInitializeOplock 來初始化。

[in] CallbackData

I/O 作業 FLT_CALLBACK_DATA 結構的指標。 這個參數是必要的,而且不能是 NULL

[in] OpenCount

如果要求獨佔 oplock,則為檔案的使用者句柄數目。 設定層級 2、R 或 RH oplock 要求的非零值,表示檔案上有位元組範圍鎖定。 如需 oplock 類型的相關信息,請參閱 Oplock 概觀

[in] Flags

相關聯 oplock 作業的位掩碼。 迷你篩選驅動程式會設定位以指定 FltOplockFsctrlEx 的行為。 Flags 參數具有下列選項:

意義
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) 檔系統已驗證目前開啟相符之任何句柄上的所有 oplock 機碼。 藉由指定此旗標,當檔案有多個開啟句柄存在時,允許 oplock 套件授與層級 RW 或 RWH 的 oplock。 如需 oplock 類型的詳細資訊,請參閱 Oplock 概觀

傳回值

FltOplockFsctrlEx 會針對某些 FSCTL 作業傳回FLT_PREOP_PENDING。 如需詳細資訊,請參閱下列一節中所列 FSCTL 代碼的參考頁面。 否則, FltOplockFsctrlEx 會傳回FLT_PREOP_COMPLETE。

備註

迷你篩選驅動程式會呼叫 FltOplockFsctrlEx 來執行建立作業或文件系統控制 I/O 作業的各種商機鎖定作業。

CallbackData 參數所指向的FLT_CALLBACK_DATA結構必須代表以 IRP 為基礎的IRP_MJ_FILE_SYSTEM_CONTROLIRP_MJ_CREATE作業。

如果作業是IRP_MJ_FILE_SYSTEM_CONTROL作業, FltOplockFsctrlEx 可以搭配下列 FSCTL 程式代碼使用:

FSCTL 程式代碼是在作業FLT_PARAMETERS結構的 FsControlCode 成員中設定。 如需 FsControlCode 和其他IRP_MJ_FILE_SYSTEM_CONTROL參數的詳細資訊,請參閱 FLT_PARAMETERS for IRP_MJ_FILE_SYSTEM_CONTROL

如需有關商機鎖定的詳細資訊,請參閱 Microsoft Windows SDK 檔。

如果作業是 IRP_MJ_CREATE 要求,如果下列所有條件都成立, 則可以使用 FltOplockFsctrl 來要求擱置篩選機率鎖定:

  • OpenCount 參數的值必須是 1。
  • IRP_MJ_CREATE要求的 DesiredAccess 參數值是FILE_READ_ATTRIBUTES。 此參數是在作業FLT_PARAMETERS結構的 SecurityContext 成員中設定。 如需詳細資訊,請參閱 FLT_PARAMETERS for IRP_MJ_CREATE
  • IRP_MJ_CREATE作業的 ShareAccess 參數值是FILE_SHARE_READ、FILE_SHARE_WRITE或FILE_SHARE_DELETE。 此參數是在作業FLT_PARAMETERS結構的 ShareAccess 成員中設定。 如需詳細資訊,請參閱 FLT_PARAMETERS for IRP_MJ_CREATE

呼叫此函式的篩選和文件系統必須將呼叫同步處理至系統提供的 oplock 套件。 如需詳細資訊 ,請參閱 Oplock 同步 處理。

規格需求

需求
最低支援的用戶端 從 Windows 8 開始,即可使用此例程。
目標平台 Universal
標頭 fltkernel.h (包含 Fltkernel.h)
程式庫 FltMgr.lib
Dll Fltmgr.sys
IRQL <= APC_LEVEL

另請參閱

FLT_CALLBACK_DATA

IRP_MJ_CREATE FLT_PARAMETERS

IRP_MJ_FILE_SYSTEM_CONTROL的FLT_PARAMETERS

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplockEx

FltInitializeOplock

FsRtlOplockFsctrlEx

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL