다음을 통해 공유


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