次の方法で共有


FltEnumerateFilterInformation 関数 (fltkernel.h)

FltEnumerateFilterInformation ルーチンは、システムに登録されているすべてのフィルター ドライバー (ミニフィルターとレガシ フィルター ドライバーを含む) に関する情報を提供します。

構文

NTSTATUS FLTAPI FltEnumerateFilterInformation(
  [in]  ULONG                    Index,
  [in]  FILTER_INFORMATION_CLASS InformationClass,
  [out] PVOID                    Buffer,
  [in]  ULONG                    BufferSize,
  [out] PULONG                   BytesReturned
);

パラメーター

[in] Index

情報が要求されるフィルター ドライバーの 0 から始まるインデックス。 このパラメーターは、登録済みフィルター ドライバーのグローバル リスト内のフィルターを識別します。 リストに n 個のフィルター ドライバーが含まれている場合、有効な インデックス 値の範囲は 0 から n-1 です。 Index 値がこの範囲を超えると、FltEnumerateFilterInformation はSTATUS_NO_MORE_ENTRIESを返します。

[in] InformationClass

要求された情報の種類。 このパラメーターには、次のいずれかの値を指定できます。

意味
FilterFullInformation Buffer パラメーターが指す バッファー は、ミニフィルター ドライバーの FILTER_FULL_INFORMATION 構造体を受け取ります (レガシ フィルター ドライバーは無視されます)。
FilterAggregateBasicInformation Buffer パラメーターが指す バッファー は、ミニフィルターまたはレガシ フィルター ドライバーの FILTER_AGGREGATE_BASIC_INFORMATION 構造体を受け取ります。 この InformationClass 値は、Microsoft Windows Server 2003 SP1 および Windows XP SP2 とフィルター マネージャーロールアップから使用できます。 Windows XP SP2 のフィルター マネージャー ロールアップ パッケージの詳細については、Microsoft サポート技術情報の「Windows XP SP2 のフィルター マネージャー ロールアップ パッケージ」914882記事を参照してください。
FilterAggregateStandardInformation Buffer パラメーターによって指される バッファー は、ミニフィルターまたはレガシ フィルター ドライバーの FILTER_AGGREGATE_STANDARD_INFORMATION 構造体を受け取ります。 この InformationClass 値は、Windows Vista 以降で使用できます。

[out] Buffer

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

[in] BufferSize

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

[out] BytesReturned

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

戻り値

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

リターン コード 説明
STATUS_BUFFER_TOO_SMALL
Buffer パラメーターが指す バッファー は、要求された情報を格納するのに十分な大きさではありません。 これはエラー コードです。
STATUS_FLT_DELETING_OBJECT
一致するミニフィルター ドライバーが見つかりましたが、取り壊されています。 これはエラー コードです。
STATUS_INVALID_PARAMETER
InformationClass パラメーターに無効な値が指定されました。 たとえば、Windows Vista より前のオペレーティング システムで FilterAggregateStandardInformation が指定されている場合、ルーチンはSTATUS_INVALID_PARAMETERを返します。 これはエラー コードです。
STATUS_NO_MORE_ENTRIES
登録されているフィルター ドライバーのグローバル 一覧には、これ以上のエントリはありません。 ( Index パラメーターの値は、フィルター ドライバーの数以上です)。これは警告コードです。

注釈

フィルター マネージャーのロールアップが適用された Microsoft Windows Server 2003 SP1 および Windows XP SP2 以降、 FltEnumerateFilterInformation は、ファイル システム フィルター ドライバー ("レガシ フィルター" とも呼ばれます) とミニフィルター ドライバーに関する情報を提供します。 以前のバージョンの Windows では、 FltEnumerateFilterInformation はミニフィルター ドライバーに関する情報のみを提供します。

次の擬似コードは、登録されているすべてのフィルター ドライバーのフィルター情報を列挙します。

#define InfoClass FilterAggregateStandardInformation   // Assumes Windows Vista or later operating system.

int i = 0;
while ( FltEnumerateFilterInformation(i, InfoClass, ...) != STATUS_NO_MORE_ENTRIES )
{
 Process acquired filter driver information returned by the Buffer parameter of FltEnumerateFilterInformation, if applicable.
 i++;
}

FltEnumerateFilterInformation は、基になるファイル システムからの距離を減らす順序で、 Buffer パラメーターを使用して、登録済みのフィルター ドライバーに関する情報を返します。 たとえば、基になるファイル システムの上に n 個のフィルター ドライバーがアタッチされているとします。 ファイル システムから最も遠く離れた場所に接続されているフィルター ドライバーに関する情報が最初に返されます ( Index パラメーターの値は 0)。 次にアタッチされているフィルター ドライバーに関する情報は、2 番目に返されます ( Index パラメーターの値は 1) などです。 最後に、ファイル システムに最も近いフィルター ドライバーに関する情報が最後に返されます ( Index パラメーターの値 は n-1)。

メモフィルター ドライバーはいつでも登録できるため、同じインデックスを使用して FltEnumerateFilterInformation を 2 回呼び出しても、同じ結果が返されない可能性があります。
 
登録されているすべてのミニフィルター ドライバーを列挙するには、 FltEnumerateFilters を呼び出します。

登録されているすべてのレガシ フィルター ドライバーを列挙するには、 IoEnumerateRegisteredFiltersList を呼び出します。

特定のミニフィルター ドライバーのすべてのインスタンスを列挙するには、 FltEnumerateInstanceInformationByFilter を呼び出します。

特定のボリューム上のすべてのミニフィルター ドライバー インスタンスを列挙するには、 FltEnumerateInstanceInformationByVolume を呼び出します。

フィルター マネージャーで認識されているすべてのボリュームのボリューム情報を一覧表示するには、 FltEnumerateVolumeInformation を呼び出します。

要件

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

こちらもご覧ください

FILTER_AGGREGATE_BASIC_INFORMATION

FILTER_AGGREGATE_STANDARD_INFORMATION

FILTER_FULL_INFORMATION

FltEnumerateFilters

FltEnumerateInstanceInformationByFilter

FltEnumerateInstanceInformationByVolume

FltEnumerateVolumeInformation

FltGetFilterInformation

IoEnumerateRegisteredFiltersList