Reversing : The Hacker's Guide to Reverse Engineering

(ff) #1
void NTAPI RtlInitializeGenericTable(
TABLE *pGenericTable,
TABLE_COMPARE_ELEMENTS CompareElements,
TABLE_ALLOCATE_ELEMENT AllocateElement,
TABLE_FREE_ELEMENT FreeElement,
ULONG Unknown
);

ULONG NTAPI RtlNumberGenericTableElements(
TABLE *pGenericTable
);

BOOLEAN NTAPI RtlIsGenericTableEmpty(
TABLE *pGenericTable
);

PVOID NTAPI RtlGetElementGenericTable(
TABLE *pGenericTable,
ULONG ElementNumber
);

PVOID NTAPI RtlInsertElementGenericTable(
TABLE *pGenericTable,
PVOID ElementData,
ULONG DataLength,
OUT BOOLEAN *IsNewElement
);

PVOID NTAPI RtlLookupElementGenericTable(
TABLE *pGenericTable,
PVOID ElementToFind
);

BOOLEAN NTAPI RtlDeleteElementGenericTable(
TABLE *pGenericTable,
PVOID ElementToFind
);

Listing 5.13 Prototypes of the basic generic table APIs.

Conclusion


In this chapter, I demonstrated how to investigate, use, and document a rea-
sonably complicated set of functions. If there is one important moral to this

196 Chapter 5

Free download pdf