Поделиться через


Функция RtlNumberGenericTableElements (ntddk.h)

Подпрограмма RtlNumberGenericTableElements возвращает количество элементов в универсальной таблице.

Синтаксис

NTSYSAPI ULONG RtlNumberGenericTableElements(
  [in] PRTL_GENERIC_TABLE Table
);

Параметры

[in] Table

Указатель на универсальную таблицу (RTL_GENERIC_TABLE). Таблица должна быть инициализирована путем вызова RtlInitializeGenericTable.

Возвращаемое значение

RtlNumberGenericTableElements возвращает количество элементов, которые в настоящее время хранятся в таблице.

Комментарии

Вызывающие Rtl.. Подпрограммы GenericTable отвечают за исключительно синхронизацию доступа к универсальной таблице. Эксклюзивный быстрый мьютекс является наиболее эффективным механизмом синхронизации для этой цели.

По умолчанию операционная система использует деревья splay для реализации универсальных таблиц. При некоторых обстоятельствах операции с деревом splay сделают дерево глубоким и узким и даже может превратить его в прямую линию. Очень глубокие деревья ухудшают производительность поиска. С помощью деревьев Adelson-Velsky/Landis (AVL) можно обеспечить более сбалансированную реализацию универсальных таблиц. Если вы хотите настроить в универсальных подпрограммах таблицы использование деревьев AVL вместо деревьев splay в драйвере, вставьте следующую инструкцию define в общий файл заголовка перед включением Ntddk.h:

#define RTL_USE_AVL_TABLES 0

Если RTL_USE_AVL_TABLES не определен, необходимо использовать форму AVL универсальных табличных процедур. Например, используйте подпрограмму RtlNumberGenericTableElementsAvl вместо RtlNumberGenericTableElements. В вызове RtlNumberGenericTableElementsAvl вызывающий объект должен передать RTL_AVL_TABLE табличную структуру, а не RTL_GENERIC_TABLE.

Вызывающие компоненты RtlNumberGenericTableElements должны выполняться в IRQL < DISPATCH_LEVEL, если память, выделенная вызывающим объектом, для универсальной таблицы является страничной.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntddk.h (включая Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL (см. раздел "Примечания")

См. также раздел

RtlInitializeGenericTable

RtlIsGenericTableEmpty