次の方法で共有


FsRtlRemovePerFileObjectContext 関数 (ntifs.h)

"レガシ" ファイル システム フィルター ドライバーの場合、FsRtlRemovePerFileObjectContext 関数は、ファイル オブジェクトに以前に関連付けられたファイル オブジェクトごとのコンテキストの一覧から、ファイル オブジェクトごとのコンテキスト情報構造のリンクを解除します。

構文

PFSRTL_PER_FILEOBJECT_CONTEXT FsRtlRemovePerFileObjectContext(
  [in]           PFILE_OBJECT FileObject,
  [in, optional] PVOID        OwnerId,
  [in, optional] PVOID        InstanceId
);

パラメーター

[in] FileObject

コンテキスト情報を削除するファイル オブジェクトへのポインター。

[in, optional] OwnerId

ファイルごとのオブジェクト コンテキスト構造の所有フィルターを一意に識別する呼び出し元によって割り当てられた変数へのポインター。 この変数の形式は、フィルター ドライバー固有です。

[in, optional] InstanceId

呼び出し元によって割り当てられた変数へのポインター。同じフィルター ドライバーによって作成されたファイルごとのオブジェクト コンテキスト構造を区別するために使用できます。 この変数の形式は、フィルター ドライバー固有です。 このパラメーターは省略可能であり、NULLできます。

戻り値

FsRtlRemovePerFileObjectContext リンクを解除し、見つかった最初に一致するファイルオブジェクトごとのコンテキストへのポインターを返します。 一致するものが見つからない場合は、fsRtlRemovePerFileObjectContext NULL を返します。

備考

"レガシ" ファイル システム フィルター ドライバーは、FsRtlRemovePerFileObjectContext を呼び出して、ファイル オブジェクトに関連付けられているファイル オブジェクトごとのコンテキストの一覧から独自のファイル オブジェクトごとのコンテキスト構造のリンクを解除します。 このようなコンテキスト構造はすべて、FsRtlInsertPerFileObjectContext呼び出すことによって、以前にファイル オブジェクトに関連付けられている必要があります。

FsRtlRemovePerFileObjectContext の呼び出しが成功した場合、OwnerId (および存在する場合は InstanceId) 一致する最初のファイルごとのオブジェクトごとのコンテキスト構造はリンク解除され、そのオブジェクトへのポインターが返されます。 このポインターは、リンクされていないコンテキスト構造を解放するためにフィルター ドライバーによって使用できます。

FsRtlRemovePerFileObjectContext注意 、見つかった最初に一致するファイルごとのオブジェクトごとのコンテキスト構造のリンクを解除します。 ファイル オブジェクトごとのコンテキストに一致する追加のコンテキストがある場合、フィルター ドライバーは FsRtlRemovePerFileObjectContext 呼び出す必要があります 必要な回数だけ、それらのすべてのリンクを解除します。
 
ファイルごとのオブジェクト コンテキスト構造を初期化するには、FsRtlInitPerFileObjectContext マクロを使用します。

ファイル オブジェクトごとの初期化されたコンテキスト構造をファイル オブジェクトに関連付けるには、fsRtlInsertPerFileObjectContext 関数 使用します。

ファイル オブジェクトに関連付けられているファイル オブジェクトごとのコンテキスト構造を取得するには、FsRtlLookupPerFileObjectContext 関数を使用します。

レガシ フィルター ドライバーFsRtlRemovePerFileObjectContext 関数を呼び出して、IRP_MJ_CLOSEが完了する前にコンテキスト情報構造のリンクを解除して解放する必要があります。 そうしないと、そのコンテキスト構造に割り当てられたメモリがリークされます。
 
さらに、ファイル システム ミニフィルター ドライバーは、FsRtlXxxPerFileObjectContext 関数を使用しないでください。 代わりに、適切な FltXxxコンテキスト 関数を使用できます。 詳細については、FSRTL_PER_FILEOBJECT_CONTEXT トピックを参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Fltkernel.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

関連項目

FSRTL_PER_FILEOBJECT_CONTEXT

FsRtlInitPerFileObjectContext

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext