Partager via


Fonction IoEnumerateRegisteredFiltersList (ntifs.h)

La routine IoEnumerateRegisteredFiltersList énumère les pilotes de filtre de système de fichiers qui se sont inscrits auprès du système.

Syntaxe

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

Paramètres

[out] DriverObjectList

Pointeur vers un tableau alloué à l’appelant qui reçoit les pointeurs d’objet de pilote. Ce paramètre est facultatif et peut être NULL. (Voir la section Remarques suivante.)

[in] DriverObjectListSize

Taille, en octets, du tableau DriverObjectList . Ne peut pas être égal à zéro. (Voir la section Remarques suivante.)

[out] ActualNumberDriverObjects

Nombre réel d’objets de pilote trouvés. Notez que si le tableau dans DriverObjectList est trop petit, le nombre de pointeurs d’objet pilote copiés dans le tableau est inférieur à ActualNumberDriverObjects.

Valeur retournée

IoEnumerateRegisteredFiltersList peut retourner l’un des éléments suivants :

Code de retour Description
STATUS_SUCCESS L’appel à IoEnumerateRegisteredFiltersList a réussi.
STATUS_BUFFER_TOO_SMALL Le tableau dans DriverObjectList est trop petit pour contenir l’intégralité de la liste des objets de pilote. Dans ce cas, IoEnumerateRegisteredFiltersList copie autant de pointeurs d’objet de pilote que possible dans le tableau.

Remarques

Un pilote de filtre de système de fichiers appelle IoEnumerateRegisteredFiltersList pour obtenir un tableau de pointeurs vers les objets de pilote pour tous les pilotes de filtre de système de fichiers qui ont appelé IoRegisterFsRegistrationChange.

Les pilotes de filtre sont énumérés par ordre décroissant de distance par rapport au système de fichiers de base. Le premier élément (index zéro) dans le tableau DriverObjectList représente le filtre attaché le plus loin du système de fichiers. La deuxième entrée concerne le filtre le plus proche, et ainsi de suite. La dernière entrée du tableau concerne le filtre le plus proche du système de fichiers de base.

IoEnumerateRegisteredFiltersList énumère uniquement les pilotes de filtre hérités ; il n’énumère pas les minifiltres. Pour énumérer à la fois les minifiltres et les filtres hérités, ou uniquement les minifiltres, appelez FltEnumerateFilterInformation.

Le pilote de filtre appelle généralement IoEnumerateRegisteredFiltersList deux fois : une fois pour obtenir le nombre d’objets de pilote dans la liste, et une fois pour obtenir la liste d’objets du pilote elle-même. Dans le premier appel, l’appelant doit définir le paramètre DriverObjectList sur NULL et DriverObjectListSize sur zéro. Dans le deuxième appel, DriverObjectList doit contenir un pointeur vers un tableau de pointeurs de taille appropriée, et DriverObjectListSize doit contenir la taille, en octets, de ce tableau.

IoEnumerateRegisteredFiltersList incrémente le nombre de références sur chaque objet de pilote dans la liste pointée par DriverObjectList. Ainsi, chaque appel réussi à IoEnumerateRegisteredFiltersList doit être mis en correspondance par un appel suivant à ObDereferenceObject pour chaque objet pilote de la liste. Si vous ne le faites pas, le système ne peut pas libérer ou supprimer ces objets de pilote en raison d’un nombre de références en attente.

Les minifilters doivent appeler FltEnumerateFilterInformation ou FltEnumerateFilters au lieu de IoEnumerateRegisteredFiltersList.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Correctif cumulatif pour Windows 2000 SP4 ; Windows Server 2003 SP1
Plateforme cible Universal
En-tête ntifs.h (include Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Voir aussi

FltEnumerateFilterInformation

FltEnumerateFilters

IoRegisterFsRegistrationChange

ObDereferenceObject