FltGetVolumeInstanceFromName 関数 (fltkernel.h)
FltGetVolumeInstanceFromName ルーチンは、指定されたボリューム上の特定のミニフィルター ドライバー インスタンスの不透明なインスタンス ポインターを返します。
構文
NTSTATUS FLTAPI FltGetVolumeInstanceFromName(
[in, optional] PFLT_FILTER Filter,
[in] PFLT_VOLUME Volume,
[in, optional] PCUNICODE_STRING InstanceName,
[out] PFLT_INSTANCE *RetInstance
);
パラメーター
[in, optional] Filter
インスタンスを所有するミニフィルター ドライバーの不透明なフィルター ポインター。 このパラメーターは省略可能であり、 NULL にすることができます。
[in] Volume
インスタンスがアタッチされているボリュームの不透明なポインター。 有効なボリューム ハンドルである必要があります。 このパラメーターは必須であり、 NULL にすることはできません。 (このパラメーターを無効な値に設定すると、システムはチェックされたビルドで ASSERT を実行します)。
[in, optional] InstanceName
ボリューム上のインスタンスのインスタンス名 を 含む呼び出し元によって割り当てられたUNICODE_STRING構造体へのポインター。 (これは、インスタンスの作成時に FltAttachVolume または FltAttachVolumeAtAltitude に渡された InstanceName 値です)。このパラメーターは省略可能であり、NULL にすることができます。 NULL の場合、FltGetVolumeInstanceFromName は、検出された一致する最も高いインスタンスを返します。
[out] RetInstance
Filter、Volume、および InstanceName の値に一致するインスタンスの不透明なインスタンス ポインターを受け取る呼び出し元によって割り当てられた変数へのポインター。 このパラメーターは必須であり、 NULL にすることはできません。
戻り値
FltGetVolumeInstanceFromName は、次のいずれかのSTATUS_SUCCESSまたは適切な NTSTATUS 値を返します。
リターン コード | 説明 |
---|---|
|
インスタンスが破棄されています。 これはエラー コードです。 |
|
一致するインスタンスが見つかりませんでした。 これはエラー コードです。 |
注釈
FltGetVolumeInstanceFromName は、 Volume パラメーターで 指定されたボリュームにアタッチされているミニフィルター ドライバー インスタンスの一覧を、一番上のインスタンスから始まる高度の低下順に検索します。 Filter、Volume、および InstanceName パラメーターの指定された値に複数のインスタンスが一致する場合、FltGetVolumeInstanceFromName は、検出された一致する最も高いインスタンスを返します。
"高度" という用語は、ボリュームのミニフィルター ドライバー インスタンス スタック内でインスタンスが占有する (または占有する必要がある) 位置を指します。 高度が高いほど、インスタンスはスタック内の基本ファイル システムから遠くなります。 特定のボリュームの特定の高度にアタッチできるインスタンスは 1 つだけです。
高度は 高度文字列で指定されます。これは、0 から 9 までの 1 つ以上の 10 進数字で構成されるカウントされた Unicode 文字列であり、1 つの小数点を含めることができます。 たとえば、"100.123456" と "03333" は有効な高度文字列です。
文字列 "03333" は、"100.123456" より高い高度を表します。 (先頭と末尾のゼロは無視されます)。つまり、高度が "03333" のインスタンスは、高度が "100.123456" のインスタンスよりもベース ファイル システムから遠くなります。 ただし、この比較は、両方のインスタンスが同じボリュームにアタッチされている場合にのみ意味があります。
FltGetVolumeInstanceFromName は、 RetInstance パラメーターで返される不透明なインスタンス ポインターにランダウン参照を追加します。 このポインターが不要になった場合、呼び出し元は FltObjectDereference を呼び出してポインターを解放する必要があります。 したがって、 FltGetVolumeInstanceFromName を正常に呼び出すたびに、 後続の FltObjectDereference の呼び出しと一致する必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | fltkernel.h (Fltkernel.h を含む) |
Library | FltMgr.lib |
[DLL] | Fltmgr.sys |
IRQL | <= APC_LEVEL |