FLT_OPERATION_REGISTRATION結構 (fltkernel.h)
FLT_OPERATION_REGISTRATION結構是用來註冊作業回呼例程。
語法
typedef struct _FLT_OPERATION_REGISTRATION {
UCHAR MajorFunction;
FLT_OPERATION_REGISTRATION_FLAGS Flags;
PFLT_PRE_OPERATION_CALLBACK PreOperation;
PFLT_POST_OPERATION_CALLBACK PostOperation;
PVOID Reserved1;
} FLT_OPERATION_REGISTRATION, *PFLT_OPERATION_REGISTRATION;
成員
MajorFunction
指定I/O 作業類型的主要函式程序代碼。 這個成員是必要的,而且不能是 NULL。 如需其他作業的詳細資訊,請參閱 FLT_PARAMETERS。
Flags
旗標的位掩碼,指定何時呼叫預先操作 (PFLT_PRE_OPERATION_CALLBACK) 和後置操作 (PFLT_POST_OPERATION_CALLBACK 快取 I/O 或分頁 I/O 作業的) 回呼例程。 這個成員是選擇性的,而且可以是零。
旗標 | 描述 |
---|---|
FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO (0x00000001) | 迷你篩選會針對讀取或寫入作業設定此旗標,以指定不應該針對分頁 I/O 作業呼叫其預先操作和後置操作回呼例程。 此旗標僅適用於 IRP 型 I/O 作業。 不是以 IRP 為基礎的 I/O 作業會忽略它。 |
FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO (0x00000002) | 迷你篩選會針對讀取或寫入作業設定此旗標,以指定不應該針對快取的 I/O 作業呼叫其預先操作和後置操作回呼例程。 此旗標適用於快速 I/O 以及 IRP 型讀取和寫入,因為會快取所有快速 I/O。 |
FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO (0x00000004) | 迷你篩選會設定此旗標,以便略過在非 DASD 磁碟區句柄上發出 的所有 作業。 請注意,將會略過此作業的迷你篩選回呼。 |
FLTFL_OPERATION_REGISTRATION_SKIP_NON_CACHED_NON_PAGING_IO (0x00000008) | 迷你篩選會設定此旗標,以便略過未快取或分頁的讀取或寫入作業。 請注意,將會略過此作業的迷你篩選回呼。 此旗標僅適用於IRP_MJ_READ和IRP_MJ_WRITE要求。 |
PreOperation
PFLT_PRE_OPERATION_CALLBACK型別例程的指標,要註冊為這種類型的 I/O 作業的預先操作回呼例程。 這個成員是選擇性的,而且可以是 NULL。
PostOperation
要註冊為這個 I/O 作業類型之後置回呼例程 之PFLT_POST_OPERATION_CALLBACK型別例程的指標。 這個成員是選擇性的,而且可以是 NULL。
Reserved1
保留供系統使用。 迷你篩選必須將此成員設定為 NULL。
備註
當迷你篩選從其 DriverEntry 例程呼叫 FltRegisterFilter 時,它可以針對它必須處理的每種 I/O 作業類型註冊預先操作回呼 (PFLT_PRE_OPERATION_CALLBACK) 例程和後置回呼 (PFLT_POST_OPERATION_CALLBACK) 例程。
為了註冊這些回呼例程,迷你篩選會建立FLT_OPERATION_REGISTRATION結構的可變長度陣列,並將數位的指標儲存在minifilter作為 FltRegisterFilterRegistration 參數傳遞之FLT_REGISTRATION結構的 OperationRegistration 成員中。 這個陣列的最後一個項目必須是 {IRP_MJ_OPERATION_END}。
迷你篩選必須為其處理的每個 I/O 作業類型建立個別FLT_OPERATION_REGISTRATION結構。 在此結構中,迷你篩選會在結構的 PreOperation 和 PostOperation 成員中指定其回呼例程的進入點。
迷你篩選可以註冊指定類型 I/O 作業的預先操作回呼例程,而不註冊後置回呼,反之亦然。
文件系統不會收到IRP_MJ_POWER或IRP_MJ_DEVICE_CHANGE要求。 迷你篩選無法註冊這些作業的預先操作或後置回呼例程。
迷你篩選無法為IRP_MJ_SHUTDOWN註冊後置回呼例程。
單一預先操作或後置回呼例程可用來處理多個 I/O 作業類型。 不過,每個 I/O 作業類型都必須個別註冊回呼例程。
規格需求
需求 | 值 |
---|---|
標頭 | fltkernel.h (包含 Fltkernel.h) |