次の方法で共有


FltEnumerateInstanceInformationByDeviceObject 関数 (fltkernel.h)

FltEnumerateInstanceInformationByDeviceObject ルーチンは、ミニフィルター ドライバー インスタンスと、指定されたデバイス オブジェクトに関連するボリュームにアタッチされているレガシ フィルター ドライバーに関する情報を提供します。

構文

NTSTATUS FLTAPI FltEnumerateInstanceInformationByDeviceObject(
  [in]  PDEVICE_OBJECT             DeviceObject,
  [in]  ULONG                      Index,
  [in]  INSTANCE_INFORMATION_CLASS InformationClass,
  [out] PVOID                      Buffer,
  [in]  ULONG                      BufferSize,
  [out] PULONG                     BytesReturned
);

パラメーター

[in] DeviceObject

関連するファイル オブジェクトまたはボリュームのデバイス オブジェクト。

[in] Index

情報が要求されるミニフィルター ドライバー インスタンスまたはレガシ フィルター ドライバーの 0 から始まるインデックス。

[in] InformationClass

ミニフィルター ドライバー インスタンスまたはレガシ フィルター ドライバーに対して返される情報の種類。 このパラメーターには、次のいずれかの値を指定できます。

意味
InstanceBasicInformation Buffer パラメーターが指す バッファー は、ミニフィルター インスタンスの INSTANCE_BASIC_INFORMATION 構造体を受け取ります。 レガシ フィルター ドライバーは無視されます。
InstanceFullInformation Buffer パラメーターが指す バッファー は、ミニフィルター インスタンスの INSTANCE_FULL_INFORMATION 構造体を受け取ります。 レガシ フィルター ドライバーは無視されます。
InstancePartialInformation Buffer パラメーターが指す バッファー は、ミニフィルター インスタンスの INSTANCE_PARTIAL_INFORMATION 構造体を受け取ります。 レガシ フィルター ドライバーは無視されます。
InstanceAggregateStandardInformation Buffer パラメーターが指す バッファー は、ミニフィルター ドライバー インスタンスまたはレガシ フィルター ドライバーの INSTANCE_AGGREGATE_STANDARD_INFORMATION 構造体を受け取ります。

[out] Buffer

要求された情報を受信する呼び出し元によって割り当てられたバッファーへのポインター。 バッファーで返される情報の型は、 InformationClass パラメーターによって定義されます。

[in] BufferSize

Buffer パラメーターが指すバッファーのサイズ (バイト単位)。 呼び出し元は、指定された InformationClass 値に従ってこのパラメーターを設定する必要があります。

[out] BytesReturned

Buffer が指すバッファーで返されるバイト数を受け取る呼び出し元によって割り当てられた変数へのポインター。 BufferSize の入力値が小さすぎる場合、FltEnumerateInstanceInformationByDeviceObjectSTATUS_BUFFER_TOO_SMALLを返し、この変数を要求された情報の格納に必要なバイト数に設定します。 このパラメーターは必須であり、 NULL にすることはできません。

戻り値

FltEnumerateInstanceInformationByDeviceObject は、 次のいずれかのSTATUS_SUCCESS または適切な NTSTATUS 値を返します。

リターン コード 説明
STATUS_BUFFER_TOO_SMALL
Buffer パラメーターが指すバッファーは、要求された情報を格納するのに十分な大きさではありません。
STATUS_FLT_DELETING_OBJECT
一致するミニフィルター インスタンスが見つかりましたが、破棄されています。 レガシ フィルター ドライバーをアンロードできないため、この戻り値はレガシ フィルター ドライバーには適用されないことに注意してください。
STATUS_INVALID_PARAMETER
InformationClass パラメーターに無効な値が指定されました。
STATUS_NO_MORE_ENTRIES
ボリュームのインスタンス/フィルターリストにエントリはこれ以上ありません。
STATUS_FLT_VOLUME_NOT_FOUND
DeviceObject に関連するボリュームが見つかりませんでした。
STATUS_FLT_INTERNAL_ERROR
DeviceObject が有効なボリューム デバイス オブジェクトではありません。

または

DeviceObject に関連するボリュームは登録されましたが、フィルター インスタンスはアタッチされていません。

注釈

Index パラメーターの使用は、FltEnumerateInstanceInformationByDeviceObjectDeviceObject に関連するボリュームのインスタンス/フィルター リスト内のミニフィルター ドライバー インスタンスとレガシ フィルター ドライバーの中から選択する方法です。 インスタンス/フィルター リスト内のミニフィルター ドライバー インスタンスはいつでも変更できるため、同じ Index 値と DeviceObject 値を持つ FltEnumerateInstanceInformationByDeviceObject に対する 2 回の呼び出しは、同じ結果を返す保証はありません。

InformationClass パラメーターの値が InstanceAggregateStandardInformation の場合、このルーチンはレガシ フィルター ドライバー情報とミニフィルター ドライバー インスタンス情報の両方を返します。

要件

要件
サポートされている最小のクライアント Windows 8以降で使用できます。
対象プラットフォーム ユニバーサル
Header fltkernel.h (Fltkernel.h を含む)
Library FltMgr.lib
IRQL <= APC_LEVEL

こちらもご覧ください

FltEnumerateInstanceInformationByFilter

FltEnumerateInstanceInformationByVolume

FltEnumerateInstanceInformationByVolumeName