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) |