[headers] Fix type of PRTL_HEAP_PARAMETERS in ifssupp.h. Will be required soon
[reactos.git] / reactos / include / ndk / ifssupp.h
1 /*++ NDK Version: 0098
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 ifssupp.h
8
9 Abstract:
10
11 NDK Support for usage without the IFS. Will be deprecated at WDK Release.
12
13 Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17 --*/
18 #ifndef _NTIFS_
19 #ifndef NTOS_MODE_USER
20 #define _NTIFS_
21
22 #define TOKEN_SOURCE_LENGTH 8
23
24 typedef enum _TOKEN_TYPE
25 {
26 TokenPrimary = 1,
27 TokenImpersonation
28 } TOKEN_TYPE, *PTOKEN_TYPE;
29
30 typedef NTSTATUS
31 (NTAPI * PRTL_HEAP_COMMIT_ROUTINE)(
32 IN PVOID Base,
33 IN OUT PVOID *CommitAddress,
34 IN OUT PSIZE_T CommitSize
35 );
36
37 typedef struct _RTL_HEAP_PARAMETERS
38 {
39 ULONG Length;
40 SIZE_T SegmentReserve;
41 SIZE_T SegmentCommit;
42 SIZE_T DeCommitFreeBlockThreshold;
43 SIZE_T DeCommitTotalFreeThreshold;
44 SIZE_T MaximumAllocationSize;
45 SIZE_T VirtualMemoryThreshold;
46 SIZE_T InitialCommit;
47 SIZE_T InitialReserve;
48 PRTL_HEAP_COMMIT_ROUTINE CommitRoutine;
49 SIZE_T Reserved[2];
50 } RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS;
51
52 typedef PVOID PFS_FILTER_CALLBACKS;
53 typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
54
55 typedef struct _RTL_SPLAY_LINKS
56 {
57 struct _RTL_SPLAY_LINKS *Parent;
58 struct _RTL_SPLAY_LINKS *LeftChild;
59 struct _RTL_SPLAY_LINKS *RightChild;
60 } RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
61
62 typedef struct _RTL_GENERIC_TABLE RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
63 typedef ULONG TABLE_SEARCH_RESULT;
64
65 #if defined(USE_LPC6432)
66 #define LPC_CLIENT_ID CLIENT_ID64
67 #define LPC_SIZE_T ULONGLONG
68 #define LPC_PVOID ULONGLONG
69 #define LPC_HANDLE ULONGLONG
70 #else
71 #define LPC_CLIENT_ID CLIENT_ID
72 #define LPC_SIZE_T SIZE_T
73 #define LPC_PVOID PVOID
74 #define LPC_HANDLE HANDLE
75 #endif
76
77 typedef struct _PORT_MESSAGE
78 {
79 union
80 {
81 struct
82 {
83 CSHORT DataLength;
84 CSHORT TotalLength;
85 } s1;
86 ULONG Length;
87 } u1;
88 union
89 {
90 struct
91 {
92 CSHORT Type;
93 CSHORT DataInfoOffset;
94 } s2;
95 ULONG ZeroInit;
96 } u2;
97 union
98 {
99 LPC_CLIENT_ID ClientId;
100 double DoNotUseThisField;
101 };
102 ULONG MessageId;
103 union
104 {
105 LPC_SIZE_T ClientViewSize;
106 ULONG CallbackId;
107 };
108 } PORT_MESSAGE, *PPORT_MESSAGE;
109
110 typedef struct _PORT_VIEW
111 {
112 ULONG Length;
113 LPC_HANDLE SectionHandle;
114 ULONG SectionOffset;
115 LPC_SIZE_T ViewSize;
116 LPC_PVOID ViewBase;
117 LPC_PVOID ViewRemoteBase;
118 } PORT_VIEW, *PPORT_VIEW;
119
120 typedef struct _REMOTE_PORT_VIEW
121 {
122 ULONG Length;
123 LPC_SIZE_T ViewSize;
124 LPC_PVOID ViewBase;
125 } REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW;
126
127 typedef struct _KAPC_STATE
128 {
129 LIST_ENTRY ApcListHead[2];
130 struct _KPROCESS *Process;
131 BOOLEAN KernelApcInProgress;
132 BOOLEAN KernelApcPending;
133 BOOLEAN UserApcPending;
134 } KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE;
135
136 typedef struct _KQUEUE
137 {
138 DISPATCHER_HEADER Header;
139 LIST_ENTRY EntryListHead;
140 ULONG CurrentCount;
141 ULONG MaximumCount;
142 LIST_ENTRY ThreadListHead;
143 } KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
144
145 typedef struct _ACE_HEADER
146 {
147 UCHAR AceType;
148 UCHAR AceFlags;
149 USHORT AceSize;
150 } ACE_HEADER, *PACE_HEADER;
151
152 typedef enum _RTL_GENERIC_COMPARE_RESULTS
153 {
154 GenericLessThan,
155 GenericGreaterThan,
156 GenericEqual
157 } RTL_GENERIC_COMPARE_RESULTS;
158
159 typedef struct _SID_IDENTIFIER_AUTHORITY
160 {
161 UCHAR Value[6];
162 } SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
163
164 typedef struct _SID_AND_ATTRIBUTES
165 {
166 PSID Sid;
167 ULONG Attributes;
168 } SID_AND_ATTRIBUTES, * PSID_AND_ATTRIBUTES;
169
170 typedef struct _TOKEN_SOURCE
171 {
172 CHAR SourceName[TOKEN_SOURCE_LENGTH];
173 LUID SourceIdentifier;
174 } TOKEN_SOURCE, *PTOKEN_SOURCE;
175
176 typedef struct _TOKEN_CONTROL
177 {
178 LUID TokenId;
179 LUID AuthenticationId;
180 LUID ModifiedId;
181 TOKEN_SOURCE TokenSource;
182 } TOKEN_CONTROL, *PTOKEN_CONTROL;
183
184 typedef struct _SECURITY_CLIENT_CONTEXT
185 {
186 SECURITY_QUALITY_OF_SERVICE SecurityQos;
187 PACCESS_TOKEN ClientToken;
188 BOOLEAN DirectlyAccessClientToken;
189 BOOLEAN DirectAccessEffectiveOnly;
190 BOOLEAN ServerIsRemote;
191 TOKEN_CONTROL ClientTokenControl;
192 } SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT;
193
194 typedef struct _SECURITY_DESCRIPTOR_RELATIVE
195 {
196 UCHAR Revision;
197 UCHAR Sbz1;
198 SECURITY_DESCRIPTOR_CONTROL Control;
199 ULONG Owner;
200 ULONG Group;
201 ULONG Sacl;
202 ULONG Dacl;
203 } SECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE;
204
205 typedef struct _TOKEN_GROUPS
206 {
207 ULONG GroupCount;
208 SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
209 } TOKEN_GROUPS, *PTOKEN_GROUPS;
210
211 typedef struct _TOKEN_PRIVILEGES
212 {
213 ULONG PrivilegeCount;
214 LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
215 } TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
216
217 typedef struct _TOKEN_USER
218 {
219 SID_AND_ATTRIBUTES User;
220 } TOKEN_USER, *PTOKEN_USER;
221
222 typedef enum _TOKEN_INFORMATION_CLASS
223 {
224 TokenUser = 1,
225 TokenGroups,
226 TokenPrivileges,
227 TokenOwner,
228 TokenPrimaryGroup,
229 TokenDefaultDacl,
230 TokenSource,
231 TokenType,
232 TokenImpersonationLevel,
233 TokenStatistics,
234 TokenRestrictedSids,
235 TokenSessionId,
236 TokenGroupsAndPrivileges,
237 TokenSessionReference,
238 TokenSandBoxInert,
239 TokenAuditPolicy,
240 TokenOrigin,
241 TokenElevationType,
242 TokenLinkedToken,
243 TokenElevation,
244 TokenIsRestricted,
245 TokenAccessInformation,
246 TokenVirtualization,
247 TokenIntegrityLevel,
248 TokenIntegrityLevelDesktop,
249 TokenMandatoryPolicy,
250 MaxTokenInfoClass
251 } TOKEN_INFORMATION_CLASS, *PTOKEN_INFORMATION_CLASS;
252
253 typedef struct _TOKEN_OWNER
254 {
255 PSID Owner;
256 } TOKEN_OWNER, *PTOKEN_OWNER;
257
258 typedef struct _TOKEN_PRIMARY_GROUP
259 {
260 PSID PrimaryGroup;
261 } TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP;
262
263 typedef struct _TOKEN_DEFAULT_DACL
264 {
265 PACL DefaultDacl;
266 } TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;
267
268 //
269 // Heap flags
270 //
271 #define HEAP_NO_SERIALIZE 0x00000001
272 #define HEAP_GROWABLE 0x00000002
273 #define HEAP_GENERATE_EXCEPTIONS 0x00000004
274 #define HEAP_ZERO_MEMORY 0x00000008
275 #define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010
276 #define HEAP_TAIL_CHECKING_ENABLED 0x00000020
277 #define HEAP_FREE_CHECKING_ENABLED 0x00000040
278 #define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080
279
280 #define HEAP_CREATE_ALIGN_16 0x00010000
281 #define HEAP_CREATE_ENABLE_TRACING 0x00020000
282 #define HEAP_CREATE_ENABLE_EXECUTE 0x00040000
283
284 #endif // !NTOS_MODE_USER
285 #endif // _NTIFS_