IoEnumerateRegisteredFiltersList-Funktion (ntifs.h)

Die IoEnumerateRegisteredFiltersList-Routine listet die Dateisystemfiltertreiber auf, die beim System registriert sind.

Syntax

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

Parameter

[out] DriverObjectList

Ein Zeiger auf ein vom Aufrufer zugeordnetes Array, das die Treiberobjektzeiger empfängt. Dieser Parameter ist optional und kann NULL sein. (Weitere Informationen finden Sie im folgenden Abschnitt mit den Anmerkungen.)

[in] DriverObjectListSize

Größe des DriverObjectList-Arrays in Byte. Kann Null sein. (Weitere Informationen finden Sie im folgenden Abschnitt mit den Anmerkungen.)

[out] ActualNumberDriverObjects

Tatsächliche Anzahl der gefundenen Treiberobjekte. Beachten Sie, dass die Anzahl der Treiberobjektzeiger, die in das Array kopiert werden, kleiner als ActualNumberDriverObjects ist, wenn das Array bei DriverObjectList zu klein ist.

Rückgabewert

IoEnumerateRegisteredFiltersList kann eine der folgenden Werte zurückgeben:

Rückgabecode Beschreibung
STATUS_SUCCESS Der Aufruf von IoEnumerateRegisteredFiltersList war erfolgreich.
STATUS_BUFFER_TOO_SMALL Das Array bei DriverObjectList ist zu klein, um die gesamte Treiberobjektliste zu enthalten. In diesem Fall kopiert IoEnumerateRegisteredFiltersList so viele Treiberobjektzeiger wie möglich in das Array.

Hinweise

Ein Dateisystemfiltertreiber ruft IoEnumerateRegisteredFiltersList auf, um ein Array von Zeigern auf die Treiberobjekte für alle Dateisystemfiltertreiber abzurufen, die IoRegisterFsRegistrationChange aufgerufen haben.

Die Filtertreiber werden in der Reihenfolge des abnehmenden Abstands vom Basisdateisystem aufgelistet. Das erste Element (Index null) im DriverObjectList-Array stellt den Filter dar, der am weitesten vom Dateisystem entfernt ist. Der zweite Eintrag ist für den nächstfernsten Filter usw. Der letzte Eintrag im Array gilt für den Filter, der dem Basisdateisystem am nächsten ist.

IoEnumerateRegisteredFiltersList listet nur Legacyfiltertreiber auf. Minifilter werden nicht aufgezählt. Rufen Sie FltEnumerateFilterInformation auf, um sowohl Minifilter als auch Ältere Filter oder nur Minifilter aufzulisten.

Der Filtertreiber ruft IoEnumerateRegisteredFiltersList in der Regel zweimal auf: einmal, um die Anzahl der Treiberobjekte in der Liste abzurufen, und einmal, um die Treiberobjektliste selbst abzurufen. Im ersten Aufruf sollte der Aufrufer den DriverObjectList-Parameter auf NULL und DriverObjectListSize auf 0 festlegen. Im zweiten Aufruf sollte DriverObjectList einen Zeiger auf ein Zeigerarray mit entsprechender Größe enthalten, und DriverObjectListSize sollte die Größe dieses Arrays in Bytes enthalten.

IoEnumerateRegisteredFiltersList erhöht die Verweisanzahl für jedes Treiberobjekt in der Liste, auf die driverObjectList verweist. Daher muss jeder erfolgreiche Aufruf von IoEnumerateRegisteredFiltersList durch einen nachfolgenden Aufruf von ObDereferenceObject für jedes Treiberobjekt in der Liste abgeglichen werden. Andernfalls wird verhindert, dass das System diese Treiberobjekte aufgrund einer ausstehenden Verweisanzahl freigibt oder löscht.

Minifilter sollten FltEnumerateFilterInformation oder FltEnumerateFilters anstelle von IoEnumerateRegisteredFiltersList aufrufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Updaterollup für Windows 2000 SP4; Windows Server 2003 SP1
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Weitere Informationen

FltEnumerateFilterInformation

FltEnumerateFilters

IoRegisterFsRegistrationChange

ObDereferenceObject