5 #ifndef __DDK_RTLTYPES_H
6 #define __DDK_RTLTYPES_H
10 #define COMPRESSION_FORMAT_NONE 0x0000
11 #define COMPRESSION_FORMAT_DEFAULT 0x0001
12 #define COMPRESSION_FORMAT_LZNT1 0x0002
14 #define COMPRESSION_ENGINE_STANDARD 0x0000
15 #define COMPRESSION_ENGINE_MAXIMUM 0x0100
16 #define COMPRESSION_ENGINE_HIBER 0x0200
20 #define VER_GREATER_EQUAL 3
22 #define VER_LESS_EQUAL 5
26 #define VER_CONDITION_MASK 7
27 #define VER_NUM_BITS_PER_CONDITION_MASK 3
29 #define VER_MINORVERSION 0x0000001
30 #define VER_MAJORVERSION 0x0000002
31 #define VER_BUILDNUMBER 0x0000004
32 #define VER_PLATFORMID 0x0000008
33 #define VER_SERVICEPACKMINOR 0x0000010
34 #define VER_SERVICEPACKMAJOR 0x0000020
35 #define VER_SUITENAME 0x0000040
36 #define VER_PRODUCT_TYPE 0x0000080
38 #define VER_NT_WORKSTATION 0x0000001
39 #define VER_NT_DOMAIN_CONTROLLER 0x0000002
40 #define VER_NT_SERVER 0x0000003
43 typedef struct _CONTROLLER_OBJECT
47 PVOID ControllerExtension
;
48 KDEVICE_QUEUE DeviceWaitQueue
;
51 } CONTROLLER_OBJECT
, *PCONTROLLER_OBJECT
;
53 typedef struct _STRING
56 * Length in bytes of the string stored in buffer
61 * Maximum length of the string
71 typedef STRING ANSI_STRING
;
72 typedef PSTRING PANSI_STRING
;
74 typedef STRING OEM_STRING
;
75 typedef PSTRING POEM_STRING
;
77 typedef struct _TIME_FIELDS
87 } TIME_FIELDS
, *PTIME_FIELDS
;
89 typedef struct _RTL_BITMAP
93 } RTL_BITMAP
, *PRTL_BITMAP
;
95 typedef struct _RTL_BITMAP_RUN
99 } RTL_BITMAP_RUN
, *PRTL_BITMAP_RUN
;
102 #define STDCALL_FUNC(a) (STDCALL a)
105 typedef NTSTATUS STDCALL_FUNC
106 (*PRTL_QUERY_REGISTRY_ROUTINE
) (PWSTR ValueName
,
113 typedef struct _RTL_QUERY_REGISTRY_TABLE
115 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine
;
122 } RTL_QUERY_REGISTRY_TABLE
, *PRTL_QUERY_REGISTRY_TABLE
;
124 typedef struct _COMPRESSED_DATA_INFO
126 USHORT CompressionFormatAndEngine
;
127 UCHAR CompressionUnitShift
;
131 USHORT NumberOfChunks
;
132 ULONG CompressedChunkSizes
[1];
133 } COMPRESSED_DATA_INFO
, *PCOMPRESSED_DATA_INFO
;
135 typedef struct _GENERATE_NAME_CONTEXT
138 BOOLEAN CheckSumInserted
;
141 ULONG ExtensionLength
;
142 WCHAR ExtensionBuffer
[4];
143 ULONG LastIndexValue
;
144 } GENERATE_NAME_CONTEXT
, *PGENERATE_NAME_CONTEXT
;
146 typedef struct _RTL_SPLAY_LINKS
148 struct _RTL_SPLAY_LINKS
*Parent
;
149 struct _RTL_SPLAY_LINKS
*LeftChild
;
150 struct _RTL_SPLAY_LINKS
*RightChild
;
151 } RTL_SPLAY_LINKS
, *PRTL_SPLAY_LINKS
;
154 typedef struct _RTL_RANGE_LIST
157 ULONG Flags
; /* RTL_RANGE_LIST_... flags */
160 } RTL_RANGE_LIST
, *PRTL_RANGE_LIST
;
162 #define RTL_RANGE_LIST_ADD_IF_CONFLICT 0x00000001
163 #define RTL_RANGE_LIST_ADD_SHARED 0x00000002
165 typedef struct _RTL_RANGE
172 UCHAR Flags
; /* RTL_RANGE_... flags */
173 } RTL_RANGE
, *PRTL_RANGE
;
175 #define RTL_RANGE_SHARED 0x01
176 #define RTL_RANGE_CONFLICT 0x02
179 (STDCALL
*PRTL_CONFLICT_RANGE_CALLBACK
) (PVOID Context
,
183 typedef struct _RANGE_LIST_ITERATOR
185 PLIST_ENTRY RangeListHead
;
186 PLIST_ENTRY MergedHead
;
189 } RTL_RANGE_LIST_ITERATOR
, *PRTL_RANGE_LIST_ITERATOR
;
192 typedef struct _INITIAL_TEB
197 PVOID StackCommitMax
;
199 } INITIAL_TEB
, *PINITIAL_TEB
;
201 #else /* __USE_W32API */
203 #include <ddk/ntifs.h>
205 #endif /* __USE_W32API */
207 typedef struct _RTL_HEAP_DEFINITION
211 } RTL_HEAP_DEFINITION
, *PRTL_HEAP_DEFINITION
;
213 typedef struct _RTL_ATOM_TABLE
217 PVOID Lock
; /* fast mutex (kernel mode)/ critical section (user mode) */
220 } RTL_ATOM_TABLE
, *PRTL_ATOM_TABLE
;
223 #define MAXIMUM_LEADBYTES 12
225 typedef struct _CPTABLEINFO
228 USHORT MaximumCharacterSize
; /* SBCS = 1, DBCS = 2 */
230 USHORT UniDefaultChar
;
231 USHORT TransDefaultChar
;
232 USHORT TransUniDefaultChar
;
234 UCHAR LeadByte
[MAXIMUM_LEADBYTES
];
235 PUSHORT MultiByteTable
;
239 } CPTABLEINFO
, *PCPTABLEINFO
;
241 typedef struct _NLSTABLEINFO
243 CPTABLEINFO OemTableInfo
;
244 CPTABLEINFO AnsiTableInfo
;
245 PUSHORT UpperCaseTable
;
246 PUSHORT LowerCaseTable
;
247 } NLSTABLEINFO
, *PNLSTABLEINFO
;
250 #include <pshpack1.h>
252 typedef struct _NLS_FILE_HEADER
256 USHORT MaximumCharacterSize
; /* SBCS = 1, DBCS = 2 */
258 USHORT UniDefaultChar
;
259 USHORT TransDefaultChar
;
260 USHORT TransUniDefaultChar
;
262 UCHAR LeadByte
[MAXIMUM_LEADBYTES
];
263 } NLS_FILE_HEADER
, *PNLS_FILE_HEADER
;
267 typedef struct _OSVERSIONINFOEXA {
268 ULONG dwOSVersionInfoSize;
269 ULONG dwMajorVersion;
270 ULONG dwMinorVersion;
273 CHAR szCSDVersion [128];
274 USHORT wServicePackMajor;
275 USHORT wServicePackMinor;
279 } OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
281 typedef struct _OSVERSIONINFOEXW {
282 ULONG dwOSVersionInfoSize;
283 ULONG dwMajorVersion;
284 ULONG dwMinorVersion;
287 WCHAR szCSDVersion[128];
288 USHORT wServicePackMajor;
289 USHORT wServicePackMinor;
293 } OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
296 typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
301 } RTL_MESSAGE_RESOURCE_ENTRY
, *PRTL_MESSAGE_RESOURCE_ENTRY
;
303 typedef struct _RTL_MESSAGE_RESOURCE_BLOCK
307 ULONG OffsetToEntries
;
308 } RTL_MESSAGE_RESOURCE_BLOCK
, *PRTL_MESSAGE_RESOURCE_BLOCK
;
310 typedef struct _RTL_MESSAGE_RESOURCE_DATA
312 ULONG NumberOfBlocks
;
313 RTL_MESSAGE_RESOURCE_BLOCK Blocks
[1];
314 } RTL_MESSAGE_RESOURCE_DATA
, *PRTL_MESSAGE_RESOURCE_DATA
;
317 (STDCALL
*PRTL_BASE_PROCESS_START_ROUTINE
)(PTHREAD_START_ROUTINE StartAddress
,
321 typedef struct _UNICODE_PREFIX_TABLE_ENTRY
{
324 struct _UNICODE_PREFIX_TABLE_ENTRY
*NextPrefixTree
;
325 struct _UNICODE_PREFIX_TABLE_ENTRY
*CaseMatch
;
326 RTL_SPLAY_LINKS Links
;
327 PUNICODE_STRING Prefix
;
328 } UNICODE_PREFIX_TABLE_ENTRY
;
329 typedef UNICODE_PREFIX_TABLE_ENTRY
*PUNICODE_PREFIX_TABLE_ENTRY
;
331 typedef struct _UNICODE_PREFIX_TABLE
{
334 PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree
;
335 PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry
;
336 } UNICODE_PREFIX_TABLE
;
337 typedef UNICODE_PREFIX_TABLE
*PUNICODE_PREFIX_TABLE
;
339 typedef enum _TABLE_SEARCH_RESULT
{
344 } TABLE_SEARCH_RESULT
;
347 typedef enum _RTL_GENERIC_COMPARE_RESULTS
{
351 } RTL_GENERIC_COMPARE_RESULTS
;
353 struct _RTL_AVL_TABLE
;
356 RTL_GENERIC_COMPARE_RESULTS
357 (STDCALL
*PRTL_AVL_COMPARE_ROUTINE
) (
358 struct _RTL_AVL_TABLE
*Table
,
365 (STDCALL
*PRTL_AVL_ALLOCATE_ROUTINE
) (
366 struct _RTL_AVL_TABLE
*Table
,
372 (STDCALL
*PRTL_AVL_FREE_ROUTINE
) (
373 struct _RTL_AVL_TABLE
*Table
,
379 (STDCALL
*PRTL_AVL_MATCH_FUNCTION
) (
380 struct _RTL_AVL_TABLE
*Table
,
385 typedef struct _RTL_BALANCED_LINKS
{
386 struct _RTL_BALANCED_LINKS
*Parent
;
387 struct _RTL_BALANCED_LINKS
*LeftChild
;
388 struct _RTL_BALANCED_LINKS
*RightChild
;
391 } RTL_BALANCED_LINKS
;
393 typedef RTL_BALANCED_LINKS
*PRTL_BALANCED_LINKS
;
395 typedef struct _RTL_AVL_TABLE
{
396 RTL_BALANCED_LINKS BalancedRoot
;
397 PVOID OrderedPointer
;
398 ULONG WhichOrderedElement
;
399 ULONG NumberGenericTableElements
;
401 PRTL_BALANCED_LINKS RestartKey
;
403 PRTL_AVL_COMPARE_ROUTINE CompareRoutine
;
404 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine
;
405 PRTL_AVL_FREE_ROUTINE FreeRoutine
;
408 typedef RTL_AVL_TABLE
*PRTL_AVL_TABLE
;
410 struct _RTL_GENERIC_TABLE
;
413 RTL_GENERIC_COMPARE_RESULTS
414 (STDCALL
*PRTL_GENERIC_COMPARE_ROUTINE
) (
415 struct _RTL_GENERIC_TABLE
*Table
,
422 (STDCALL
*PRTL_GENERIC_ALLOCATE_ROUTINE
) (
423 struct _RTL_GENERIC_TABLE
*Table
,
429 (STDCALL
*PRTL_GENERIC_FREE_ROUTINE
) (
430 struct _RTL_GENERIC_TABLE
*Table
,
435 typedef struct _RTL_GENERIC_TABLE
{
436 PRTL_SPLAY_LINKS TableRoot
;
437 LIST_ENTRY InsertOrderList
;
438 PLIST_ENTRY OrderedPointer
;
439 ULONG WhichOrderedElement
;
440 ULONG NumberGenericTableElements
;
441 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
;
442 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
;
443 PRTL_GENERIC_FREE_ROUTINE FreeRoutine
;
446 typedef RTL_GENERIC_TABLE
*PRTL_GENERIC_TABLE
;
449 (*PHEAP_ENUMERATION_ROUTINE
)(IN PVOID HeapHandle
,
452 #endif /* __DDK_RTLTYPES_H */