FsRtlInitPerStreamContext マクロ (ntifs.h)
FsRtlInitPerStreamContext マクロは、フィルター ドライバーコンテキスト構造を初期化します。
構文
void FsRtlInitPerStreamContext(
_fc,
_owner,
_inst,
_cb
);
パラメーター
_fc
ファイル ストリームのコンテキスト情報を維持するために使用される呼び出し元によって割り当てられたFSRTL_PER_STREAM_CONTEXT構造体へのポインター。 この構造体は、そのまま使用することも、ドライバー定義のストリームごとのコンテキスト構造に埋め込んだりすることもできます。 どちらの構造体型も、一般的に ExAllocatePoolWithTag を呼び出すことによって割り当てられます。
_owner
ストリームごとのコンテキスト構造の所有者を一意に識別する呼び出し元割り当て変数へのポインター。 この変数の形式は、フィルター ドライバー固有です。 フィルター ライターは、ドライバー オブジェクトやデバイス オブジェクトのアドレスなど、意味のある便利な値を選択する必要があります。 呼び出し元は、このパラメーターに NULL 以外の値を指定する必要があります。
_inst
フィルター ドライバーへのポインター - 同じフィルター ドライバーによって作成されたストリームごとのコンテキスト構造を区別するために使用できる割り当てられた変数。 この変数の形式は、フィルター ドライバー固有です。 フィルター ライターは、ファイル ストリームのストリーム コンテキスト オブジェクトのアドレスなど、意味のある便利な値を選択する必要があります。 (ファイル オブジェクトからこのアドレスを取得するには、 FsRtlGetPerStreamContextPointer マクロを使用します)。このパラメーターは省略可能であり、 NULL にすることができます。
_cb
ストリームごとのコンテキスト構造を解放するコールバック ルーチンへのポインター。 呼び出し元は、このパラメーターに NULL 以外の値を指定する必要があります。 このルーチンとそのパラメーターは、次のように定義されます。
typedef VOID (*PFREE_FUNCTION) ( IN PVOID Buffer ); |
- バッファー
解放するストリームごとのコンテキスト構造へのポインター。 FreeCallback ルーチンは通常、このポインターを適切な構造体ポインター型にキャストし、ExFreePool を呼び出して解放します。
戻り値
なし
解説
ファイル システム フィルター ドライバーは 、FsRtlInitPerStreamContext マクロを使用して、新しく割り当てられたストリームごとのコンテキスト構造を初期化してから、ファイル ストリームに関連付けます。 初期化されたコンテキスト構造は、 FsRtlInsertPerStreamContext にパラメーターとして渡すことができます。
FsRtlInitPerStreamContext は 、FreeCallback ルーチンのアドレスを、FSRTL_PER_STREAM_CONTEXT構造体の FreeCallback メンバーに格納します。
FreeCallback ルーチンは、IRQL <= APC_LEVELで呼び出されます。 通常、IRQL PASSIVE_LEVELで呼び出されます。
コンテキスト構造がファイル ストリームに関連付けられた後は、 FsRtlLookupPerStreamContext を呼び出して取得するか、 FsRtlRemovePerStreamContext を呼び出して削除できます。
詳細については、「 レガシ ファイル システム フィルター ドライバーでの追跡 Per-Stream コンテキスト」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP;Windows 2000 Service Pack 4 (SP4) の更新プログラムのロールアップ |
対象プラットフォーム | デスクトップ |
Header | ntifs.h (Ntifs.h を含む) |
IRQL | 任意のレベル |
こちらもご覧ください
FsRtlGetPerStreamContextPointer