Leer en inglés

Compartir a través de


Función RtlLookupFirstMatchingElementGenericTableAvl (ntddk.h)

La rutina RtlLookupFirstMatchingElementGenericTableAvl encuentra el elemento más izquierdo del árbol que coincide con los datos indicados.

Sintaxis

NTSYSAPI PVOID RtlLookupFirstMatchingElementGenericTableAvl(
  [in]  PRTL_AVL_TABLE Table,
  [in]  PVOID          Buffer,
  [out] PVOID          *RestartKey
);

Parámetros

[in] Table

Puntero a la tabla genérica Adelson-Velsky/Landis (AVL) (RTL_AVL_TABLE).

[in] Buffer

Búfer que contiene los datos de búsqueda.

[out] RestartKey

En la salida, contiene un contexto de búsqueda que se va a usar con una rutina de enumeración, como RtlEnumerateGenericTableWithoutSplayingAvl.

Valor devuelto

La rutina RtlLookupFirstMatchingElementGenericTableAvldevuelve un puntero a los datos coincidentes o NULL si no se encontró ninguna coincidencia.

Observaciones

Un árbol que implementa una tabla genérica puede contener varios nombres de archivo que solo difieren en el caso. Un algoritmo de búsqueda puede usar esta rutina para buscar la primera coincidencia, sin referencia a mayúsculas y minúsculas, y usar una rutina de enumeración, como RtlEnumerateGenericTableWithoutSplayingAvl, para devolver cada coincidencia posterior.

De forma predeterminada, el sistema operativo usa árboles de reproducción para implementar tablas genéricas, pero la RtlLookupFirstMatchingElementGenericTableAvlrutina solo funciona con árboles Adelson-Velsky/Landis (AVL). En algunas circunstancias, las operaciones en un árbol de reproducción harán que el árbol sea profundo y estrecho e incluso puede convertirlo en una línea recta. Los árboles muy profundos degradan el rendimiento de las búsquedas. Puede garantizar una implementación de árbol más equilibrada y superficial de tablas genéricas mediante árboles Adelson-Velsky/Landis (AVL). Si desea 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 formulario AVL de las rutinas de tabla genéricas.

Los autores de llamadas de RtlLookupFirstMatchingElementGenericTableAvl deben ejecutarse en <= APC_LEVEL si alguna de las condiciones siguientes contiene:

  • La memoria asignada por el autor de la llamada en Table o en buffer es paginable.
  • CompareRoutine proporcionado por el autor de la llamada contiene código paginable.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows Vista.
de la plataforma de destino de Universal
encabezado de ntddk.h (incluya FltKernel.h, Ntifs.h, Ntddk.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL <= APC_LEVEL (consulte la sección Comentarios)

Consulte también

rtlEnumerateGenericTableWithoutSplayingAvl