[XDK]
[reactos.git] / include / xdk / rtltypes.h
1 /******************************************************************************
2 * Runtime Library Types *
3 ******************************************************************************/
4
5 #define RTL_REGISTRY_ABSOLUTE 0
6 #define RTL_REGISTRY_SERVICES 1
7 #define RTL_REGISTRY_CONTROL 2
8 #define RTL_REGISTRY_WINDOWS_NT 3
9 #define RTL_REGISTRY_DEVICEMAP 4
10 #define RTL_REGISTRY_USER 5
11 #define RTL_REGISTRY_MAXIMUM 6
12 #define RTL_REGISTRY_HANDLE 0x40000000
13 #define RTL_REGISTRY_OPTIONAL 0x80000000
14
15 /* RTL_QUERY_REGISTRY_TABLE.Flags */
16 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
17 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
18 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
19 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
20 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
21 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
22 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
23
24 #define HASH_STRING_ALGORITHM_DEFAULT 0
25 #define HASH_STRING_ALGORITHM_X65599 1
26 #define HASH_STRING_ALGORITHM_INVALID 0xffffffff
27
28 typedef struct _RTL_BITMAP {
29 ULONG SizeOfBitMap;
30 PULONG Buffer;
31 } RTL_BITMAP, *PRTL_BITMAP;
32
33 typedef struct _RTL_BITMAP_RUN {
34 ULONG StartingIndex;
35 ULONG NumberOfBits;
36 } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
37
38 typedef NTSTATUS
39 (NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)(
40 IN PWSTR ValueName,
41 IN ULONG ValueType,
42 IN PVOID ValueData,
43 IN ULONG ValueLength,
44 IN PVOID Context,
45 IN PVOID EntryContext);
46
47 typedef struct _RTL_QUERY_REGISTRY_TABLE {
48 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
49 ULONG Flags;
50 PCWSTR Name;
51 PVOID EntryContext;
52 ULONG DefaultType;
53 PVOID DefaultData;
54 ULONG DefaultLength;
55 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
56
57 typedef struct _TIME_FIELDS {
58 CSHORT Year;
59 CSHORT Month;
60 CSHORT Day;
61 CSHORT Hour;
62 CSHORT Minute;
63 CSHORT Second;
64 CSHORT Milliseconds;
65 CSHORT Weekday;
66 } TIME_FIELDS, *PTIME_FIELDS;
67
68 /* Slist Header */
69 #ifndef _SLIST_HEADER_
70 #define _SLIST_HEADER_
71
72 #if defined(_WIN64)
73
74 typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY {
75 PSLIST_ENTRY Next;
76 } SLIST_ENTRY, *PSLIST_ENTRY;
77
78 typedef struct _SLIST_ENTRY32 {
79 ULONG Next;
80 } SLIST_ENTRY32, *PSLIST_ENTRY32;
81
82 typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER {
83 struct {
84 ULONGLONG Alignment;
85 ULONGLONG Region;
86 } DUMMYSTRUCTNAME;
87 struct {
88 ULONGLONG Depth:16;
89 ULONGLONG Sequence:9;
90 ULONGLONG NextEntry:39;
91 ULONGLONG HeaderType:1;
92 ULONGLONG Init:1;
93 ULONGLONG Reserved:59;
94 ULONGLONG Region:3;
95 } Header8;
96 struct {
97 ULONGLONG Depth:16;
98 ULONGLONG Sequence:48;
99 ULONGLONG HeaderType:1;
100 ULONGLONG Init:1;
101 ULONGLONG Reserved:2;
102 ULONGLONG NextEntry:60;
103 } Header16;
104 struct {
105 ULONGLONG Depth:16;
106 ULONGLONG Sequence:48;
107 ULONGLONG HeaderType:1;
108 ULONGLONG Reserved:3;
109 ULONGLONG NextEntry:60;
110 } HeaderX64;
111 } SLIST_HEADER, *PSLIST_HEADER;
112
113 typedef union _SLIST_HEADER32 {
114 ULONGLONG Alignment;
115 struct {
116 SLIST_ENTRY32 Next;
117 USHORT Depth;
118 USHORT Sequence;
119 } DUMMYSTRUCTNAME;
120 } SLIST_HEADER32, *PSLIST_HEADER32;
121
122 #else
123
124 #define SLIST_ENTRY SINGLE_LIST_ENTRY
125 #define _SLIST_ENTRY _SINGLE_LIST_ENTRY
126 #define PSLIST_ENTRY PSINGLE_LIST_ENTRY
127
128 typedef SLIST_ENTRY SLIST_ENTRY32, *PSLIST_ENTRY32;
129
130 typedef union _SLIST_HEADER {
131 ULONGLONG Alignment;
132 struct {
133 SLIST_ENTRY Next;
134 USHORT Depth;
135 USHORT Sequence;
136 } DUMMYSTRUCTNAME;
137 } SLIST_HEADER, *PSLIST_HEADER;
138
139 typedef SLIST_HEADER SLIST_HEADER32, *PSLIST_HEADER32;
140
141 #endif /* defined(_WIN64) */
142
143 #endif /* _SLIST_HEADER_ */
144
145 /* MS definition is broken! */
146 extern BOOLEAN NTSYSAPI NlsMbCodePageTag;
147 extern BOOLEAN NTSYSAPI NlsMbOemCodePageTag;
148 #define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
149 #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
150