RtlLookupElementGenericTableAvl 함수(ntddk.h)

RtlLookupElementGenericTableAvl 루틴은 지정된 데이터와 일치하는 요소에 대한 제네릭 테이블을 검색합니다.

구문

NTSYSAPI PVOID RtlLookupElementGenericTableAvl(
  [in] PRTL_AVL_TABLE Table,
  [in] PVOID          Buffer
);

매개 변수

[in] Table

제네릭 Adelson-Velsky/Landis(AVL) 테이블(RTL_AVL_TABLE)에 대한 포인터입니다. RtlInitializeGenericTableAvl을 호출하여 테이블을 초기화해야 합니다.

[in] Buffer

RtlInitializeGenericTableAvl이 제네릭 테이블을 초기화할 때 등록된 CompareRoutine에 전달할 검색 데이터의 버퍼입니다. 자세한 내용은 RtlInitializeGenericTableAvl에 대한 설명을 참조하세요.

반환 값

RtlLookupElementGenericTableAvl 은 제네릭 테이블의 일치 요소와 연결된 사용자 데이터에 대한 포인터를 반환하거나, 제네릭 테이블에 현재 요소가 없거나 일치하는 요소가 없는 경우 NULL 을 반환합니다.

설명

기본적으로 운영 체제는 플레이 트리를 사용하여 제네릭 테이블을 구현하지만 RtlLookupElementGenericTableAvl 루틴은 Adelson-Velsky/Landis(AVL) 트리에서만 작동합니다. 드라이버에서 트리를 실행하지 않고 AVL 트리를 사용하도록 제네릭 테이블 루틴을 구성하려면 Ntddk.h를 포함하기 전에 공통 헤더 파일에 다음 define 문을 삽입합니다.

#define RTL_USE_AVL_TABLES 0

RTL_USE_AVL_TABLES 정의되지 않은 경우 제네릭 테이블 루틴의 AVL 형식을 사용해야 합니다. 예를 들어 RtlLookupElementGenericTable 대신 RtlLookupElementGenericTableAvl 루틴을 사용합니다. RtlLookupElementGenericTableAvl 호출에서 호출자는 RTL_GENERIC_TABLE 대신 RTL_AVL_TABLE 테이블 구조를 전달해야 합니다.

Rtl의 호출자 입니다. GenericTableAvl 루틴은 제네릭 테이블에 대한 액세스를 독점적으로 동기화하는 역할을 합니다. 배타적인 빠른 뮤텍스는 이 목적을 위해 사용할 수 있는 가장 효율적인 동기화 메커니즘입니다.

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

  • 테이블 또는 버퍼에서 호출자가 할당한 메모리는 페이징할 수 있습니다.

  • 호출자가 제공한 CompareRoutine 에는 페이징 가능한 코드가 포함되어 있습니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ntddk.h(Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL < DISPATCH_LEVEL(주의 섹션 참조)

추가 정보

RtlInitializeGenericTableAvl

RtlIsGenericTableEmptyAvl

RtlNumberGenericTableElementsAvl