Partager via


RtlLookupElementGenericTableFullAvl, fonction (ntddk.h)

La routine RtlLookupElementGenericTableFullAvl recherche une table générique pour un élément qui correspond aux données spécifiées.

Syntaxe

NTSYSAPI PVOID RtlLookupElementGenericTableFullAvl(
  [in]  PRTL_AVL_TABLE      Table,
  [in]  PVOID               Buffer,
  [out] PVOID               *NodeOrParent,
  [out] TABLE_SEARCH_RESULT *SearchResult
);

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.

[out] NodeOrParent

Lors de la sortie, une valeur qui décrit la relation du NodeOrParent avec l’entrée de table (nœud) RtlLookupElementGenericTableFullAvl recherche. Le paramètre SearchResult peut avoir l’une des valeurs suivantes :

TableEmptyTree

L’arborescence était vide. Le contenu de NodeOrParent n’a pas été modifié.

TableFoundNode

La routine RtlLookupElementGenericTableFullAvl a trouvé une entrée de table dont la clé correspond aux données dans Tampon. NodeOrParent contient un pointeur vers l’entrée correspondante.

TableInsertAsLeft

La routine RtlLookupElementGenericTableFullAvl n’a pastrouver une entrée de table dont la clé correspond aux données dans Tampon. Je n'pasf l’entrée RtlLookupElementGenericTableFullAvl recherchée dans la table, il s’agit de l’enfant gauche de l’entrée vers laquelle NodeOrParent pointe.

TableInsertAsRight

La routine RtlLookupElementGenericTableFullAvl n’a pastrouver une entrée de table dont la clé correspond aux données dans Tampon. Si l’entrée RtlLookupElementGenericTableFullAvl recherchée dans la table, il s’agit de l’enfant approprié de l’entrée vers laquelle NodeOrParent pointe.

[out] SearchResult

Pointeur vers une entrée de table. Si la routine RtlLookupElementGenericTableFullAvl correspond à une entrée, NodeOrParentpointe vers l’entrée correspondante. Si la routine RtlLookupElementGenericTableFullAvl ne parvient pas à trouver une correspondance, NodeOrParent pointe vers l’entrée qui serait le parent de l’entrée que RtlLookupElementGenericTableFullAvl routine était à rechercher.

Valeur de retour

RtlLookupElementGenericTableFullAvl 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 lecture pour implémenter des tables génériques, mais la RtlLookupElementGenericTableFullAvl routine fonctionne uniquement avec les arborescences 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 RtlLookupElementGenericTableFullAvl au lieu de RtlLookupElementGenericTable. Dans l’appel à RtlLookupElementGenericTableFullAvl, 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 RtlLookupElementGenericTableFullAvl 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
client minimum pris en charge Disponible à partir de Windows XP.
plateforme cible Universel
d’en-tête ntddk.h (include Ntddk.h, Ntifs.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL (voir la section Remarques)

Voir aussi

RtlInitializeGenericTableAvl

RtlIsGenericTableEmptyAvl

RtlNumberGenericTableElementsAvl