Función IoEnumerateRegisteredFiltersList (ntifs.h)

La rutina IoEnumerateRegisteredFiltersList enumera los controladores de filtro del sistema de archivos que se han registrado en el sistema.

Sintaxis

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

Parámetros

[out] DriverObjectList

Puntero a una matriz asignada por el autor de la llamada que recibe los punteros de objeto del controlador. Este parámetro es opcional y puede ser NULL. (Vea la siguiente sección Comentarios).

[in] DriverObjectListSize

Tamaño, en bytes, de la matriz DriverObjectList . Puede ser cero. (Vea la siguiente sección Comentarios).

[out] ActualNumberDriverObjects

Número real de objetos de controlador encontrados. Tenga en cuenta que si la matriz de DriverObjectList es demasiado pequeña, el número de punteros de objeto de controlador que se copian en la matriz será menor que ActualNumberDriverObjects.

Valor devuelto

IoEnumerateRegisteredFiltersList puede devolver una de las siguientes opciones:

Código devuelto Descripción
STATUS_SUCCESS La llamada a IoEnumerateRegisteredFiltersList se realizó correctamente.
STATUS_BUFFER_TOO_SMALL La matriz de DriverObjectList es demasiado pequeña para contener toda la lista de objetos del controlador. En este caso, IoEnumerateRegisteredFiltersList copia tantos punteros de objeto de controlador en la matriz como sea posible.

Comentarios

Un controlador de filtro del sistema de archivos llama a IoEnumerateRegisteredFiltersList para obtener una matriz de punteros a los objetos de controlador para todos los controladores de filtro del sistema de archivos que han llamado IoRegisterFsRegistrationChange.

Los controladores de filtro se enumeran en orden de disminución de la distancia desde el sistema de archivos base. El primer elemento (índice cero) de la matriz DriverObjectList representa el filtro que se adjunta más lejos del sistema de archivos. La segunda entrada es para el siguiente filtro más lejano, etc. La última entrada de la matriz es para el filtro más cercano al sistema de archivos base.

IoEnumerateRegisteredFiltersList enumera solo controladores de filtro heredados; no enumera minifiltros. Para enumerar los minifiltros y los filtros heredados, o solo minifiltros, llame a FltEnumerateFilterInformation.

El controlador de filtro normalmente llama a IoEnumerateRegisteredFiltersList dos veces: una vez para obtener el número de objetos de controlador de la lista y una vez para obtener la propia lista de objetos de controlador. En la primera llamada, el llamador debe establecer el parámetro DriverObjectList en NULL y DriverObjectListSize en cero. En la segunda llamada, DriverObjectList debe contener un puntero a una matriz de punteros de tamaño adecuado y DriverObjectListSize debe contener el tamaño, en bytes, de esa matriz.

IoEnumerateRegisteredFiltersList incrementa el recuento de referencias en todos los objetos de controlador de la lista a los que apunta DriverObjectList. Por lo tanto, cada llamada correcta a IoEnumerateRegisteredFiltersList debe coincidir con una llamada posterior a ObDereferenceObject para cada objeto de controlador de la lista. Si no lo hace, se impide que el sistema libere o elimine estos objetos de controlador debido a un recuento de referencias pendiente.

Los minifiltros deben llamar a FltEnumerateFilterInformation o FltEnumerateFilters en lugar de IoEnumerateRegisteredFiltersList.

Requisitos

Requisito Value
Cliente mínimo compatible Paquete acumulativo de actualizaciones para Windows 2000 SP4; Windows Server 2003 SP1
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Consulte también

FltEnumerateFilterInformation

FltEnumerateFilters

IoRegisterFsRegistrationChange

ObDereferenceObject