Fonction FltEnumerateInstances (fltkernel.h)

La routine FltEnumerateInstances énumère les instances de pilote minifilter pour un pilote ou un volume minifilter donné.

Syntaxe

NTSTATUS FLTAPI FltEnumerateInstances(
  [in, optional] PFLT_VOLUME   Volume,
  [in, optional] PFLT_FILTER   Filter,
  [out]          PFLT_INSTANCE *InstanceList,
  [in]           ULONG         InstanceListSize,
  [out]          PULONG        NumberInstancesReturned
);

Paramètres

[in, optional] Volume

Pointeur opaque pour le volume pour lequel l’appelant souhaite énumérer les instances de pilote minifilter. Si la valeur est NULL, les instances de tous les volumes sont énumérées. Doit être non NULL si Filter a la valeur NULL.

[in, optional] Filter

Pointeur de filtre opaque pour le pilote minifilter dont les instances doivent être énumérées. Si la valeur est NULL, les instances de tous les pilotes minifilter sont énumérées. Doit être non NULL si Volume a la valeur NULL.

[out] InstanceList

Pointeur vers une mémoire tampon allouée à l’appelant qui reçoit un tableau de pointeurs instance opaques.

[in] InstanceListSize

Nombre de pointeurs de instance opaques que la mémoire tampon vers laquelle Pointe InstanceList peut contenir.

[out] NumberInstancesReturned

Pointeur vers une variable allouée à l’appelant qui reçoit le nombre de pointeurs opaques instance retournés dans le tableau vers lequel Pointe InstanceList. Si InstanceListSize est trop petit, FltEnumerateInstances retourne STATUS_BUFFER_TOO_SMALL et définit NumberInstancesReturned pour qu’il pointe vers le nombre d’instances correspondantes trouvées.

Valeur retournée

FltEnumerateInstances retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée, telle que l’une des valeurs suivantes :

Code de retour Description
STATUS_BUFFER_TOO_SMALL
La mémoire tampon vers laquelle pointe le paramètre InstanceList n’est pas suffisamment grande pour stocker les informations demandées. Il s’agit d’un code d’erreur.
STATUS_INVALID_PARAMETER
Volume et Filtre ne peuvent pas tous les deux avoir la valeur NULL. Il s’agit d’un code d’erreur.

Remarques

Étant donné que les instances de pilote minifilter dans la liste instance peuvent changer à tout moment, deux appels à FltEnumerateInstances avec les mêmes valeurs Volume et Filter ne sont pas garantis pour retourner le même résultat.

FltEnumerateInstances ajoute une référence d’exécution à chacun des pointeurs de instance opaques retournés dans le tableau vers lequel pointe le paramètre InstanceList. Lorsque ces pointeurs ne sont plus nécessaires, l’appelant doit les libérer en appelant FltObjectDereference sur chacun d’eux. Ainsi, chaque appel réussi à FltEnumerateInstances doit être mis en correspondance par un appel ultérieur à FltObjectDereference pour chaque pointeur instance retourné.

Pour énumérer tous les pilotes minifilter inscrits, appelez FltEnumerateFilters.

Pour énumérer tous les volumes connus du Gestionnaire de filtres, appelez FltEnumerateVolumes.

Pour répertorier les informations de filtre pour tous les pilotes minifilter inscrits, appelez FltEnumerateFilterInformation.

Pour obtenir des informations de filtre pour un pilote minifilter donné, appelez FltGetFilterInformation.

Pour énumérer toutes les instances d’un pilote minifilter donné, appelez FltEnumerateInstanceInformationByFilter.

Pour énumérer toutes les instances de pilote minifilter sur un volume donné, appelez FltEnumerateInstanceInformationByVolume.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête fltkernel.h (inclure Fltkernel.h)
Bibliothèque FltMgr.lib
IRQL <= APC_LEVEL

Voir aussi

FltEnumerateFilterInformation

FltEnumerateFilters

FltEnumerateInstanceInformationByFilter

FltEnumerateInstanceInformationByVolume

FltEnumerateVolumes

FltGetFilterInformation

FltObjectDereference