共用方式為


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 結構的成員中,迷你篩選程式會以 FltRegisterFilterRegistration 參數的形式傳遞。 這個陣列的最後一個項目必須是 {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)

另請參閱

FLT_REGISTRATION

FltRegisterFilter

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK