Funzione IoEnumerateRegisteredFiltersList (ntifs.h)

La routine IoEnumerateRegisteredFiltersList enumera i driver di filtro del file system registrati nel sistema.

Sintassi

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

Parametri

[out] DriverObjectList

Puntatore a una matrice allocata dal chiamante che riceve i puntatori a oggetti driver. Questo parametro è facoltativo e può essere NULL. Vedere la sezione Osservazioni seguente.

[in] DriverObjectListSize

Dimensioni, in byte, della matrice DriverObjectList . Può essere pari a zero. Vedere la sezione Osservazioni seguente.

[out] ActualNumberDriverObjects

Numero effettivo di oggetti driver trovati. Si noti che se la matrice in DriverObjectList è troppo piccola, il numero di puntatori a oggetti driver copiati nella matrice sarà minore di ActualNumberDriverObjects.

Valore restituito

IoEnumerateRegisteredFiltersList può restituire uno dei seguenti elementi:

Codice restituito Descrizione
STATUS_SUCCESS La chiamata a IoEnumerateRegisteredFiltersList ha avuto esito positivo.
STATUS_BUFFER_TOO_SMALL La matrice in DriverObjectList è troppo piccola per contenere l'intero elenco di oggetti driver. In questo caso , IoEnumerateRegisteredFiltersList copia il maggior numero possibile di puntatori a oggetti driver nella matrice.

Commenti

Un driver di filtro del file system chiama IoEnumerateRegisteredFiltersList per ottenere una matrice di puntatori agli oggetti driver per tutti i driver di filtro del file system che hanno chiamato IoRegisterFsRegistrationChange.

I driver di filtro vengono enumerati in ordine di distanza decrescente dal file system di base. Il primo elemento (indice zero) nella matrice DriverObjectList rappresenta il filtro associato più lontano dal file system. La seconda voce è per il filtro più lontano successivo e così via. L'ultima voce nella matrice è relativa al filtro più vicino al file system di base.

IoEnumerateRegisteredFiltersList enumera solo i driver di filtro legacy; non enumera i minifiltri. Per enumerare sia minifilter che filtri legacy o solo minifiltri, chiamare FltEnumerateFilterInformation.

Il driver di filtro chiama in genere IoEnumerateRegisteredFiltersList due volte: una volta per ottenere il numero di oggetti driver nell'elenco e una volta per ottenere l'elenco di oggetti driver stesso. Nella prima chiamata, il chiamante deve impostare il parametro DriverObjectList su NULL e DriverObjectListSize su zero. Nella seconda chiamata DriverObjectList deve contenere un puntatore a una matrice di puntatori di dimensioni appropriate e DriverObjectListSize deve contenere le dimensioni, in byte, di tale matrice.

IoEnumerateRegisteredFiltersList incrementa il conteggio dei riferimenti per ogni oggetto driver nell'elenco a cui punta DriverObjectList. Ogni chiamata a IoEnumerateRegisteredFiltersList deve quindi corrispondere a ogni chiamata successiva a ObDereferenceObject per ogni oggetto driver nell'elenco. In caso contrario, il sistema non può liberare o eliminare questi oggetti driver a causa di un conteggio dei riferimenti in sospeso.

I minifiltri devono chiamare FltEnumerateFilterInformation o FltEnumerateFilters anziché IoEnumerateRegisteredFiltersList.

Requisiti

Requisito Valore
Client minimo supportato Aggiornamento cumulativo per Windows 2000 SP4; Windows Server 2003 SP1
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Vedi anche

FltEnumerateFilterInformation

FltEnumerateFilters

IoRegisterFsRegistrationChange

ObDereferenceObject