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)

Vedi anche

RtlEnumerateGenericTableWithoutSplayingAvl