Función FltEnumerateInstances (fltkernel.h)

La rutina FltEnumerateInstances enumera las instancias del controlador de minifiltro para un determinado controlador o volumen de minifiltro.

Sintaxis

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

Parámetros

[in, optional] Volume

Puntero opaco para el volumen para el que el autor de la llamada quiere enumerar las instancias del controlador de minifiltro. Si es NULL, se enumeran las instancias de todos los volúmenes. Debe ser distinto de NULL si Filter es NULL.

[in, optional] Filter

Puntero de filtro opaco para el controlador de minifiltro cuyas instancias se van a enumerar. Si es NULL, se enumeran las instancias de todos los controladores de minifiltro. Debe ser distinto de NULL si Volume es NULL.

[out] InstanceList

Puntero a un búfer asignado por el autor de la llamada que recibe una matriz de punteros de instancia opacos.

[in] InstanceListSize

Número de punteros de instancia opacos a los que apunta InstanceList .

[out] NumberInstancesReturned

Puntero a una variable asignada por el autor de la llamada que recibe el número de punteros de instancia opacos devueltos en la matriz a la que Apunta InstanceList . Si InstanceListSize es demasiado pequeño, FltEnumerateInstances devuelve STATUS_BUFFER_TOO_SMALL y establece NumberInstancesReturned para que apunte al número de instancias coincidentes encontradas.

Valor devuelto

FltEnumerateInstances devuelve STATUS_SUCCESS o un valor NTSTATUS adecuado, como uno de los siguientes:

Código devuelto Descripción
STATUS_BUFFER_TOO_SMALL
El búfer al que apunta el parámetro InstanceList no es lo suficientemente grande como para almacenar la información solicitada. Se trata de un código de error.
STATUS_INVALID_PARAMETER
El volumen y el filtro no pueden ser NULL. Se trata de un código de error.

Comentarios

Dado que las instancias del controlador de minifiltro de la lista de instancias pueden cambiar en cualquier momento, no se garantiza que dos llamadas a FltEnumerateInstances con los mismos valores volume y Filter devuelvan el mismo resultado.

FltEnumerateInstances agrega una referencia de rundown a cada uno de los punteros de instancia opacos devueltos en la matriz a la que apunta el parámetro InstanceList . Cuando estos punteros ya no son necesarios, el autor de la llamada debe liberarlos llamando a FltObjectDereference en cada uno de ellos. Por lo tanto, cada llamada correcta a FltEnumerateInstances debe coincidir con una llamada posterior a FltObjectDereference para cada puntero de instancia devuelta.

Para enumerar todos los controladores de minifiltro registrados, llame a FltEnumerateFilters.

Para enumerar todos los volúmenes que se conocen en el Administrador de filtros, llame a FltEnumerateVolumes.

Para enumerar la información de filtro de todos los controladores de minifiltro registrados, llame a FltEnumerateFilterInformation.

Para obtener información de filtro para un controlador de minifiltro determinado, llame a FltGetFilterInformation.

Para enumerar todas las instancias de un controlador de minifiltro determinado, llame a FltEnumerateInstanceInformationByFilter.

Para enumerar todas las instancias del controlador de minifiltro en un volumen determinado, llame a FltEnumerateInstanceInformationByVolume.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Fltkernel.h)
Library FltMgr.lib
IRQL <= APC_LEVEL

Consulte también

FltEnumerateFilterInformation

FltEnumerateFilters

FltEnumerateInstanceInformationByFilter

FltEnumerateInstanceInformationByVolume

FltEnumerateVolumes

FltGetFilterInformation

FltObjectDereference