RtlNumberGenericTableElements 함수(ntddk.h)

RtlNumberGenericTableElements 루틴은 제네릭 테이블의 요소 수를 반환합니다.

구문

NTSYSAPI ULONG RtlNumberGenericTableElements(
  [in] PRTL_GENERIC_TABLE Table
);

매개 변수

[in] Table

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

반환 값

RtlNumberGenericTableElements 는 현재 테이블에 저장된 요소의 수를 반환합니다.

설명

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

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

#define RTL_USE_AVL_TABLES 0

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

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

요구 사항

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

추가 정보

RtlInitializeGenericTable

RtlIsGenericTableEmpty