次の方法で共有


FltGetTopInstance 関数 (fltkernel.h)

FltGetTopInstance ルーチンは、特定のボリュームのインスタンス スタックの上部にアタッチされているミニフィルター ドライバー インスタンスの不透明なインスタンス ポインターを返します。

構文

NTSTATUS FLTAPI FltGetTopInstance(
  [in]  PFLT_VOLUME   Volume,
  [out] PFLT_INSTANCE *Instance
);

パラメーター

[in] Volume

ボリュームの不透明なポインター。

[out] Instance

このボリュームの下位インスタンスの不透明なインスタンス ポインターを受け取る呼び出し元によって割り当てられた変数へのポインター。 このパラメーターは必須であり、 NULL にすることはできません。

戻り値

FltGetTopInstance は、次のようなSTATUS_SUCCESSまたは適切な NTSTATUS 値を返します。

リターン コード 説明
STATUS_NO_MORE_ENTRIES
一致するインスタンスが見つかりませんでした。 これは警告コードです。

注釈

インスタンスの高度が同じボリュームにアタッチされている他のすべてのインスタンスよりも高い場合、インスタンスはミニフィルター ドライバー インスタンス スタックの 上部 にあると言われます。 "altitude" という用語は、インスタンスがボリュームのミニフィルター ドライバー インスタンス スタック内で占有する位置を指します。 高度が高いほど、インスタンスはスタック内の基本ファイル システムから離れています。 特定のボリュームの特定の高度にアタッチできるインスタンスは 1 つだけです。

高度は 高度文字列で指定されます。これは、0 から 9 までの 1 つ以上の 10 進数で構成されるカウントされた Unicode 文字列であり、1 つの小数点を含めることができます。 たとえば、"100.123456" と "03333" は有効な高度文字列です。

文字列 "03333" は、"100.123456" より高い高度を表します。 (先頭と末尾のゼロは無視されます)。つまり、高度が "03333" のインスタンスは、高度が "100.123456" のインスタンスよりもベース ファイル システムから離れています。 ただし、この比較は、両方のインスタンスが同じボリュームにアタッチされている場合にのみ意味があります。

FltGetTopInstance は、 Instance パラメーターで返される不透明なインスタンス ポインターにランダウン参照を追加します。 このポインターが不要になった場合、呼び出し元は FltObjectDereference を呼び出して解放する必要があります。 したがって、 FltGetTopInstance の呼び出しが成功するたびに、 FltObjectDereference の後続の呼び出しと一致する必要があります。

要件

要件
対象プラットフォーム ユニバーサル
Header fltkernel.h (Fltkernel.h を含む)
Library FltMgr.lib
[DLL] Fltmgr.sys
IRQL <= APC_LEVEL

こちらもご覧ください

FltAttachVolume

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltGetBottomInstance

FltGetLowerInstance

FltGetUpperInstance

FltObjectDereference