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 |
こちらもご覧ください
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示