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