Función RtlLookupElementGenericTableAvl (ntddk.h)

La rutina RtlLookupElementGenericTableAvl busca en una tabla genérica un elemento que coincida con los datos especificados.

Sintaxis

NTSYSAPI PVOID RtlLookupElementGenericTableAvl(
  [in] PRTL_AVL_TABLE Table,
  [in] PVOID          Buffer
);

Parámetros

[in] Table

Puntero a la tabla genérica Adelson-Velsky/Landis (AVL) (RTL_AVL_TABLE). La tabla debe haberse inicializado llamando a RtlInitializeGenericTableAvl.

[in] Buffer

Búfer de datos de búsqueda que se van a pasar a CompareRoutine que se registró cuando RtlInitializeGenericTableAvl inicializó la tabla genérica. Para obtener más información, vea la descripción de RtlInitializeGenericTableAvl.

Valor devuelto

RtlLookupElementGenericTableAvl devuelve un puntero a los datos de usuario asociados al elemento coincidente de la tabla genérica, o NULL si la tabla genérica no tiene actualmente ningún elemento o si no se encuentra ningún elemento coincidente.

Comentarios

De forma predeterminada, el sistema operativo usa árboles de reproducción para implementar tablas genéricas, pero la rutina RtlLookupElementGenericTableAvl 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 RtlLookupElementGenericTableAvl en lugar de RtlLookupElementGenericTable. En la llamada a RtlLookupElementGenericTableAvl, el autor de la llamada debe pasar una estructura de tabla de RTL_AVL_TABLE en lugar de RTL_GENERIC_TABLE.

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.

Los autores de llamadas de RtlLookupElementGenericTableAvl deben ejecutarse en IRQL < DISPATCH_LEVEL si alguna de las condiciones siguientes contiene:

  • La memoria asignada por el autor de la llamada en Table o at Buffer es paginable.

  • CompareRoutine proporcionado por el autor de la llamada contiene código paginable.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado ntddk.h (incluya Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL IRQL < DISPATCH_LEVEL (consulte la sección Comentarios)

Consulte también

RtlInitializeGenericTableAvl

RtlIsGenericTableEmptyAvl

RtlNumberGenericTableElementsAvl