次の方法で共有


FltGetUpperInstance 関数 (fltkernel.h)

FltGetUpperInstance ルーチンは、同じボリューム上の特定のミニフィルター ドライバー インスタンスの上にアタッチされている、次の上位のミニフィルター ドライバー インスタンスの不透明なインスタンス ポインターを返します (存在する場合)。

構文

NTSTATUS FLTAPI FltGetUpperInstance(
  [in]  PFLT_INSTANCE CurrentInstance,
  [out] PFLT_INSTANCE *UpperInstance
);

パラメーター

[in] CurrentInstance

次の上位のインスタンスが要求されるインスタンスの不透明なインスタンス ポインター。

[out] UpperInstance

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

戻り値

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

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

注釈

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

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

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

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

要件

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

こちらもご覧ください

FltAttachVolume

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltGetBottomInstance

FltGetLowerInstance

FltGetTopInstance

FltObjectDereference