FltOplockFsctrl 函式 (fltkernel.h)
FltOplockFsctrl 代表迷你篩選驅動程式執行各種機會鎖定 (oplock) 作業。
語法
FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrl(
[in] POPLOCK Oplock,
[in] PFLT_CALLBACK_DATA CallbackData,
[in] ULONG OpenCount
);
參數
[in] Oplock
檔案的不透明不透明指標。 此指標必須由先前呼叫 FltInitializeOplock初始化。
[in] CallbackData
I/O 作業 FLT_CALLBACK_DATA 結構的指標。 這是必要參數,而且無法 NULL。
[in] OpenCount
如果要求獨佔 oplock,檔案的使用者句柄數目。 設定層級 2、R 或 RH oplock 要求的非零值,表示檔案上有位元組範圍鎖定。 如需 oplock 類型的相關信息,請參閱 Oplock 概觀。
傳回值
FltOplockFsctrl 會針對某些 FSCTL 作業傳回FLT_PREOP_PENDING。 如需詳細資訊,請參閱下列一節所列之 FSCTL 代碼的參考頁面。 否則,FltOplockFsctrl 會傳回FLT_PREOP_COMPLETE。
言論
小型篩選驅動程式會呼叫 FltOplockFsctrl,以針對建立或文件系統控制 I/O 作業執行各種機會鎖定作業。
CallbackData 參數所指向的 FLT_CALLBACK_DATA 結構必須代表以 IRP 為基礎的 IRP_MJ_FILE_SYSTEM_CONTROL 或 IRP_MJ_CREATE 作業。
如果作業是IRP_MJ_FILE_SYSTEM_CONTROL作業,FltOplockFsctrl 可以搭配下列 FSCTL 程式代碼使用:
- FSCTL_OPBATCH_ACK_CLOSE_PENDING
- FSCTL_OPLOCK_BREAK_ACK_NO_2
- FSCTL_OPLOCK_BREAK_ACKNOWLEDGE
- FSCTL_OPLOCK_BREAK_NOTIFY
- FSCTL_REQUEST_BATCH_OPLOCK
- FSCTL_REQUEST_FILTER_OPLOCK
- FSCTL_REQUEST_OPLOCK_LEVEL_1
- FSCTL_REQUEST_OPLOCK_LEVEL_2
FSCTL 程式代碼是在作業
如需機會鎖定的詳細資訊,請參閱 Microsoft Windows SDK 檔。
如果作業是 IRP_MJ_CREATE 要求,FltOplockFsctrl 可用來要求擱置篩選機會鎖定,如果下列所有條件都成立:
- OpenCount 參數的值必須是 1。
- IRP_MJ_CREATE要求的 DesiredAccess 參數值是FILE_READ_ATTRIBUTES。 此參數是在作業FLT_PARAMETERS結構的 SecurityContext 成員中設定。 如需詳細資訊,請參閱 FLT_PARAMETERS IRP_MJ_CREATE。
- IRP_MJ_CREATE作業的 ShareAccess 參數值是FILE_SHARE_READ、FILE_SHARE_WRITE或FILE_SHARE_DELETE。 此參數是在作業FLT_PARAMETERS結構的 ShareAccess 成員中設定。 如需詳細資訊,請參閱 FLT_PARAMETERS IRP_MJ_CREATE。
呼叫此函式的篩選和文件系統必須將呼叫同步處理至系統提供的 oplock 套件。 如需詳細資訊,請參閱 Oplock 同步處理。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | fltkernel.h (包括 Fltkernel.h) |
連結庫 | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |
另請參閱
IRP_MJ_CREATE的
IRP_MJ_FILE_SYSTEM_CONTROL的
FSCTL_OPBATCH_ACK_CLOSE_PENDING