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 と IRP ベースの読み取りと書き込みに適用されます。高速 I/O はすべてキャッシュされるためです。 |
FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO (0x00000004) | ミニフィルターは、このフラグを設定して、、以外のボリューム ハンドルに対して発行されたすべての 操作がスキップされるようにします。 この操作のミニフィルターのコールバックはバイパスされることに注意してください。 |
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 操作の種類ごとに個別に登録する必要があります。
必要条件
要件 | 価値 |
---|---|
ヘッダー | fltkernel.h (Fltkernel.h を含む) |
関連項目
FltRegisterFilterの