Partager via


RtlLookupFirstMatchingElementGenericTableAvl, fonction (ntddk.h)

La routine RtlLookupFirstMatchingElementGenericTableAvl recherche l’élément le plus à gauche dans l’arborescence qui correspond aux données indiquées.

Syntaxe

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

Paramètres

[in] Table

Pointeur vers la table Adelson-Velsky/Landis générique (RTL_AVL_TABLE).

[in] Buffer

Mémoire tampon qui contient les données de recherche.

[out] RestartKey

Dans la sortie, contient un contexte de recherche à utiliser avec une routine d’énumération, telle que RtlEnumerateGenericTableWithoutSplayingAvl.

Valeur de retour

La routine RtlLookupFirstMatchingElementGenericTableAvlretourne un pointeur vers les données correspondantes, ou NULL si aucune correspondance n’a été trouvée.

Remarques

Une arborescence qui implémente une table générique peut contenir plusieurs noms de fichiers qui diffèrent uniquement dans le cas. Un algorithme de recherche peut utiliser cette routine pour localiser la première correspondance, sans référence à la casse et utiliser une routine d’énumération, telle que RtlEnumerateGenericTableWithoutSplayingAvl, pour retourner chaque correspondance suivante.

Par défaut, le système d’exploitation utilise des arborescences de lecture pour implémenter des tables génériques, mais la RtlLookupFirstMatchingElementGenericTableAvlroutine fonctionne uniquement avec les arborescences Adelson-Velsky/Landis (AVL). Dans certaines circonstances, les opérations sur un arbre de jeu rendent l’arbre profond et étroit et peut même le transformer en ligne droite. Des arbres très profonds dégradent les performances des recherches. Vous pouvez garantir une implémentation d’arborescence plus équilibrée et plus superficielle des tables génériques à l’aide d’arbres Adelson-Velsky/Landis (AVL). Si vous souhaitez configurer les routines de table générique pour utiliser des arborescences AVL plutôt que des arborescences de lecture dans votre pilote, insérez l’instruction define suivante dans un fichier d’en-tête commun avant d’inclure Ntddk.h:

#define RTL_USE_AVL_TABLES 0

Si RTL_USE_AVL_TABLES n’est pas défini, vous devez utiliser la forme AVL des routines de table générique.

Les appelants de RtlLookupFirstMatchingElementGenericTableAvl doivent s’exécuter à <= APC_LEVEL si l’une des conditions suivantes contient :

  • La mémoire allouée par l’appelant à table ou à tampon est paginable.
  • CompareRoutine fourni par l’appelant contient du code paginable.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows Vista.
plateforme cible Universel
d’en-tête ntddk.h (include FltKernel.h, Ntifs.h, Ntddk.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL (voir la section Remarques)

Voir aussi

RtlEnumerateGenericTableWithoutSplayingAvl