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
要註冊為這種 I/O 作業類型之預先作回呼例程之 PFLT_PRE_OPERATION_CALLBACK型別例程的指標。 這個成員是選擇性的,而且可以 NULL。
PostOperation
要註冊為此 I/O 作業類型後置回呼例程之 PFLT_POST_OPERATION_CALLBACK型別例程的指標。 這個成員是選擇性的,而且可以 NULL。
Reserved1
保留供系統使用。 迷你篩選必須將這個成員設定為 NULL。
言論
當小型篩選程式從其 DriverEntry 例程呼叫 FltRegisterFilter 時,它可以針對它必須處理的每個 I/O 作業類型註冊先行回呼 (PFLT_PRE_OPERATION_CALLBACK) 例程和後續作回呼 (PFLT_POST_OPERATION_CALLBACK) 例程。
為了註冊這些回呼例程,minifilter 會建立FLT_OPERATION_REGISTRATION結構的可變長度陣列,並將數位的指標儲存在 OperationRegistrationFLT_REGISTRATION 結構的成員中,迷你篩選程式會以 FltRegisterFilter的 Registration 參數的形式傳遞。 這個陣列的最後一個項目必須是 {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) |