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
キャッシュされた I/O 操作またはページング I/O 操作に対してプリ操作 (PFLT_PRE_OPERATION_CALLBACK) およびポスト操作 (PFLT_POST_OPERATION_CALLBACK) コールバック ルーチンを呼び出すタイミングを指定するフラグのビットマスク。 このメンバーは省略可能であり、0 にすることができます。
フラグ | 説明 |
---|---|
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 がキャッシュされるため、このフラグは高速 I/O と IRP ベースの読み取りと書き込みに適用されます。 |
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) ルーチンを登録できます。
これらのコールバック ルーチンを登録するために、ミニフィルターは、FLT_OPERATION_REGISTRATION構造体の可変長配列を作成し、そのミニフィルターが FltRegisterFilter の Registration パラメーターとして渡す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の事後操作コールバック ルーチンを登録できません。
1 つのプリ操作または事後操作コールバック ルーチンを使用して、複数の種類の I/O 操作を処理できます。 ただし、コールバック ルーチンは、I/O 操作の種類ごとに個別に登録する必要があります。
要件
要件 | 値 |
---|---|
Header | fltkernel.h (Fltkernel.h を含む) |