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 構造を使用して、ファイル オブジェクトのコンテキスト情報を維持できます。 この構造体は、そのまま使用することも、ドライバー定義のファイル単位のオブジェクトごとのコンテキスト構造に埋め込んだりすることもできます。
各ファイル オブジェクトには、ファイル オブジェクトごとのコンテキスト構造リストを 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 ( OwnerId と InstanceId の値に基づく) を呼び出して削除できます。
ファイル システム ミニフィルター ドライバーでは、次の関数を使用しないでください。
- FsRtlInitPerFileObjectContext
- FsRtlInsertPerFileObjectContext
- FsRtlLookupPerFileObjectContext
- FsRtlRemovePerFileObjectContext
代わりに、ミニフィルターは次の関数を使用して、コンテキスト情報をファイル オブジェクトに関連付けることができます。
- FltAllocateContext
- FltDeleteContext
- FltSetStreamHandleContext
- FltDeleteStreamHandleContext
- FltGetStreamHandleContext
- FltReleaseContext
ファイル システム ミニフィルター ドライバーでは 、FsRtlXxxPerFileObjectContext 関数を使用しないでください。 代わりに、ミニフィルターは FltXxxコンテキスト 関数を使用して、コンテキスト情報をファイル オブジェクトに関連付けることができます。 完全な一覧については、 FSRTL_PER_FILEOBJECT_CONTEXT トピックを参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
Header | ntifs.h (Fltkernel.h、Ntifs.h を含む) |
こちらもご覧ください
FsRtlInsertPerFileObjectContext