次の方法で共有


FsRtlRemovePerFileContext 関数 (ntifs.h)

FsRtlRemovePerFileContext ルーチンは、ファイルに関連付けられている FSRTL_PER_FILE_CONTEXT オブジェクトへのポインターを返します。 FsRtlRemovePerFileContext FSRTL_PER_FILE_CONTEXT オブジェクトを、関連付けられているドライバー固有のコンテキスト情報と共に、そのリストから削除します。

構文

PFSRTL_PER_FILE_CONTEXT FsRtlRemovePerFileContext(
  [in]           PVOID *PerFileContextPointer,
  [in, optional] PVOID OwnerId,
  [in, optional] PVOID InstanceId
);

パラメーター

[in] PerFileContextPointer

ファイル コンテキストを追跡するためにファイル システム ランタイム ライブラリ (FSRTL) パッケージによって使用される不透明なポインターへのポインター。 ファイル オブジェクトからこのポインターを取得するには、FsRtlGetPerFileContextPointer マクロを使用します。

[in, optional] OwnerId

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

[in, optional] InstanceId

同じフィルター ドライバーによって作成されるファイルごとのコンテキスト構造を区別するために使用できる、フィルター ドライバーによって割り当てられた変数へのポインター。 このパラメーターは省略可能です。

戻り値

OwnerId と一致する最初の FSRTL_PER_FILE_CONTEXT へのポインター。指定されている場合は、InstanceId。 一致するものが見つからない場合、またはシステムがファイル コンテキスト情報ごとにサポートしていない場合、このルーチンは NULL を返します。

備考

FsRtlRemovePerFileContext 、検出された最初に一致するファイルごとのコンテキスト構造のみが削除されます。 ファイルごとに一致する追加のコンテキストがある場合、フィルター ドライバーは、FsRtlRemovePerFileContext を呼び出す必要があります 必要な回数だけすべて削除します。

ファイル システム フィルター ドライバーは、FSRTL_PER_FILE_CONTEXT が削除された後、このコンテキスト情報に使用されるメモリを解放する必要があります。

ファイルがまだ開いている間にドライバーがファイルごとのコンテキスト情報を破棄する必要がある場合にのみ、ドライバーでコンテキストを削除するには、このルーチンを使用します。 FsRtlTeardownPerFileContexts を使用してファイルを閉じると、コンテキストが削除されます。

このルーチンは、FreeCallback ルーチン内では使用しないでください。 ファイル システムは、そのルーチンが呼び出される前に、リストからコンテキストを削除します。

IRP_CLOSE ハンドラー内でこのルーチンを使用しないでください。 ストリームが切り捨てられたとき、通知は受け取りません。

必要条件

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

関連項目

FSRTL_PER_FILE_CONTEXT

FsRtlGetPerFileContextPointer の

FsRtlInsertPerFileContext

FsRtlLookupPerFileContext の

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