次の方法で共有


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

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

戻り値

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

注釈

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

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

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

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

このルーチンは、IRP_CLOSE ハンドラー内では使用しないでください。 ストリームが破棄された場合、通知は受け取りません。

要件

要件
サポートされている最小のクライアント Windows Vista
対象プラットフォーム ユニバーサル
Header ntifs.h (FltKernel.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <=APC_LEVEL

こちらもご覧ください

FSRTL_PER_FILE_CONTEXT

FsRtlGetPerFileContextPointer

FsRtlInsertPerFileContext

FsRtlLookupPerFileContext

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