RtlEnumerateGenericTableWithoutSplayingAvl 함수(ntddk.h)

RtlEnumerateGenericTableWithoutSplayingAvl 루틴은 제네릭 테이블의 요소를 열거하는 데 사용됩니다.

구문

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

매개 변수

[in] Table

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

[in, out] RestartKey

RtlEnumerateGenericTableWithoutSplayingAvl에 대한 이전 호출에서 반환된 요소의 주소입니다. 열거형이 테이블의 첫 번째 요소에서 시작하는 경우 NULL 로 설정해야 합니다.

테이블의 모든 요소를 열거하려면 다음과 같이 RtlEnumerateGenericTableWithoutSplayingAvl을 사용합니다.

RestartKey = NULL;
for (ptr = RtlEnumerateGenericTableWithoutSplayingAvl(Table, &RestartKey);
     ptr != NULL;
     ptr = RtlEnumerateGenericTableWithoutSplayingAvl(Table, &RestartKey)) {
        // Process the element pointed to by ptr
}

반환 값

RtlEnumerateGenericTableWithoutSplayingAvl 은 요소와 연결된 호출자 정의 구조체에 대한 포인터를 반환합니다. RestartKey가 NULL이고 테이블에 요소가 없거나 RestartKey가 반환된 포인터이고 다음 요소가 없는 경우 NULL을 반환합니다.

설명

RtlEnumerateGenericTableWithoutSplayingAvl 루틴은 실제로 splay 트리에서 작동하지 않지만 RtlEnumerateGenericTableWithoutSplayingAvl과 유사한 명명된 루틴을 제공합니다.

RtlEnumerateGenericTableWithoutSplayingAvl 을 반복적으로 호출하여 제네릭 테이블의 각 요소에서 호출자의 데이터를 처리할 수 있습니다.

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

#define RTL_USE_AVL_TABLES 0

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

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

제네릭 테이블에 대해 호출자가 할당한 메모리를 페이징 할 수 있는 경우 RtlEnumerateGenericTableWithoutSplayingAvl 의 호출자는 IRQL < DISPATCH_LEVEL 실행되어야 합니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ntddk.h(Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 설명 섹션을 참조하십시오.

추가 정보

RtlEnumerateGenericTableAvl

RtlInitializeGenericTableAvl

RtlIsGenericTableEmptyAvl

RtlNumberGenericTableElementsAvl