FLT_CONTEXT_REGISTRATION 構造体 (fltkernel.h)
FLT_CONTEXT_REGISTRATION構造体は、コンテキスト型を登録するために使用されます。
構文
typedef struct _FLT_CONTEXT_REGISTRATION {
FLT_CONTEXT_TYPE ContextType;
FLT_CONTEXT_REGISTRATION_FLAGS Flags;
PFLT_CONTEXT_CLEANUP_CALLBACK ContextCleanupCallback;
SIZE_T Size;
ULONG PoolTag;
PFLT_CONTEXT_ALLOCATE_CALLBACK ContextAllocateCallback;
PFLT_CONTEXT_FREE_CALLBACK ContextFreeCallback;
PVOID Reserved1;
} FLT_CONTEXT_REGISTRATION, *PFLT_CONTEXT_REGISTRATION;
メンバー
ContextType
コンテキストの種類。 このメンバーは必須であり、次のいずれかの値である必要があります。
FLT_FILE_CONTEXT (Windows Vista 以降のみ)。
FLT_INSTANCE_CONTEXT
FLT_STREAM_CONTEXT
FLT_STREAMHANDLE_CONTEXT
FLT_SECTION_CONTEXT (Windows 8 以降のみ)。
FLT_TRANSACTION_CONTEXT (Windows Vista 以降のみ)。
FLT_VOLUME_CONTEXT
Flags
フィルター マネージャーが固定サイズ コンテキストのルックアサイド リストから新しいコンテキストを割り当てる方法を指定するフラグのビットマスク。 このメンバーには、0 または次の値を指定できます。
フラグ | 説明 |
---|---|
FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH | ミニフィルターで固定サイズのコンテキストが使用され、このフラグが指定されている場合、フィルター マネージャーは、ルックアサイド リスト内のコンテキストのサイズが要求されたサイズ以上の場合に、ルックアサイド リストからコンテキストを割り当てます。 それ以外の場合、フィルター マネージャーは、ルックアサイド リスト内のコンテキストのサイズが要求されたサイズと等しい場合にのみ、ルックアサイド リストからコンテキストを割り当てます。 |
ContextCleanupCallback
PFLT_CONTEXT_CLEANUP_CALLBACK型のミニフィルター定義 ContextCleanupCallback ルーチンへのポインター。 フィルター マネージャーは、コンテキストを削除する直前に、このルーチンを呼び出します。 ミニフィルターにコンテキスト内でクリーンするためのメモリまたはポインターがない場合、このメンバーは省略可能であり、NULL にすることができます。
Size
ミニフィルターが固定サイズのコンテキストを使用する場合の、コンテキストのミニフィルターで定義された部分のサイズ (バイト単位)。 0 は有効なサイズ値です。 ミニフィルターで可変サイズのコンテキストを使用する場合、このメンバーは必須であり、FLT_VARIABLE_SIZED_CONTEXTSに設定する必要があります。
PoolTag
コンテキストに使用するプール タグ値。 このタグは、1 ~ 4 個の 7 ビット ASCII 文字の文字列として指定され、発生するシステムのクラッシュ ダンプに表示されます。 ContextAllocateCallback メンバーが NULL の場合、このメンバーは必須であり、0 にすることはできません。
ContextAllocateCallback
PFLT_CONTEXT_ALLOCATE_CALLBACK型のミニフィルター定義 ContextAllocateCallback ルーチンへのポインター。 このメンバーは省略可能であり、 NULL にすることができます。 NULL でない場合、Size メンバーと PoolTag メンバーは無視されます。
ContextFreeCallback
PFLT_CONTEXT_FREE_CALLBACK型のミニフィルター定義の ContextFreeCallback ルーチンへのポインター。 このメンバーは省略可能であり、 NULL にすることができます。 NULL でない場合、Size メンバーと PoolTag メンバーは無視されます。
Reserved1
システムで使用するために予約されています。 ミニフィルターでは、このメンバーを NULL に設定する必要があります。
注釈
ミニフィルターが DriverEntry ルーチンから FltRegisterFilter を呼び出す場合は、使用する各コンテキストの種類を登録する必要があります。
これらのコンテキスト型を登録するために、ミニフィルターは、FLT_CONTEXT_REGISTRATION構造体の可変長配列を作成し、そのミニフィルターが FltRegisterFilter の Registration パラメーターとして渡すFLT_REGISTRATION構造体の ContextRegistration メンバーに配列へのポインターを格納します。 この配列の最後の要素は {FLT_CONTEXT_END} である必要があります。
ミニフィルターが使用するコンテキストの種類ごとに、ミニフィルターは、次の規則に従って、少なくとも 1 つのFLT_CONTEXT_REGISTRATION構造体を指定する必要があります。
- ミニフィルターが NULL 以外の ContextAllocateCallback メンバーを持つFLT_CONTEXT_REGISTRATION構造体を提供する場合、そのコンテキスト型に追加のFLT_CONTEXT_REGISTRATION構造体を指定することはできません。
- ミニフィルターが 2 つ以上の同一のFLT_CONTEXT_REGISTRATION構造体を提供する場合は、最初の構造体のみが使用されます。 その他は無視されます。
- コンテキストの種類ごとに、 FLT_VARIABLE_SIZED_CONTEXTS の Size メンバーを持つ 1 つのFLT_CONTEXT_REGISTRATION構造体のみを指定できます。
- FLT_VARIABLE_SIZED_CONTEXTS以外の Size メンバーを持つ 3 つ以下のFLT_CONTEXT_REGISTRATION構造体は、コンテキストの種類ごとに指定できます。
要件
要件 | 値 |
---|---|
Header | fltkernel.h (Fltkernel.h を含む) |