Compartir a través de


Función FltEnumerateFilterInformation (fltkernel.h)

La rutina FltEnumerateFilterInformation proporciona información sobre todos los controladores de filtro registrados (incluidos los minifiltros y los controladores de filtro heredados) en el sistema.

Sintaxis

NTSTATUS FLTAPI FltEnumerateFilterInformation(
  [in]  ULONG                    Index,
  [in]  FILTER_INFORMATION_CLASS InformationClass,
  [out] PVOID                    Buffer,
  [in]  ULONG                    BufferSize,
  [out] PULONG                   BytesReturned
);

Parámetros

[in] Index

Índice de base cero del controlador de filtro para el que se solicita la información. Este parámetro identifica el filtro en la lista global de controladores de filtro registrados. Si la lista contiene n controladores de filtro, los valores de índice válidos oscilan entre 0 y n-1. Si el valor index supera este intervalo, FltEnumerateFilterInformation devuelve STATUS_NO_MORE_ENTRIES.

[in] InformationClass

Tipo de información solicitada. Este parámetro puede tener uno de los valores siguientes.

Valor Significado
FilterFullInformation El búfer al que apunta el parámetro Buffer recibe una estructura de FILTER_FULL_INFORMATION para el controlador de minifiltro (se omiten los controladores de filtro heredados).
FilterAggregateBasicInformation El búfer al que apunta el parámetro Buffer recibe una estructura de FILTER_AGGREGATE_BASIC_INFORMATION para el minifiltro o el controlador de filtro heredado. Este valor informationClass está disponible a partir de Microsoft Windows Server 2003 SP1 y Windows XP SP2 con el paquete acumulativo del administrador de filtros. Para obtener más información sobre el paquete acumulativo del administrador de filtros para Windows XP SP2, consulte el artículo 914882, "El paquete acumulativo del administrador de filtros para Windows XP SP2", en Microsoft Knowledge Base.
FilterAggregateStandardInformation El búfer al que apunta el parámetro Buffer recibe una estructura de FILTER_AGGREGATE_STANDARD_INFORMATION para el minifiltro o el controlador de filtro heredado. Este valor informationClass está disponible a partir de Windows Vista.

[out] Buffer

Puntero a un búfer asignado por el autor de la llamada que recibe la información solicitada. El tipo de la información devuelta en el búfer se define mediante el parámetro InformationClass .

[in] BufferSize

Tamaño, en bytes, del búfer al que apunta el parámetro Buffer . El autor de la llamada debe establecer este parámetro según el valor informationClass especificado.

[out] BytesReturned

Puntero a una variable asignada por el autor de la llamada que recibe el número de bytes devueltos en el búfer al que apunta el búfer . Si el valor de entrada de BufferSize es demasiado pequeño, FltEnumerateFilterInformation devuelve STATUS_BUFFER_TOO_SMALL y establece esta variable en el número de bytes necesarios para almacenar la información solicitada. Este parámetro es obligatorio y no puede ser NULL.

Valor devuelto

FltEnumerateFilterInformation 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 Buffer no es lo suficientemente grande como para almacenar la información solicitada. Se trata de un código de error.
STATUS_FLT_DELETING_OBJECT
Se encontró un controlador de minifiltro coincidente, pero se está descomponiéndose. Se trata de un código de error.
STATUS_INVALID_PARAMETER
Se especificó un valor no válido para el parámetro InformationClass . Por ejemplo, si Se especifica FilterAggregateStandardInformation en sistemas operativos anteriores a Windows Vista, la rutina devolverá STATUS_INVALID_PARAMETER. Se trata de un código de error.
STATUS_NO_MORE_ENTRIES
No hay más entradas en la lista global de controladores de filtro registrados. (El valor del parámetro Index es mayor o igual que el número de controladores de filtro). Se trata de un código de advertencia.

Comentarios

A partir de Microsoft Windows Server 2003 SP1 y Windows XP SP2 con el paquete acumulativo del administrador de filtros, FltEnumerateFilterInformation proporciona información sobre los controladores de filtro del sistema de archivos (también denominados "filtros heredados") así como los controladores de minifiltro. En versiones anteriores de Windows, FltEnumerateFilterInformation solo proporciona información sobre los controladores de minifiltro.

El siguiente pseudocódigo enumera la información de filtro para todos los controladores de filtro registrados.

#define InfoClass FilterAggregateStandardInformation   // Assumes Windows Vista or later operating system.

int i = 0;
while ( FltEnumerateFilterInformation(i, InfoClass, ...) != STATUS_NO_MORE_ENTRIES )
{
 Process acquired filter driver information returned by the Buffer parameter of FltEnumerateFilterInformation, if applicable.
 i++;
}

FltEnumerateFilterInformation devuelve información sobre los controladores de filtro registrados, a través del parámetro Buffer , para reducir la distancia desde el sistema de archivos subyacente. Por ejemplo, supongamos que hay n controladores de filtro asociados encima de un sistema de archivos subyacente. Primero se devuelve información sobre el controlador de filtro más alejado del sistema de archivos (con un valor de parámetro Index de 0). La información sobre el controlador de filtro adjunto más lejano se devuelve en segundo lugar (con un valor de parámetro Index de 1), etc. Por último, se devuelve información sobre el controlador de filtro más cercano al sistema de archivos (con un valor de parámetro Index de n-1).

Nota Dado que los controladores de filtro se pueden registrar en cualquier momento, es posible que dos llamadas a FltEnumerateFilterInformation con el mismo índice no devuelvan el mismo resultado.
 
Para enumerar todos los controladores de minifiltro registrados, llame a FltEnumerateFilters.

Para enumerar todos los controladores de filtro heredados registrados, llame a IoEnumerateRegisteredFiltersList.

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.

Para enumerar la información del volumen de todos los volúmenes que se conocen en el Administrador de filtros, llame a FltEnumerateVolumeInformation.

Requisitos

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

Consulte también

FILTER_AGGREGATE_BASIC_INFORMATION

FILTER_AGGREGATE_STANDARD_INFORMATION

FILTER_FULL_INFORMATION

FltEnumerateFilters

FltEnumerateInstanceInformationByFilter

FltEnumerateInstanceInformationByVolume

FltEnumerateVolumeInformation

FltGetFilterInformation

IoEnumerateRegisteredFiltersList