RtlEnumerateGenericTableAvl-Funktion (ntddk.h)
Die RtlEnumerateGenericTableAvl Routine wird zum Aufzählen der Elemente in einer generischen Tabelle verwendet.
Syntax
NTSYSAPI PVOID RtlEnumerateGenericTableAvl(
[in] PRTL_AVL_TABLE Table,
[in] BOOLEAN Restart
);
Parameter
[in] Table
Ein Zeiger auf die generische Tabelle (RTL_AVL_TABLE). Die Tabelle muss durch Aufrufen von RtlInitializeGenericTableAvlinitialisiert worden sein.
[in] Restart
Wird auf TRUE- festgelegt, wenn die Aufzählung beim ersten Element in der Tabelle gestartet werden soll. Wird auf FALSE- festgelegt, wenn die Enumeration aus einem vorherigen Aufruf fortgesetzt wird.
Wenn Sie alle Elemente in der Tabelle aufzählen möchten, verwenden Sie RtlEnumerateGenericTableAvl wie folgt:
for (p = RtlEnumerateGenericTableAvl ( Table, TRUE );
p != NULL;
p = RtlEnumerateGenericTableAvl ( Table, FALSE )) {
// Process the element pointed to by p
}
Rückgabewert
RtlEnumerateGenericTableAvl gibt einen Zeiger auf das nächste Element zurück, sofern vorhanden. Wenn keine weiteren Elemente in der Tabelle vorhanden sind, gibt RtlEnumerateGenericTableAvlNULL-zurück.
Bemerkungen
Anrufer der Rtl.. GenericTableAvl Routinen sind für die ausschließliche Synchronisierung des Zugriffs auf die generische Tabelle verantwortlich. Ein exklusiver schneller Mutex ist der effizienteste Synchronisierungsmechanismus für diesen Zweck.
Standardmäßig verwendet das Betriebssystem Splay-Strukturen, um generische Tabellen zu implementieren, aber die RtlEnumerateGenericTableAvl Routine funktioniert nur mit Adelson-Velsky/Landis (AVL)-Strukturen. Um die generischen Tabellenroutinen für die Verwendung von AVL-Strukturen anstelle von Wiedergabestrukturen in Ihrem Treiber zu konfigurieren, fügen Sie die folgende Define-Anweisung in eine allgemeine Headerdatei ein, bevor Ntddk.heingeschlossen wird:
#define RTL_USE_AVL_TABLES 0
Wenn RTL_USE_AVL_TABLES nicht definiert ist, müssen Sie die AVL-Form der generischen Tabellenroutinen verwenden. Verwenden Sie z. B. die RtlEnumerateGenericTableAvl Routine anstelle RtlEnumerateGenericTable. Im Aufruf von RtlEnumerateGenericTableAvlmuss der Aufrufer eine RTL_AVL_TABLE Tabellenstruktur statt RTL_GENERIC_TABLEübergeben.
Aufrufer von RtlEnumerateGenericTableAvl- müssen bei IRQL-< DISPATCH_LEVEL ausgeführt werden, wenn der vom Aufrufer zugewiesene Speicher für die generische Tabelle seitenfähig ist.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | ntddk.h (include Ntddk.h, Ntifs.h, Fltkernel.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | IRQL-< DISPATCH_LEVEL (siehe Abschnitt "Hinweise") |