RtlDeleteElementGenericTable 함수(ntddk.h)

RtlDeleteElementGenericTable 루틴은 제네릭 테이블에서 요소를 삭제합니다.

구문

NTSYSAPI BOOLEAN RtlDeleteElementGenericTable(
  [in] PRTL_GENERIC_TABLE Table,
  [in] PVOID              Buffer
);

매개 변수

[in] Table

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

[in] Buffer

삭제할 요소를 고유하게 식별하는 값을 포함하는 호출자가 할당한 버퍼에 대한 포인터입니다.

반환 값

RtlDeleteElementGenericTable 은 요소가 성공적으로 삭제되면 TRUE 를 반환하고, 그렇지 않으면 FALSE 를 반환합니다.

설명

RtlDeleteElementGenericTableRtlInitializeGenericTable 호출에 등록된 CompareRoutineFreeRoutine을 호출합니다.

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

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

#define RTL_USE_AVL_TABLES 0

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

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

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

요구 사항

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

추가 정보

RtlInitializeGenericTable

RtlInsertElementGenericTable