Fonction RtlEnumerateGenericTableAvl (ntddk.h)
La routine RtlEnumerateGenericTableAvl est utilisée pour énumérer les éléments d’une table générique.
Syntaxe
NTSYSAPI PVOID RtlEnumerateGenericTableAvl(
[in] PRTL_AVL_TABLE Table,
[in] BOOLEAN Restart
);
Paramètres
[in] Table
Pointeur vers la table générique (RTL_AVL_TABLE). La table doit avoir été initialisée en appelant RtlInitializeGenericTableAvl.
[in] Restart
Définissez sur TRUE si l’énumération doit commencer au premier élément de la table. Définissez sur FALSE si vous reprenez l’énumération à partir d’un appel précédent.
Pour énumérer tous les éléments de la table, utilisez RtlEnumerateGenericTableAvl comme suit :
for (p = RtlEnumerateGenericTableAvl ( Table, TRUE );
p != NULL;
p = RtlEnumerateGenericTableAvl ( Table, FALSE )) {
// Process the element pointed to by p
}
Valeur retournée
RtlEnumerateGenericTableAvl retourne un pointeur vers l’élément suivant, le cas échéant. S’il n’y a plus d’éléments dans la table, RtlEnumerateGenericTableAvl retourne NULL.
Remarques
Les appelants du Rtl.. Les routines GenericTableAvl sont chargées de synchroniser exclusivement l’accès à la table générique. Un mutex rapide exclusif est le mécanisme de synchronisation le plus efficace à utiliser à cet effet.
Par défaut, le système d’exploitation utilise des arborescences de lecture pour implémenter des tables génériques, mais la routine RtlEnumerateGenericTableAvl fonctionne uniquement avec les arborescences Adelson-Velsky/Landis (AVL). Pour configurer les routines de table génériques pour 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ériques. Par exemple, utilisez la routine RtlEnumerateGenericTableAvl au lieu de RtlEnumerateGenericTable. Dans l’appel à RtlEnumerateGenericTableAvl, l’appelant doit passer une structure de table RTL_AVL_TABLE plutôt qu’RTL_GENERIC_TABLE.
Les appelants de RtlEnumerateGenericTableAvl doivent être en cours d’exécution sur IRQL < DISPATCH_LEVEL si la mémoire allouée à l’appelant pour la table générique est paginable.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | ntddk.h (inclure Ntddk.h, Ntifs.h, Fltkernel.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | DISPATCH_LEVEL IRQL < (voir la section Notes) |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour