RtlLookupElementGenericTableAvl, fonction (ntddk.h)
La routine RtlLookupElementGenericTableAvl recherche une table générique pour un élément qui correspond aux données spécifiées.
Syntaxe
NTSYSAPI PVOID RtlLookupElementGenericTableAvl(
[in] PRTL_AVL_TABLE Table,
[in] PVOID Buffer
);
Paramètres
[in] Table
Pointeur vers la table Adelson-Velsky/Landis générique (RTL_AVL_TABLE). La table doit avoir été initialisée en appelant RtlInitializeGenericTableAvl.
[in] Buffer
Mémoire tampon des données de recherche à transmettre au CompareRoutine inscrit lors de l'RtlInitializeGenericTableAvl initialisé la table générique. Pour plus d’informations, consultez la description de RtlInitializeGenericTableAvl.
Valeur de retour
RtlLookupElementGenericTableAvl retourne un pointeur vers les données utilisateur associées à l’élément correspondant dans la table générique, ou NULL si la table générique n’a actuellement aucun élément ou si aucun élément correspondant n’est trouvé.
Remarques
Par défaut, le système d’exploitation utilise des arborescences de jeu pour implémenter des tables génériques, mais la RtlLookupElementGenericTableAvl routine fonctionne uniquement avec les arbres Adelson-Velsky/Landis (AVL). Pour configurer les routines de table génériques afin d’utiliser des arborescences AVL au lieu d’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. Par exemple, utilisez la routine RtlLookupElementGenericTableAvl au lieu de RtlLookupElementGenericTable. Dans l’appel à RtlLookupElementGenericTableAvl, l’appelant doit passer une structure de table RTL_AVL_TABLE plutôt que RTL_GENERIC_TABLE.
Appelants du Rtl.. GenericTableAvl routines sont responsables de la synchronisation exclusive de l’accès à la table générique. Un mutex rapide exclusif est le mécanisme de synchronisation le plus efficace à utiliser à cet effet.
Les appelants de RtlLookupElementGenericTableAvl doivent s’exécuter à l'< DISPATCH_LEVEL IRQL si l’une des conditions suivantes est conservée :
La mémoire allouée par l’appelant à table ou à tampon est paginable.
L’appelant CompareRoutine contient du code paginable.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | ntddk.h (include Ntddk.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL < DISPATCH_LEVEL (voir la section Remarques) |