#ifndef _NTRTL_H
typedef struct _RTL_GENERIC_TABLE
{
PRTL_SPLAY_LINKS TableRoot;
LIST_ENTRY InsertOrderList;
PLIST_ENTRY OrderedPointer;
ULONG WhichOrderedElement;
ULONG NumberGenericTableElements;
PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;
PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;
PRTL_GENERIC_FREE_ROUTINE FreeRoutine;
PVOID TableContext;
} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
View code on GitHub// ntddk.h
typedef struct _RTL_GENERIC_TABLE {
PRTL_SPLAY_LINKS TableRoot;
LIST_ENTRY InsertOrderList;
PLIST_ENTRY OrderedPointer;
ULONG WhichOrderedElement;
ULONG NumberGenericTableElements;
PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;
PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;
PRTL_GENERIC_FREE_ROUTINE FreeRoutine;
PVOID TableContext;
} RTL_GENERIC_TABLE;
View the official Windows Driver Kit DDI referenceThis structure is documented in Windows Driver Kit.
The RTL_GENERIC_TABLE structure contains file system-specific data for a splay tree.
RTL_GENERIC_TABLE is opaque and not directly manipulated. Drivers must use the support routines that are described in the Remarks section to manipulate RTL_GENERIC_TABLE values.
TableRootReserved for system use.
InsertOrderListReserved for system use.
OrderedPointerReserved for system use.
WhichOrderedElementReserved for system use.
NumberGenericTableElementsReserved for system use.
CompareRoutineReserved for system use.
AllocateRoutineReserved for system use.
FreeRoutineReserved for system use.
TableContextReserved for system use.
To initialize a generic table package, you allocate a buffer that is at least sizeof(RTL_GENERIC_TABLE) bytes in size to receive the initialized generic table structure from a call to the RtlInitializeGenericTable routine. You can use the following routines to manipulate the table:
RtlEnumerateGenericTableWithoutSplaying
RtlInsertElementGenericTableFullAvl
RtlLookupElementGenericTableFullAvl