次の方法で共有


IoEnumerateRegisteredFiltersList 関数 (ntifs.h)

IoEnumerateRegisteredFiltersList ルーチンは、システムに登録されているファイル システム フィルター ドライバーを列挙します。

構文

NTSTATUS IoEnumerateRegisteredFiltersList(
  [out] PDRIVER_OBJECT *DriverObjectList,
  [in]  ULONG          DriverObjectListSize,
  [out] PULONG         ActualNumberDriverObjects
);

パラメーター

[out] DriverObjectList

ドライバー オブジェクト ポインターを受け取る呼び出し元によって割り当てられた配列へのポインター。 このパラメーターは省略可能であり、 NULL にすることができます。 (次の「備考」セクションを参照してください。

[in] DriverObjectListSize

DriverObjectList 配列のサイズ (バイト単位)。 0 を指定できます。 (次の「備考」セクションを参照してください。

[out] ActualNumberDriverObjects

検出されたドライバー オブジェクトの実際の数。 DriverObjectList の配列が小さすぎると、配列にコピーされるドライバー オブジェクト ポインターの数が ActualNumberDriverObjects よりも少なくなります。

戻り値

IoEnumerateRegisteredFiltersList は、次のいずれかを返すことができます。

リターン コード 説明
STATUS_SUCCESS IoEnumerateRegisteredFiltersList の呼び出しが成功しました。
STATUS_BUFFER_TOO_SMALL DriverObjectList の配列が小さすぎて、ドライバー オブジェクトの一覧全体を保持できません。 この場合、 IoEnumerateRegisteredFiltersList は、できるだけ多くのドライバー オブジェクト ポインターを配列にコピーします。

注釈

ファイル システム フィルター ドライバーは IoEnumerateRegisteredFiltersList を呼び出して、 IoRegisterFsRegistrationChange を呼び出したすべてのファイル システム フィルター ドライバーのドライバー オブジェクトへのポインターの配列を取得します。

フィルター ドライバーは、基本ファイル システムからの距離を減らす順序で列挙されます。 DriverObjectList 配列の最初の要素 (インデックス 0) は、ファイル システムから最も遠いフィルターを表します。 2 番目のエントリは、次に最も遠いフィルター用です。などです。 配列の最後のエントリは、基本ファイル システムに最も近いフィルター用です。

IoEnumerateRegisteredFiltersList は、レガシ フィルター ドライバーのみを列挙します。ミニフィルターは列挙されません。 ミニフィルターとレガシ フィルターの両方、またはミニフィルターのみを列挙するには、 FltEnumerateFilterInformation を呼び出します。

フィルター ドライバーは通常 、IoEnumerateRegisteredFiltersList を 2 回呼び出します。1 回はリスト内のドライバー オブジェクトの数を取得し、1 回はドライバー オブジェクト リスト自体を取得します。 最初の呼び出しでは、呼び出し元 は DriverObjectList パラメーターを NULL に、 DriverObjectListSize を 0 に設定する必要があります。 2 番目の呼び出しでは、 DriverObjectList には適切なサイズのポインター配列へのポインターが含まれている必要があり、 DriverObjectListSize にはその配列のサイズ (バイト単位) が含まれている必要があります。

IoEnumerateRegisteredFiltersList は、 DriverObjectList が指すリスト内のすべてのドライバー オブジェクトの参照カウントをインクリメントします。 したがって、 IoEnumerateRegisteredFiltersList への正常な呼び出しはすべて、リスト内の各ドライバー オブジェクトに対する ObDereferenceObject の後続の呼び出しと一致する必要があります。 これを行わないと、未処理の参照カウントのために、システムがこれらのドライバー オブジェクトを解放または削除できなくなります。

ミニフィルターでは、IoEnumerateRegisteredFiltersList の代わりに FltEnumerateFilterInformation または FltEnumerateFilters を呼び出す必要があります。

要件

要件
サポートされている最小のクライアント Windows 2000 SP4 の更新プログラムのロールアップ。Windows Server 2003 SP1
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL

こちらもご覧ください

FltEnumerateFilterInformation

FltEnumerateFilters

IoRegisterFsRegistrationChange

ObDereferenceObject