Fonction RtlDeleteElementGenericTable (ntddk.h)
La routine RtlDeleteElementGenericTable supprime un élément d’une table générique.
Syntaxe
NTSYSAPI BOOLEAN RtlDeleteElementGenericTable(
[in] PRTL_GENERIC_TABLE Table,
[in] PVOID Buffer
);
Paramètres
[in] Table
Pointeur vers la table générique (RTL_GENERIC_TABLE). La table doit avoir été initialisée en appelant RtlInitializeGenericTable.
[in] Buffer
Pointeur vers une mémoire tampon allouée à l’appelant contenant une valeur qui identifie de manière unique l’élément à supprimer.
Valeur retournée
RtlDeleteElementGenericTable retourne TRUE si l’élément a été supprimé avec succès, FALSE sinon.
Remarques
RtlDeleteElementGenericTable appelle compareRoutine et FreeRoutine qui ont été inscrits dans l’appel à RtlInitializeGenericTable.
Appelants du Rtl.. Les routines GenericTable 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.
Par défaut, le système d’exploitation utilise des arborescences de lecture pour implémenter des tables génériques. Dans certaines circonstances, les opérations sur un arbre de jeu rendent l’arbre profond et étroit et peut même le transformer en une ligne droite. Les arbres très profonds dégradent les performances des recherches. Vous pouvez garantir une implémentation d’arborescence plus équilibrée et moins profonde des tables génériques à l’aide des arborescences Adelson-Velsky/Landis (AVL). Si vous souhaitez configurer les routines de table génériques 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ériques. Par exemple, utilisez la routine RtlDeleteElementGenericTableAvl au lieu de RtlDeleteElementGenericTable. Dans l’appel à RtlDeleteElementGenericTableAvl, l’appelant doit passer une structure de table RTL_AVL_TABLE plutôt que RTL_GENERIC_TABLE.
Les appelants de RtlDeleteElementGenericTable doivent être en cours d’exécution sur IRQL < DISPATCH_LEVEL si l’une des conditions suivantes est remplie :
- La mémoire allouée à l’appelant au niveau de la table ou de la mémoire tampon est paginable.
- CompareRoutine ou FreeRoutine fourni par l’appelant contient du code paginable.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | ntddk.h (inclure Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Consultez la section Notes. |