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) |