Expand Minimize

RtlDeleteElementGenericTable routine

The RtlDeleteElementGenericTable routine deletes an element from a generic table.


BOOLEAN RtlDeleteElementGenericTable(
  _In_  PVOID Buffer


Table [in]

A pointer to the generic table (RTL_GENERIC_TABLE). The table must have been initialized by calling RtlInitializeGenericTable.

Buffer [in]

A pointer to a caller-allocated buffer containing a value that uniquely identifies the element to be deleted.

Return value

RtlDeleteElementGenericTable returns TRUE if the element was successfully deleted, FALSE otherwise.


RtlDeleteElementGenericTable calls the CompareRoutine and FreeRoutine that were registered in the call to RtlInitializeGenericTable.

Callers of the Rtl..GenericTable routines are responsible for exclusively synchronizing access to the generic table. An exclusive fast mutex is the most efficient synchronization mechanism to use for this purpose.

By default, the operating system uses splay trees to implement generic tables. Under some circumstances, operations on a splay tree will make the tree deep and narrow and might even turn it into a straight line. Very deep trees degrade the performance of searches. You can ensure a more balanced, shallower tree implementation of generic tables by using Adelson-Velsky/Landis (AVL) trees. If you want to configure the generic table routines to use AVL trees instead of splay trees in your driver, insert the following define statement in a common header file before including Ntddk.h:


If RTL_USE_AVL_TABLES is not defined, you must use the AVL form of the generic table routines. For example, use the RtlDeleteElementGenericTableAvl routine instead of RtlDeleteElementGenericTable. In the call to RtlDeleteElementGenericTableAvl, the caller must pass a RTL_AVL_TABLE table structure rather than RTL_GENERIC_TABLE.

Callers of RtlDeleteElementGenericTable must be running at IRQL < DISPATCH_LEVEL if either of the following conditions holds:

  • The caller-allocated memory at Table or at Buffer is pageable.

  • The caller-supplied CompareRoutine or FreeRoutine contains pageable code.



Ntddk.h (include Ntddk.h or Ntifs.h)




See Remarks section.

See also




Send comments about this topic to Microsoft

© 2014 Microsoft