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) の更新プログラムのロールアップ |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | ntifs.h (Ntifs.h を含む) |
IRQL | 任意のレベル |
関連項目
ExAllocatePoolWithTag の
FsRtlGetPerStreamContextPointer の
FsRtlSetupAdvancedHeader の