次の方法で共有


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で呼び出されます。

FreeCallback ルーチンは、ファイル システムに再帰的に呼び出したり、ファイル システム リソースを取得したりすることはできません。 また、このルーチンは、ファイル ストリームのファイル オブジェクトが既に解放されていることを前提とする必要があります。
 
初期化されたストリームごとのコンテキスト構造をファイル ストリームに関連付けるには、FsRtlInsertPerStreamContext 呼び出します。

コンテキスト構造がファイル ストリームに関連付けられた後は、fsRtlLookupPerStreamContext 呼び出して取得するか、FsRtlRemovePerStreamContextを呼び出して削除できます。

詳細については、「レガシ ファイル システム フィルター ドライバー 追跡 Per-Stream コンテキスト」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP;Windows 2000 Service Pack 4 (SP4) の更新プログラムのロールアップ
ターゲット プラットフォーム デスクトップ
ヘッダー ntifs.h (Ntifs.h を含む)
IRQL 任意のレベル

関連項目

ExAllocatePoolWithTag

ExFreePool

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts