次の方法で共有


FSRTL_PER_FILEOBJECT_CONTEXT構造体 (ntifs.h)

OS は、不透明な FSRTL_PER_FILEOBJECT_CONTEXT 構造を使用して、ファイル オブジェクトのファイル システム フィルター ドライバー定義コンテキスト情報構造を追跡します。

構文

typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT {
  LIST_ENTRY Links;
  PVOID      OwnerId;
  PVOID      InstanceId;
} FSRTL_PER_FILEOBJECT_CONTEXT, *PFSRTL_PER_FILEOBJECT_CONTEXT;

メンバーズ

Links

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

OwnerId

ファイルごとのオブジェクト コンテキスト構造の所有フィルターを一意に識別する、フィルター ドライバーによって割り当てられた変数へのポインター。 この変数の形式は、フィルター ドライバー固有です。 フィルター ライターは、フィルターのデバイス オブジェクトやドライバー オブジェクトのアドレスなど、意味のある便利な値を選択する必要があります。 このメンバーの値を NULL にすることはできません。

InstanceId

同じフィルター ドライバーによって作成されたファイルごとのオブジェクト コンテキスト構造を区別するために使用できる、フィルター ドライバーによって割り当てられた変数へのポインター。 この変数の形式は、フィルター ドライバー固有です。 フィルター ライターは、ファイル オブジェクト自体のアドレスなど、意味のある便利な値を選択する必要があります。 このメンバーの値は NULL にできます。

備考

ファイル システム フィルター ドライバーは、不透明な FSRTL_PER_FILEOBJECT_CONTEXT 構造体を使用して、ファイル オブジェクトのコンテキスト情報を維持できます。 この構造体は、as-is 使用することも、ドライバー定義のファイルごとのオブジェクト ごとのコンテキスト構造に埋め込んだりすることもできます。

各ファイル オブジェクトには、ファイル オブジェクトごとのコンテキスト構造リストを 1 つ関連付けることができます。 このリストの各メンバー (つまり、特定のファイルごとのオブジェクト コンテキスト構造) は、フィルター ドライバーによって所有されます。 フィルター ドライバーの観点から見ると、各フィルター ドライバーは、同じファイル オブジェクトに対して複数のファイル ごとのオブジェクト コンテキスト構造を関連付けることができます。

フィルターで定義された各ファイル オブジェクトごとのコンテキスト構造には、初期化されたFSRTL_PER_FILEOBJECT_CONTEXT構造体を含める必要があります。 FSRTL_PER_FILEOBJECT_CONTEXT構造体は、ページ プールまたは非ページ プールから割り当てることができ、FsRtlInitPerFileObjectContext マクロを使用して初期化する必要があります。

FSRTL_PER_FILEOBJECT_CONTEXT構造体またはファイル オブジェクトごとのフィルター定義のコンテキスト構造 (初期化されたFSRTL_PER_FILEOBJECT_CONTEXT構造体を含む) をファイル オブジェクトのすべてのコンテキスト構造の一覧に挿入するには、FsRtlInsertPerFileObjectContext 関数を使用します。

FSRTL_PER_FILEOBJECT_CONTEXTまたはファイル単位のオブジェクトごとのコンテキスト構造がファイル オブジェクトに関連付けられた後、FsRtlLookupPerFileObjectContext 呼び出すことによって取得したり、FsRtlRemovePerFileObjectContext を呼び出して削除したりできます (OwnerIdInstanceIdの値に基づきます)。

ファイル システム ミニフィルター ドライバーでは、次の関数を使用しないでください。

代わりに、ミニフィルターは次の関数を使用して、コンテキスト情報をファイル オブジェクトに関連付けることができます。

  • FltAllocateContext の
  • FltDeleteContext の
  • FltSetStreamHandleContext の
  • FltDeleteStreamHandleContext の
  • FltGetStreamHandleContext の
  • FltReleaseContext の

ファイル システム ミニフィルター ドライバーでは、FsRtlXxxPerFileObjectContext 関数を使用しないでください。 代わりに、ミニフィルターは、FltXxxContext 関数を使用して、コンテキスト情報をファイル オブジェクトに関連付けることができます。 完全な一覧については、FSRTL_PER_FILEOBJECT_CONTEXT トピックを参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista
ヘッダー ntifs.h (Fltkernel.h、Ntifs.h を含む)

関連項目

DEVICE_OBJECT

DRIVER_OBJECT

FILE_OBJECT

FltAllocateContext の

FltDeleteContext の

FltDeleteStreamHandleContext の

FltGetStreamHandleContext の

FltReleaseContext の

FltSetStreamHandleContext の

FsRtlInitPerFileObjectContext

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext

FsRtlRemovePerFileObjectContext