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 |