Funzione RtlEnumerateGenericTableAvl (ntddk.h)
La routine RtlEnumerateGenericTableAvl viene utilizzata per enumerare gli elementi in una tabella generica.
Sintassi
NTSYSAPI PVOID RtlEnumerateGenericTableAvl(
[in] PRTL_AVL_TABLE Table,
[in] BOOLEAN Restart
);
Parametri
[in] Table
Puntatore alla tabella generica (RTL_AVL_TABLE). La tabella deve essere stata inizializzata chiamando RtlInitializeGenericTableAvl.
[in] Restart
Impostare su TRUE se l'enumerazione deve iniziare dal primo elemento della tabella. Impostare su FALSE se si riprende l'enumerazione da una chiamata precedente.
Per enumerare tutti gli elementi nella tabella, usare RtlEnumerateGenericTableAvl come indicato di seguito:
for (p = RtlEnumerateGenericTableAvl ( Table, TRUE );
p != NULL;
p = RtlEnumerateGenericTableAvl ( Table, FALSE )) {
// Process the element pointed to by p
}
Valore restituito
RtlEnumerateGenericTableAvl restituisce un puntatore all'elemento successivo, se presente. Se nella tabella non sono presenti altri elementi, RtlEnumerateGenericTableAvl restituisceNULL.
Commenti
Chiamanti del Rtl.. Le routine GenericTableAvl sono responsabili della sincronizzazione esclusiva dell'accesso alla tabella generica. Un mutex veloce esclusivo è il meccanismo di sincronizzazione più efficiente da usare a questo scopo.
Per impostazione predefinita, il sistema operativo usa alberi splay per implementare tabelle generiche, ma la routine RtlEnumerateGenericTableAvl funziona solo con alberi Adelson-Velsky/Landis (AVL). Per configurare le routine di tabella generiche per l'uso degli alberi AVL anziché degli alberi splay nel driver, inserire l'istruzione define seguente in un file di intestazione comune prima di includere Ntddk.h:
#define RTL_USE_AVL_TABLES 0
Se RTL_USE_AVL_TABLES non è definito, è necessario utilizzare il formato AVL delle routine di tabella generiche. Ad esempio, utilizzare la routine RtlEnumerateGenericTableAvl anziché RtlEnumerateGenericTable. Nella chiamata a RtlEnumerateGenericTableAvl, il chiamante deve passare una struttura di tabella RTL_AVL_TABLE anziché RTL_GENERIC_TABLE.
I chiamanti di RtlEnumerateGenericTableAvl devono essere in esecuzione in IRQL < DISPATCH_LEVEL se la memoria allocata dal chiamante per la tabella generica è paging.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ntddk.h (include Ntddk.h, Ntifs.h, Fltkernel.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | DISPATCH_LEVEL IRQL < (vedere la sezione Osservazioni) |