struct _RTL_SPLAY_LINKS *RightChild;
} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
+struct _RTL_GENERIC_TABLE;
+
+typedef enum _RTL_GENERIC_COMPARE_RESULTS
+{
+ GenericLessThan,
+ GenericGreaterThan,
+ GenericEqual
+} RTL_GENERIC_COMPARE_RESULTS;
+
+typedef enum _TABLE_SEARCH_RESULT
+{
+ TableEmptyTree,
+ TableFoundNode,
+ TableInsertAsLeft,
+ TableInsertAsRight
+} TABLE_SEARCH_RESULT;
+
+typedef RTL_GENERIC_COMPARE_RESULTS NTAPI
+(*PRTL_GENERIC_COMPARE_ROUTINE)(struct _RTL_GENERIC_TABLE *GenericTable,
+ PVOID FirstStruct,
+ PVOID SecondStruct);
+
+typedef PVOID NTAPI
+(*PRTL_GENERIC_ALLOCATE_ROUTINE)(struct _RTL_GENERIC_TABLE *GenericTable,
+ ULONG ByteSize
+ );
+
+typedef VOID NTAPI
+(*PRTL_GENERIC_FREE_ROUTINE)(struct _RTL_GENERIC_TABLE *GenericTable,
+ PVOID Element
+ );
typedef struct _RTL_GENERIC_TABLE
{
ULONG Unknown4;
ULONG Unknown5;
ULONG ElementCount;
- PVOID CompareRoutine;
- PVOID AllocateRoutine;
- PVOID FreeRoutine;
+ PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;
+ PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;
+ PRTL_GENERIC_FREE_ROUTINE FreeRoutine;
ULONG UserParameter;
} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;