Função RtlLookupFirstMatchingElementGenericTableAvl (ntddk.h)

A rotina RtlLookupFirstMatchingElementGenericTableAvl localiza o elemento mais à esquerda na árvore que corresponde aos dados indicados.

Sintaxe

NTSYSAPI PVOID RtlLookupFirstMatchingElementGenericTableAvl(
  [in]  PRTL_AVL_TABLE Table,
  [in]  PVOID          Buffer,
  [out] PVOID          *RestartKey
);

Parâmetros

[in] Table

Um ponteiro para AVL (tabela AVL) genérica de Digite-Velsky/Landis (RTL_AVL_TABLE).

[in] Buffer

Um buffer que contém os dados de pesquisa.

[out] RestartKey

Na saída, contém um contexto de pesquisa a ser usado com uma rotina de enumeração, como RtlEnumerateGenericTableWithoutSplayingAvl.

Retornar valor

A rotina RtlLookupFirstMatchingElementGenericTableAvlretornará um ponteiro para os dados correspondentes ou NULL se nenhuma correspondência for encontrada.

Comentários

Uma árvore que implementa uma tabela genérica pode conter vários nomes de arquivo que diferem apenas no caso. Um algoritmo de pesquisa pode usar essa rotina para localizar a primeira correspondência, sem referência ao caso, e usar uma rotina de enumeração, como RtlEnumerateGenericTableWithoutSplayingAvl, para retornar cada correspondência subsequente.

Por padrão, o sistema operacional usa árvores de reprodução para implementar tabelas genéricas, mas a rotina RtlLookupFirstMatchingElementGenericTableAvlsó funciona com árvores Debhook-Velsky/Landis (AVL). Em algumas circunstâncias, as operações em uma árvore de reprodução tornarão a árvore profunda e estreita e podem até mesmo transformá-la em uma linha reta. Árvores muito profundas degradam o desempenho das pesquisas. Você pode garantir uma implementação de árvore mais equilibrada e superficial de tabelas genéricas usando árvores Desvelsky/Landis (AVL). Se você quiser configurar as rotinas de tabela genéricas para usar árvores AVL em vez de árvores de reprodução no driver, insira a seguinte instrução define em um arquivo de cabeçalho comum antes de incluir Ntddk.h:

#define RTL_USE_AVL_TABLES 0

Se RTL_USE_AVL_TABLES não estiver definido, você deverá usar a forma AVL das rotinas de tabela genéricas.

Os chamadores de RtlLookupFirstMatchingElementGenericTableAvl devem estar em execução em <= APC_LEVEL se uma das seguintes condições for mantida:

  • A memória alocada pelo chamador em Table ou em Buffer é paginável.
  • A CompareRoutine fornecida pelo chamador contém código paginável.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows Vista.
Plataforma de Destino Universal
Cabeçalho ntddk.h (inclua FltKernel.h, Ntifs.h, Ntddk.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL (consulte a seção Comentários)

Confira também

RtlEnumerateGenericTableWithoutSplayingAvl