Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die RtlLookupFirstMatchingElementGenericTableAvl Routine findet das linksste Element in der Struktur, die den angegebenen Daten entspricht.
Syntax
NTSYSAPI PVOID RtlLookupFirstMatchingElementGenericTableAvl(
[in] PRTL_AVL_TABLE Table,
[in] PVOID Buffer,
[out] PVOID *RestartKey
);
Parameter
[in] Table
Ein Zeiger auf die generische Adelson-Velsky/Landis (AVL) Tabelle (RTL_AVL_TABLE).
[in] Buffer
Ein Puffer, der die Suchdaten enthält.
[out] RestartKey
Enthält bei der Ausgabe einen Suchkontext, der mit einer Enumerationsroutine verwendet werden soll, z. B. RtlEnumerateGenericTableWithoutSplayingAvl.
Rückgabewert
Die RtlLookupFirstMatchingElementGenericTableAvlRoutine gibt einen Zeiger auf die übereinstimmenden Daten zurück, oder NULL-, wenn keine Übereinstimmung gefunden wurde.
Bemerkungen
Eine Struktur, die eine generische Tabelle implementiert, kann mehrere Dateinamen enthalten, die nur im Fall unterschiedlich sind. Ein Suchalgorithmus kann diese Routine verwenden, um die erste Übereinstimmung ohne Verweis auf die Groß-/Kleinschreibung zu finden und eine Enumerationsroutine wie RtlEnumerateGenericTableWithoutSplayingAvlzu verwenden, um jede nachfolgende Übereinstimmung zurückzugeben.
Standardmäßig verwendet das Betriebssystem Splay-Strukturen, um generische Tabellen zu implementieren, aber die RtlLookupFirstMatchingElementGenericTableAvlRoutine funktioniert nur mit Adelson-Velsky/Landis (AVL)-Strukturen. Unter bestimmten Umständen werden Vorgänge in einem Spielbaum den Baum tief und schmal machen und ihn sogar in eine gerade Linie verwandeln. Sehr tiefe Bäume beeinträchtigen die Leistung von Suchvorgängen. Sie können eine ausgewogenere, flachere Strukturimplementierung generischer Tabellen sicherstellen, indem Sie Adelson-Velsky/Landis (AVL)-Strukturen verwenden. Wenn Sie die generischen Tabellenroutinen so konfigurieren möchten, dass AVL-Strukturen anstelle von Splay-Strukturen in Ihrem Treiber verwendet werden, fügen Sie die folgende Define-Anweisung in eine allgemeine Headerdatei ein, bevor Sie Ntddk.heinschließen:
#define RTL_USE_AVL_TABLES 0
Wenn RTL_USE_AVL_TABLES nicht definiert ist, müssen Sie die AVL-Form der generischen Tabellenroutinen verwenden.
Anrufer von RtlLookupFirstMatchingElementGenericTableAvl müssen unter <= APC_LEVEL ausgeführt werden, wenn eine der folgenden Bedingungen gilt:
- Der vom Aufrufer zugewiesene Speicher in Table oder bei Buffer kann ausgelagert werden.
- Die vom Aufrufer bereitgestellte CompareRoutine enthält ausgelagerten Code.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar ab Windows Vista. |
Zielplattform- | Universal |
Header- | ntddk.h (include FltKernel.h, Ntifs.h, Ntddk.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | <= APC_LEVEL (siehe Abschnitt "Hinweise") |