Función RtlDeleteElementGenericTable (ntddk.h)

La rutina RtlDeleteElementGenericTable elimina un elemento de una tabla genérica.

Sintaxis

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

Parámetros

[in] Table

Puntero a la tabla genérica (RTL_GENERIC_TABLE). La tabla debe haberse inicializado llamando a RtlInitializeGenericTable.

[in] Buffer

Puntero a un búfer asignado por el autor de la llamada que contiene un valor que identifica de forma única el elemento que se va a eliminar.

Valor devuelto

RtlDeleteElementGenericTable devuelve TRUE si el elemento se eliminó correctamente; en caso contrario, FALSE .

Comentarios

RtlDeleteElementGenericTable llama a CompareRoutine y FreeRoutine registrados en la llamada a RtlInitializeGenericTable.

Autores de llamadas de Rtl.. Las rutinas genericTable son responsables de sincronizar exclusivamente el acceso a la tabla genérica. Una exclusión mutua rápida exclusiva es el mecanismo de sincronización más eficaz que se usará para este propósito.

De forma predeterminada, el sistema operativo usa árboles de reproducción para implementar tablas genéricas. En algunas circunstancias, las operaciones en un árbol de reproducción harán que el árbol esté profundo y estrecho e incluso puede convertirlo en una línea recta. Los árboles muy profundos degradan el rendimiento de las búsquedas. Puede garantizar una implementación de árbol más equilibrada y superficial de tablas genéricas mediante árboles Adelson-Velsky/Landis (AVL). Si desea configurar las rutinas de tabla genéricas para usar árboles AVL en lugar de árboles de reproducción en el controlador, inserte la siguiente instrucción define en un archivo de encabezado común antes de incluir Ntddk.h:

#define RTL_USE_AVL_TABLES 0

Si no se define RTL_USE_AVL_TABLES, debe usar el formato AVL de las rutinas de tabla genéricas. Por ejemplo, use la rutina RtlDeleteElementGenericTableAvl en lugar de RtlDeleteElementGenericTable. En la llamada a RtlDeleteElementGenericTableAvl, el autor de la llamada debe pasar una estructura de tabla de RTL_AVL_TABLE en lugar de RTL_GENERIC_TABLE.

Los autores de llamadas de RtlDeleteElementGenericTable deben ejecutarse en IRQL < DISPATCH_LEVEL si alguna de las condiciones siguientes contiene:

  • La memoria asignada por el autor de la llamada en Table o at Buffer es paginable.
  • CompareRoutine o FreeRoutine proporcionado por el autor de la llamada contiene código paginable.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado ntddk.h (incluya Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL vea la sección Comentarios.

Consulte también

RtlInitializeGenericTable

RtlInsertElementGenericTable