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結構。 在此結構中,迷你篩選會在結構的 PreOperationPostOperation 成員中指定其回呼例程的進入點。

迷你篩選可以註冊指定類型 I/O 作業的預先操作回呼例程,而不註冊後置回呼,反之亦然。

文件系統不會收到IRP_MJ_POWER或IRP_MJ_DEVICE_CHANGE要求。 迷你篩選無法註冊這些作業的預先操作或後置回呼例程。

迷你篩選無法為IRP_MJ_SHUTDOWN註冊後置回呼例程。

單一預先操作或後置回呼例程可用來處理多個 I/O 作業類型。 不過,每個 I/O 作業類型都必須個別註冊回呼例程。

規格需求

需求
標頭 fltkernel.h (包含 Fltkernel.h)

另請參閱

FLT_REGISTRATION

FltRegisterFilter

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK