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