Функция RtlLookupElementGenericTableAvl (ntddk.h)
Подпрограмма RtlLookupElementGenericTableAvl выполняет поиск универсальной таблицы для элемента, соответствующего указанным данным.
Синтаксис
NTSYSAPI PVOID RtlLookupElementGenericTableAvl(
[in] PRTL_AVL_TABLE Table,
[in] PVOID Buffer
);
Параметры
[in] Table
Указатель на универсальную таблицу Adelson-Velsky/Landis (AVL) (RTL_AVL_TABLE). Таблица должна быть инициализирована путем вызова RtlInitializeGenericTableAvl.
[in] Buffer
Буфер данных поиска для передачи в CompareRoutine, зарегистрированный при RtlInitializeGenericTableAvl инициализировал общую таблицу. Дополнительные сведения см. в описании RtlInitializeGenericTableAvl.
Возвращаемое значение
RtlLookupElementGenericTableAvl возвращает указатель на пользовательские данные, связанные с соответствующим элементом в универсальной таблице, или NULL, если универсальная таблица в настоящее время не содержит элементов или не найден соответствующий элемент.
Замечания
По умолчанию операционная система использует деревья воспроизведения для реализации универсальных таблиц, но RtlLookupElementGenericTableAvl работает только с деревьями Adelson-Velsky/Landis (AVL). Чтобы настроить универсальные подпрограммы таблиц для использования деревьев AVL вместо деревьев воспроизведения в драйвере, вставьте следующую инструкцию определения в общий файл заголовка перед включением Ntddk.h:
#define RTL_USE_AVL_TABLES 0
Если RTL_USE_AVL_TABLES не определен, необходимо использовать форму AVL универсальных подпрограмм таблиц. Например, используйте подпрограмму RtlLookupElementGenericTableAvl вместо RtlLookupElementGenericTable. В вызове RtlLookupElementGenericTableAvlвызывающий объект должен передать структуру таблицы RTL_AVL_TABLE, а не RTL_GENERIC_TABLE.
Вызывающие Rtl.. Подпрограммы GenericTableAvl отвечают за исключительно синхронизацию доступа к универсальной таблице. Эксклюзивный быстрый мьютекс является наиболее эффективным механизмом синхронизации, используемым для этой цели.
Вызывающие RtlLookupElementGenericTableAvl должны выполняться в IRQL < DISPATCH_LEVEL, если имеет одно из следующих условий:
Выделенная вызывающей памятью таблица или буфера можно пространить.
Вызывающий CompareRoutine содержит код, доступный для страниц.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | ntddk.h (include Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL < DISPATCH_LEVEL (см. раздел "Примечания") |