次の方法で共有


FSRTL_PER_FILE_CONTEXT構造体 (ntifs.h)

レガシ ファイル システム フィルター ドライバーは、FSRTL_PER_FILE_CONTEXT 構造体を使用して、ドライバー固有のコンテキスト情報を開いているファイルに関連付けることができます。

構文

typedef struct _FSRTL_PER_FILE_CONTEXT {
  LIST_ENTRY     Links;
  PVOID          OwnerId;
  PVOID          InstanceId;
  PFREE_FUNCTION FreeCallback;
} FSRTL_PER_FILE_CONTEXT, *PFSRTL_PER_FILE_CONTEXT;

メンバーズ

Links

同じファイルに関連付けられているすべてのファイルごとのコンテキスト構造の一覧にある、この構造体のリンク。 FsRtlInsertPerFileContext 、ファイルのすべてのファイルごとのコンテキスト構造の一覧にこのメンバーを挿入します。

OwnerId

ファイルごとのコンテキスト構造の所有者を一意に識別する、フィルター ドライバーによって割り当てられたバッファーへのポインター。 この変数の形式は、フィルター ドライバー固有です。 フィルター ドライバーは、このメンバーを非NULL 値に設定する必要があります。

InstanceId

同じフィルター ドライバーによって作成されるファイルごとのコンテキスト構造を区別するために使用できる、フィルター ドライバーによって割り当てられたバッファーへのポインター。 この変数の形式は、フィルター ドライバー固有です。 フィルター ドライバーは、このメンバーを NULL設定できます。

FreeCallback

ファイルごとのコンテキスト構造を解放する コールバック ルーチン へのポインター。 フィルター ドライバーは、このメンバーを非NULL 値に設定する必要があります。

備考

コンテキスト情報をファイルに関連付けるために、レガシ フィルター ドライバーは最初に FSRTL_PER_FILE_CONTEXT 構造体を割り当て、FsRtlInsertPerFileContextを使用して初期化します。 その後、ドライバーは、FsRtlInsertPerFileContext を使用して、その FSRTL_PER_FILE_CONTEXT オブジェクトをファイルに関連付けます。 システムは、ファイルのファイル コンテキスト オブジェクトを破棄すると、FsRtlTeardownPerFileContexts を呼び出し、FSRTL_PER_FILE_CONTEXT オブジェクトで指定された FreeCallback ルーチンを呼び出します。 そのコールバックは、ドライバー固有のコンテキスト オブジェクトを解放する必要があります。

フィルター ライターは、ドライバー オブジェクトやデバイス オブジェクトのアドレスなど、意味のある便利な OwnerID 値を選択する必要があります。

フィルター ライターは、ファイルのファイル コンテキスト オブジェクトのアドレスなど、意味のある便利な InstanceID 値を選択する必要があります。 FsRtlGetPerFileContextPointer マクロを使用して、ファイル オブジェクトからそのアドレスを取得します。

FSRTL_PER_FILE_CONTEXT 構造体は、as-is使用することも、ドライバー定義のファイルごとのコンテキスト構造に埋め込んだりすることもできます。

FSRTL_PER_FILE_CONTEXT 構造体は、ページ プールまたは非ページ プールから割り当てることができます。

FsRtlInitPerFileContext マクロは、FSRTL_PER_FILE_CONTEXT 構造体を初期化します。

パラメーター

FileContext の

FSRTL_PER_FILE_CONTEXT

初期化するFSRTL_PER_FILE_CONTEXT オブジェクト。

OwnerId

PVOID

ファイルごとのコンテキスト構造の所有者を一意に識別するフィルター ドライバーによって割り当てられた変数へのポインター。 形式はフィルター ドライバー固有です。 このパラメーターには、以外の NULL 値が必要です。

InstanceId

PVOID

ファイルごとのコンテキスト構造の所有者を一意に識別するフィルター ドライバーによって割り当てられた変数へのポインター。 形式はフィルター ドライバー固有です。 このパラメーターには、以外の NULL 値が必要です。

FreeCallback を する

PFREE_FUNCTION

ファイルごとのコンテキスト構造を解放する コールバック ルーチン へのポインター。

戻り値

VOID を する

何一つ。

このマクロは、fsRtlInsertPerFileContext呼び出す前に使用する必要があります。

フィルター ライターは、ドライバー オブジェクトやデバイス オブジェクトのアドレスなど、意味のある便利な OwnerID 値を選択する必要があります。

フィルター ライターは、ファイルのファイル コンテキスト オブジェクトのアドレスなど、意味のある便利な InstanceID 値を使用する必要があります。 FsRtlGetPerFileContextPointer マクロを使用して、ファイル オブジェクトからそのアドレスを取得します。

コンテキスト オブジェクトを使用して作成する方法の詳細については、「従来のファイル システム フィルター ドライバーの 追跡 Per-File コンテキスト」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降で使用できます。
ヘッダー ntifs.h (Fltkernel.h、Ntifs.h を含む)

関連項目

FsRtlGetPerFileContextPointer の

FsRtlInitPerFileContext

FsRtlInsertPerFileContext

FsRtlTeardownPerFileContexts

PFREE_FUNCTION

レガシ ファイル システム フィルター ドライバー の 追跡 Per-File コンテキスト