次の方法で共有


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構造体の可変長配列を作成し、ミニフィルターが FltRegisterFilterRegistration パラメーターとして渡す 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 を含む)

関連項目

FLT_REGISTRATION

FltRegisterFilter

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK