Funzione RtlLookupFirstMatchingElementGenericTableAvl (ntddk.h)
La routine RtlLookupFirstMatchingElementGenericTableAvl trova l'elemento più a sinistra nell'albero che corrisponde ai dati indicati.
Sintassi
NTSYSAPI PVOID RtlLookupFirstMatchingElementGenericTableAvl(
[in] PRTL_AVL_TABLE Table,
[in] PVOID Buffer,
[out] PVOID *RestartKey
);
Parametri
[in] Table
Puntatore alla tabella Adelson-Velsky/Landis (AVL) generica (RTL_AVL_TABLE).
[in] Buffer
Buffer contenente i dati di ricerca.
[out] RestartKey
Nell'output contiene un contesto di ricerca da usare con una routine di enumerazione, ad esempio RtlEnumerateGenericTableWithoutSplayingAvl.
Valore restituito
La routine RtlLookupFirstMatchingElementGenericTableAvlrestituisce un puntatore ai dati corrispondenti oppure NULL se non è stata trovata alcuna corrispondenza.
Commenti
Un albero che implementa una tabella generica può contenere diversi nomi di file che differiscono solo nel caso. Un algoritmo di ricerca può utilizzare questa routine per individuare la prima corrispondenza, senza riferimento al caso e usare una routine di enumerazione, ad esempio RtlEnumerateGenericTableWithoutSplayingAvl, per restituire ogni corrispondenza successiva.
Per impostazione predefinita, il sistema operativo usa alberi splay per implementare tabelle generiche, ma la routine RtlLookupFirstMatchingElementGenericTableAvlfunziona solo con alberi Adelson-Velsky/Landis (AVL). In alcune circostanze, le operazioni su un albero splay renderanno l'albero profondo e stretto e potrebbe anche trasformarlo in una linea retta. Gli alberi molto profondi riducono le prestazioni delle ricerche. È possibile garantire un'implementazione albero più bilanciata e superficiale di tabelle generiche usando alberi Adelson-Velsky/Landis (AVL). Se si desidera configurare le routine di tabella generiche per l'uso di alberi AVL anziché 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.
I chiamanti di RtlLookupFirstMatchingElementGenericTableAvl devono essere in esecuzione in <= APC_LEVEL se una delle condizioni seguenti contiene:
- La memoria allocata dal chiamante in Table o in Buffer è paging.
- Il chiamante fornito da CompareRoutine contiene codice di paging.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows Vista. |
Piattaforma di destinazione | Universale |
Intestazione | ntddk.h (include FltKernel.h, Ntifs.h, Ntddk.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL (vedere la sezione Osservazioni) |