Función RtlEnumerateGenericTableAvl (ntddk.h)
La rutina RtlEnumerateGenericTableAvl se usa para enumerar los elementos de una tabla genérica.
Sintaxis
NTSYSAPI PVOID RtlEnumerateGenericTableAvl(
[in] PRTL_AVL_TABLE Table,
[in] BOOLEAN Restart
);
Parámetros
[in] Table
Puntero a la tabla genérica (RTL_AVL_TABLE). La tabla debe haberse inicializado llamando a RtlInitializeGenericTableAvl.
[in] Restart
Se establece en TRUE si la enumeración se inicia en el primer elemento de la tabla. Establézcalo en FALSE si reanuda la enumeración desde una llamada anterior.
Para enumerar todos los elementos de la tabla, use RtlEnumerateGenericTableAvl de la siguiente manera:
for (p = RtlEnumerateGenericTableAvl ( Table, TRUE );
p != NULL;
p = RtlEnumerateGenericTableAvl ( Table, FALSE )) {
// Process the element pointed to by p
}
Valor devuelto
RtlEnumerateGenericTableAvl devuelve un puntero al siguiente elemento, si existe uno. Si no hay más elementos en la tabla, RtlEnumerateGenericTableAvl devuelve NULL.
Comentarios
Autores de llamadas de Rtl.. Las rutinas GenericTableAvl son responsables de sincronizar exclusivamente el acceso a la tabla genérica. Una exclusión mutua rápida exclusiva es el mecanismo de sincronización más eficaz que se usará para este propósito.
De forma predeterminada, el sistema operativo usa árboles de reproducción para implementar tablas genéricas, pero la rutina RtlEnumerateGenericTableAvl solo funciona con árboles Adelson-Velsky/Landis (AVL). Para configurar las rutinas de tabla genéricas para usar árboles AVL en lugar de árboles de reproducción en el controlador, inserte la siguiente instrucción define en un archivo de encabezado común antes de incluir Ntddk.h:
#define RTL_USE_AVL_TABLES 0
Si no se define RTL_USE_AVL_TABLES, debe usar el formato AVL de las rutinas de tabla genéricas. Por ejemplo, use la rutina RtlEnumerateGenericTableAvl en lugar de RtlEnumerateGenericTable. En la llamada a RtlEnumerateGenericTableAvl, el autor de la llamada debe pasar una estructura de tabla RTL_AVL_TABLE en lugar de RTL_GENERIC_TABLE.
Los autores de llamadas de RtlEnumerateGenericTableAvl deben ejecutarse en IRQL < DISPATCH_LEVEL si la memoria asignada por el autor de la llamada para la tabla genérica es paginable.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Encabezado | ntddk.h (incluya Ntddk.h, Ntifs.h, Fltkernel.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | IRQL < DISPATCH_LEVEL (consulte la sección Comentarios) |