RtlLookupFirstMatchingElementGenericTableAvl 함수(ntddk.h)

RtlLookupFirstMatchingElementGenericTableAvl 루틴은 트리에서 표시된 데이터와 일치하는 가장 왼쪽 요소를 찾습니다.

구문

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

매개 변수

[in] Table

제네릭 Adelson-Velsky/Landis(AVL) 테이블(RTL_AVL_TABLE)에 대한 포인터입니다.

[in] Buffer

검색 데이터를 포함하는 버퍼입니다.

[out] RestartKey

출력에서 에는 RtlEnumerateGenericTableWithoutSplayingAvl과 같은 열거형 루틴과 함께 사용할 검색 컨텍스트가 포함됩니다.

반환 값

RtlLookupFirstMatchingElementGenericTableAvl루틴은 일치하는 데이터에 대한 포인터를 반환하거나 일치하는 항목이 없으면 NULL을 반환합니다.

설명

제네릭 테이블을 구현하는 트리에는 경우에 따라 다른 여러 파일 이름이 포함될 수 있습니다. 검색 알고리즘은 이 루틴을 사용하여 대/소문자를 참조하지 않고 첫 번째 일치 항목을 찾고 RtlEnumerateGenericTableWithoutSplayingAvl과 같은 열거형 루틴을 사용하여 이후의 각 일치 항목을 반환할 수 있습니다.

기본적으로 운영 체제는 splay 트리를 사용하여 제네릭 테이블을 구현하지만 RtlLookupFirstMatchingElementGenericTableAvl루틴은 Adelson-Velsky/Landis(AVL) 트리에서만 작동합니다. 경우에 따라 플레이 트리에서 작업을 수행하면 트리가 깊고 좁아지고 직선으로 바뀔 수도 있습니다. 매우 깊은 트리는 검색 성능을 저하합니다. AVL(Adelson-Velsky/Landis) 트리를 사용하여 제네릭 테이블의 보다 균형 있고 얕은 트리 구현을 보장할 수 있습니다. 드라이버에서 트리를 표시하지 않고 AVL 트리를 사용하도록 일반 테이블 루틴을 구성하려면 Ntddk.h를 포함하기 전에 공통 헤더 파일에 다음 define 문을 삽입합니다.

#define RTL_USE_AVL_TABLES 0

RTL_USE_AVL_TABLES 정의되지 않은 경우 제네릭 테이블 루틴의 AVL 형식을 사용해야 합니다.

다음 조건 중 하나가 있는 경우 RtlLookupFirstMatchingElementGenericTableAvl 의 호출자는 = APC_LEVEL 실행 <되어야 합니다.

  • 테이블 또는 버퍼에서 호출자가 할당한 메모리는 페이징할 수 있습니다.
  • 호출자가 제공한 CompareRoutine에는 페이징 가능한 코드가 포함되어 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 ntddk.h(FltKernel.h, Ntifs.h, Ntddk.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL(설명 섹션 참조)

추가 정보

RtlEnumerateGenericTableWithoutSplayingAvl