Install msysDVLPR-1.0.0-alpha-1
[msysgit.git] / include / winnt.h
blob7276945c82517d4301eaa902b708059eb67703a8
1 #ifndef _WINNT_H
2 #define _WINNT_H
3 /* translate GCC target defines to MS equivalents. Keep this synchronized
4 with windows.h. */
5 #if defined(__i686__) && !defined(_M_IX86)
6 #define _M_IX86 600
7 #elif defined(__i586__) && !defined(_M_IX86)
8 #define _M_IX86 500
9 #elif defined(__i486__) && !defined(_M_IX86)
10 #define _M_IX86 400
11 #elif defined(__i386__) && !defined(_M_IX86)
12 #define _M_IX86 300
13 #endif
14 #if defined(_M_IX86) && !defined(_X86_)
15 #define _X86_
16 #elif defined(_M_ALPHA) && !defined(_ALPHA_)
17 #define _ALPHA_
18 #elif defined(_M_PPC) && !defined(_PPC_)
19 #define _PPC_
20 #elif defined(_M_MRX000) && !defined(_MIPS_)
21 #define _MIPS_
22 #elif defined(_M_M68K) && !defined(_68K_)
23 #define _68K_
24 #endif
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
30 #include <winerror.h>
32 #ifndef RC_INVOKED
33 #include <string.h>
35 /* FIXME: add more architectures. Is there a way to specify this in GCC? */
36 #ifdef _X86_
37 #define UNALIGNED
38 #else
39 #define UNALIGNED
40 #endif
42 #ifndef VOID
43 #define VOID void
44 #endif
45 typedef char CHAR;
46 typedef short SHORT;
47 typedef long LONG;
48 typedef CHAR CCHAR;
49 typedef unsigned char UCHAR,*PUCHAR;
50 typedef unsigned short USHORT,*PUSHORT;
51 typedef unsigned long ULONG,*PULONG;
52 typedef char *PSZ;
54 #ifndef _WCHAR_T_DEFINED
55 #define _WCHAR_T_DEFINED
56 #ifndef _WCHAR_T_
57 #define _WCHAR_T_
58 #undef __need_wchar_t
59 #ifndef __cplusplus
60 typedef unsigned short wchar_t;
61 #endif
62 #endif
63 #endif
65 typedef wchar_t WCHAR;
66 typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR;
67 typedef CONST WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR;
68 typedef CHAR *PCHAR,*LPCH,*PCH,*NPSTR,*LPSTR,*PSTR;
69 typedef CONST CHAR *LPCCH,*PCSTR,*LPCSTR;
70 #ifndef _TCHAR_DEFINED
71 #define _TCHAR_DEFINED
72 #ifdef UNICODE
74 * NOTE: This tests UNICODE, which is different from the _UNICODE define
75 * used to differentiate standard C runtime calls.
77 typedef WCHAR TCHAR;
78 typedef WCHAR _TCHAR;
79 #else
80 typedef CHAR TCHAR;
81 typedef CHAR _TCHAR;
82 #endif
83 #endif
84 typedef TCHAR TBYTE,*PTCH,*PTBYTE;
85 typedef TCHAR *LPTCH,*PTSTR,*LPTSTR,*LP,*PTCHAR;
86 typedef const TCHAR *LPCTSTR;
87 #ifdef UNICODE
89 * __TEXT is a private macro whose specific use is to force the expansion of a
90 * macro passed as an argument to the macro TEXT. DO NOT use this
91 * macro within your programs. It's name and function could change without
92 * notice.
94 #define __TEXT(q) L##q
95 #else
96 #define __TEXT(q) q
97 #endif
99 * UNICODE a constant string when UNICODE is defined, else returns the string
100 * unmodified.
101 * The corresponding macros _TEXT() and _T() for mapping _UNICODE strings
102 * passed to C runtime functions are defined in mingw/tchar.h
104 #define TEXT(q) __TEXT(q)
105 typedef SHORT *PSHORT;
106 typedef LONG *PLONG;
107 typedef void *HANDLE;
108 typedef HANDLE *PHANDLE,*LPHANDLE;
109 #ifdef STRICT
110 #define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n
111 #else
112 #define DECLARE_HANDLE(n) typedef HANDLE n
113 #endif
114 typedef DWORD LCID;
115 typedef PDWORD PLCID;
116 typedef WORD LANGID;
117 #ifdef __GNUC__
118 #define _HAVE_INT64
119 #define _INTEGRAL_MAX_BITS 64
120 #undef __int64
121 #define __int64 long long
122 #elif defined(__WATCOMC__) && (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64 )
123 #define _HAVE_INT64
124 #endif /* __GNUC__/__WATCOMC */
125 #if defined(_HAVE_INT64) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64)
126 typedef __int64 LONGLONG;
127 typedef unsigned __int64 DWORDLONG;
128 #else
129 typedef double LONGLONG,DWORDLONG;
130 #endif
131 typedef LONGLONG *PLONGLONG;
132 typedef DWORDLONG *PDWORDLONG;
133 typedef DWORDLONG ULONGLONG,*PULONGLONG;
134 typedef LONGLONG USN;
135 #ifdef _HAVE_INT64
136 #define Int32x32To64(a,b) ((LONGLONG)(a)*(LONGLONG)(b))
137 #define UInt32x32To64(a,b) ((DWORDLONG)(a)*(DWORDLONG)(b))
138 #define Int64ShllMod32(a,b) ((DWORDLONG)(a)<<(b))
139 #define Int64ShraMod32(a,b) ((LONGLONG)(a)>>(b))
140 #define Int64ShrlMod32(a,b) ((DWORDLONG)(a)>>(b))
141 #endif
142 #define ANSI_NULL '\0'
143 #define UNICODE_NULL L'\0'
144 typedef BYTE BOOLEAN,*PBOOLEAN;
145 #endif
147 #define NTAPI __stdcall
148 #include <basetsd.h>
149 #define APPLICATION_ERROR_MASK 0x20000000
150 #define ERROR_SEVERITY_SUCCESS 0x00000000
151 #define ERROR_SEVERITY_INFORMATIONAL 0x40000000
152 #define ERROR_SEVERITY_WARNING 0x80000000
153 #define ERROR_SEVERITY_ERROR 0xC0000000
154 #define COMPRESSION_FORMAT_NONE 0
155 #define COMPRESSION_FORMAT_DEFAULT 1
156 #define COMPRESSION_FORMAT_LZNT1 2
157 #define COMPRESSION_ENGINE_STANDARD 0
158 #define COMPRESSION_ENGINE_MAXIMUM 256
159 #define ACCESS_ALLOWED_ACE_TYPE 0
160 #define ACCESS_DENIED_ACE_TYPE 1
161 #define ANYSIZE_ARRAY 1
162 #define SYSTEM_AUDIT_ACE_TYPE 2
163 #define SYSTEM_ALARM_ACE_TYPE 3
164 #define OBJECT_INHERIT_ACE 1
165 #define CONTAINER_INHERIT_ACE 2
166 #define NO_PROPAGATE_INHERIT_ACE 4
167 #define INHERIT_ONLY_ACE 8
168 #define VALID_INHERIT_FLAGS 16
169 #define SUCCESSFUL_ACCESS_ACE_FLAG 64
170 #define FAILED_ACCESS_ACE_FLAG 128
171 #define DELETE 0x00010000L
172 #define READ_CONTROL 0x20000L
173 #define WRITE_DAC 0x40000L
174 #define WRITE_OWNER 0x80000L
175 #define SYNCHRONIZE 0x100000L
176 #define STANDARD_RIGHTS_REQUIRED 0xF0000
177 #define STANDARD_RIGHTS_READ 0x20000
178 #define STANDARD_RIGHTS_WRITE 0x20000
179 #define STANDARD_RIGHTS_EXECUTE 0x20000
180 #define STANDARD_RIGHTS_ALL 0x1F0000
181 #define SPECIFIC_RIGHTS_ALL 0xFFFF
182 #define ACCESS_SYSTEM_SECURITY 0x1000000
183 #define MAXIMUM_ALLOWED 0x2000000
184 #define GENERIC_READ 0x80000000
185 #define GENERIC_WRITE 0x40000000
186 #define GENERIC_EXECUTE 0x20000000
187 #define GENERIC_ALL 0x10000000
188 #define FILE_READ_DATA 1
189 #define FILE_LIST_DIRECTORY 1
190 #define FILE_WRITE_DATA 2
191 #define FILE_ADD_FILE 2
192 #define FILE_APPEND_DATA 4
193 #define FILE_ADD_SUBDIRECTORY 4
194 #define FILE_CREATE_PIPE_INSTANCE 4
195 #define FILE_READ_EA 8
196 #define FILE_READ_PROPERTIES 8
197 #define FILE_WRITE_EA 16
198 #define FILE_WRITE_PROPERTIES 16
199 #define FILE_EXECUTE 32
200 #define FILE_TRAVERSE 32
201 #define FILE_DELETE_CHILD 64
202 #define FILE_READ_ATTRIBUTES 128
203 #define FILE_WRITE_ATTRIBUTES 256
204 #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1FF)
205 #define FILE_GENERIC_READ (STANDARD_RIGHTS_READ|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|SYNCHRONIZE)
206 #define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE|FILE_WRITE_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|FILE_APPEND_DATA|SYNCHRONIZE)
207 #define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE|FILE_READ_ATTRIBUTES|FILE_EXECUTE|SYNCHRONIZE)
208 #define FILE_SHARE_READ 1
209 #define FILE_SHARE_WRITE 2
210 #define FILE_SHARE_DELETE 4
211 #define FILE_ATTRIBUTE_READONLY 1
212 #define FILE_ATTRIBUTE_HIDDEN 2
213 #define FILE_ATTRIBUTE_SYSTEM 4
214 #define FILE_ATTRIBUTE_DIRECTORY 16
215 #define FILE_ATTRIBUTE_ARCHIVE 32
216 #define FILE_ATTRIBUTE_DEVICE 64
217 #define FILE_ATTRIBUTE_NORMAL 128
218 #define FILE_ATTRIBUTE_TEMPORARY 256
219 #define FILE_ATTRIBUTE_SPARSE_FILE 512
220 #define FILE_ATTRIBUTE_REPARSE_POINT 1024
221 #define FILE_ATTRIBUTE_COMPRESSED 2048
222 #define FILE_ATTRIBUTE_OFFLINE 0x1000
223 #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x2000
224 #define FILE_ATTRIBUTE_ENCRYPTED 0x4000
225 #define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
226 #define FILE_NOTIFY_CHANGE_FILE_NAME 1
227 #define FILE_NOTIFY_CHANGE_DIR_NAME 2
228 #define FILE_NOTIFY_CHANGE_ATTRIBUTES 4
229 #define FILE_NOTIFY_CHANGE_SIZE 8
230 #define FILE_NOTIFY_CHANGE_LAST_WRITE 16
231 #define FILE_NOTIFY_CHANGE_LAST_ACCESS 32
232 #define FILE_NOTIFY_CHANGE_CREATION 64
233 #define FILE_NOTIFY_CHANGE_SECURITY 256
234 #define MAILSLOT_NO_MESSAGE ((DWORD)-1)
235 #define MAILSLOT_WAIT_FOREVER ((DWORD)-1)
236 #define FILE_CASE_SENSITIVE_SEARCH 1
237 #define FILE_CASE_PRESERVED_NAMES 2
238 #define FILE_UNICODE_ON_DISK 4
239 #define FILE_PERSISTENT_ACLS 8
240 #define FILE_FILE_COMPRESSION 16
241 #define FILE_VOLUME_QUOTAS 32
242 #define FILE_SUPPORTS_SPARSE_FILES 64
243 #define FILE_SUPPORTS_REPARSE_POINTS 128
244 #define FILE_SUPPORTS_REMOTE_STORAGE 256
245 #define FILE_VOLUME_IS_COMPRESSED 0x8000
246 #define FILE_SUPPORTS_OBJECT_IDS 0x10000
247 #define FILE_SUPPORTS_ENCRYPTION 0x20000
248 #define FILE_NAMED_STREAMS 0x40000
249 #define IO_COMPLETION_MODIFY_STATE 2
250 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|3)
251 #define DUPLICATE_CLOSE_SOURCE 1
252 #define DUPLICATE_SAME_ACCESS 2
253 #define PROCESS_TERMINATE 1
254 #define PROCESS_CREATE_THREAD 2
255 #define PROCESS_VM_OPERATION 8
256 #define PROCESS_VM_READ 16
257 #define PROCESS_VM_WRITE 32
258 #define PROCESS_DUP_HANDLE 64
259 #define PROCESS_CREATE_PROCESS 128
260 #define PROCESS_SET_QUOTA 256
261 #define PROCESS_SET_INFORMATION 512
262 #define PROCESS_QUERY_INFORMATION 1024
263 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xFFF)
264 #define THREAD_TERMINATE 1
265 #define THREAD_SUSPEND_RESUME 2
266 #define THREAD_GET_CONTEXT 8
267 #define THREAD_SET_CONTEXT 16
268 #define THREAD_SET_INFORMATION 32
269 #define THREAD_QUERY_INFORMATION 64
270 #define THREAD_SET_THREAD_TOKEN 128
271 #define THREAD_IMPERSONATE 256
272 #define THREAD_DIRECT_IMPERSONATION 0x200
273 #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF)
274 #define EXCEPTION_NONCONTINUABLE 1
275 #define EXCEPTION_MAXIMUM_PARAMETERS 15
277 * To prevent gcc compiler warnings, bracket these defines when initialising
278 * a SID_IDENTIFIER_AUTHORITY, eg.
279 * SID_IDENTIFIER_AUTHORITY aNullSidAuthority = {SECURITY_NULL_SID_AUTHORITY};
281 #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
282 #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
283 #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
284 #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
285 #define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
286 #define SECURITY_NT_AUTHORITY {0,0,0,0,0,5}
287 #define SECURITY_NULL_RID 0
288 #define SECURITY_WORLD_RID 0
289 #define SECURITY_LOCAL_RID 0
290 #define SECURITY_CREATOR_OWNER_RID 0
291 #define SECURITY_CREATOR_GROUP_RID 1
292 #define SECURITY_DIALUP_RID 1
293 #define SECURITY_NETWORK_RID 2
294 #define SECURITY_BATCH_RID 3
295 #define SECURITY_INTERACTIVE_RID 4
296 #define SECURITY_LOGON_IDS_RID 5
297 #define SECURITY_SERVICE_RID 6
298 #define SECURITY_LOCAL_SYSTEM_RID 18
299 #define SECURITY_BUILTIN_DOMAIN_RID 32
300 #define SECURITY_PRINCIPAL_SELF_RID 10
301 #define SID_REVISION 1
302 #define DOMAIN_USER_RID_ADMIN 0x1F4L
303 #define DOMAIN_USER_RID_GUEST 0x1F5L
304 #define DOMAIN_GROUP_RID_ADMINS 0x200L
305 #define DOMAIN_GROUP_RID_USERS 0x201L
306 #define DOMAIN_ALIAS_RID_ADMINS 0x220L
307 #define DOMAIN_ALIAS_RID_USERS 0x221L
308 #define DOMAIN_ALIAS_RID_GUESTS 0x222L
309 #define DOMAIN_ALIAS_RID_POWER_USERS 0x223L
310 #define DOMAIN_ALIAS_RID_ACCOUNT_OPS 0x224L
311 #define DOMAIN_ALIAS_RID_SYSTEM_OPS 0x225L
312 #define DOMAIN_ALIAS_RID_PRINT_OPS 0x226L
313 #define DOMAIN_ALIAS_RID_BACKUP_OPS 0x227L
314 #define DOMAIN_ALIAS_RID_REPLICATOR 0x228L
315 #define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege")
316 #define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege")
317 #define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege")
318 #define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege")
319 #define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege")
320 #define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege")
321 #define SE_TCB_NAME TEXT("SeTcbPrivilege")
322 #define SE_SECURITY_NAME TEXT("SeSecurityPrivilege")
323 #define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege")
324 #define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege")
325 #define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege")
326 #define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege")
327 #define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege")
328 #define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege")
329 #define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege")
330 #define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege")
331 #define SE_BACKUP_NAME TEXT("SeBackupPrivilege")
332 #define SE_RESTORE_NAME TEXT("SeRestorePrivilege")
333 #define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege")
334 #define SE_DEBUG_NAME TEXT("SeDebugPrivilege")
335 #define SE_AUDIT_NAME TEXT("SeAuditPrivilege")
336 #define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege")
337 #define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege")
338 #define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege")
339 #define SE_GROUP_MANDATORY 1
340 #define SE_GROUP_ENABLED_BY_DEFAULT 2
341 #define SE_GROUP_ENABLED 4
342 #define SE_GROUP_OWNER 8
343 #define SE_GROUP_USE_FOR_DENY_ONLY 16
344 #define SE_GROUP_LOGON_ID 3221225472U
345 #define SE_GROUP_RESOURCE 536870912
346 #define LANG_NEUTRAL 0x00
347 #define LANG_ARABIC 0x01
348 #define LANG_BULGARIAN 0x02
349 #define LANG_CATALAN 0x03
350 #define LANG_CHINESE 0x04
351 #define LANG_CZECH 0x05
352 #define LANG_DANISH 0x06
353 #define LANG_GERMAN 0x07
354 #define LANG_GREEK 0x08
355 #define LANG_ENGLISH 0x09
356 #define LANG_SPANISH 0x0a
357 #define LANG_FINNISH 0x0b
358 #define LANG_FRENCH 0x0c
359 #define LANG_HEBREW 0x0d
360 #define LANG_HUNGARIAN 0x0e
361 #define LANG_ICELANDIC 0x0f
362 #define LANG_ITALIAN 0x10
363 #define LANG_JAPANESE 0x11
364 #define LANG_KOREAN 0x12
365 #define LANG_DUTCH 0x13
366 #define LANG_NORWEGIAN 0x14
367 #define LANG_POLISH 0x15
368 #define LANG_PORTUGUESE 0x16
369 #define LANG_ROMANIAN 0x18
370 #define LANG_RUSSIAN 0x19
371 #define LANG_CROATIAN 0x1a
372 #define LANG_SERBIAN 0x1a
373 #define LANG_SLOVAK 0x1b
374 #define LANG_ALBANIAN 0x1c
375 #define LANG_SWEDISH 0x1d
376 #define LANG_THAI 0x1e
377 #define LANG_TURKISH 0x1f
378 #define LANG_URDU 0x20
379 #define LANG_INDONESIAN 0x21
380 #define LANG_UKRAINIAN 0x22
381 #define LANG_BELARUSIAN 0x23
382 #define LANG_SLOVENIAN 0x24
383 #define LANG_ESTONIAN 0x25
384 #define LANG_LATVIAN 0x26
385 #define LANG_LITHUANIAN 0x27
386 #define LANG_FARSI 0x29
387 #define LANG_VIETNAMESE 0x2a
388 #define LANG_ARMENIAN 0x2b
389 #define LANG_AZERI 0x2c
390 #define LANG_BASQUE 0x2d
391 #define LANG_MACEDONIAN 0x2f
392 #define LANG_AFRIKAANS 0x36
393 #define LANG_GEORGIAN 0x37
394 #define LANG_FAEROESE 0x38
395 #define LANG_HINDI 0x39
396 #define LANG_MALAY 0x3e
397 #define LANG_KAZAK 0x3f
398 #define LANG_SWAHILI 0x41
399 #define LANG_UZBEK 0x43
400 #define LANG_TATAR 0x44
401 #define LANG_BENGALI 0x45
402 #define LANG_PUNJABI 0x46
403 #define LANG_GUJARATI 0x47
404 #define LANG_ORIYA 0x48
405 #define LANG_TAMIL 0x49
406 #define LANG_TELUGU 0x4a
407 #define LANG_KANNADA 0x4b
408 #define LANG_MALAYALAM 0x4c
409 #define LANG_ASSAMESE 0x4d
410 #define LANG_MARATHI 0x4e
411 #define LANG_SANSKRIT 0x4f
412 #define LANG_KONKANI 0x57
413 #define LANG_MANIPURI 0x58
414 #define LANG_SINDHI 0x59
415 #define LANG_KASHMIRI 0x60
416 #define LANG_NEPALI 0x61
417 #define SUBLANG_NEUTRAL 0x00
418 #define SUBLANG_DEFAULT 0x01
419 #define SUBLANG_SYS_DEFAULT 0x02
420 #define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
421 #define SUBLANG_ARABIC_IRAQ 0x02
422 #define SUBLANG_ARABIC_EGYPT 0x03
423 #define SUBLANG_ARABIC_LIBYA 0x04
424 #define SUBLANG_ARABIC_ALGERIA 0x05
425 #define SUBLANG_ARABIC_MOROCCO 0x06
426 #define SUBLANG_ARABIC_TUNISIA 0x07
427 #define SUBLANG_ARABIC_OMAN 0x08
428 #define SUBLANG_ARABIC_YEMEN 0x09
429 #define SUBLANG_ARABIC_SYRIA 0x0a
430 #define SUBLANG_ARABIC_JORDAN 0x0b
431 #define SUBLANG_ARABIC_LEBANON 0x0c
432 #define SUBLANG_ARABIC_KUWAIT 0x0d
433 #define SUBLANG_ARABIC_UAE 0x0e
434 #define SUBLANG_ARABIC_BAHRAIN 0x0f
435 #define SUBLANG_ARABIC_QATAR 0x10
436 #define SUBLANG_AZERI_CYRILLIC 0x01
437 #define SUBLANG_AZERI_LATIN 0x02
438 #define SUBLANG_CHINESE_TRADITIONAL 0x01
439 #define SUBLANG_CHINESE_SIMPLIFIED 0x02
440 #define SUBLANG_CHINESE_HONGKONG 0x03
441 #define SUBLANG_CHINESE_SINGAPORE 0x04
442 #define SUBLANG_CHINESE_MACAU 0x05
443 #define SUBLANG_DUTCH 0x01
444 #define SUBLANG_DUTCH_BELGIAN 0x02
445 #define SUBLANG_ENGLISH_US 0x01
446 #define SUBLANG_ENGLISH_UK 0x02
447 #define SUBLANG_ENGLISH_AUS 0x03
448 #define SUBLANG_ENGLISH_CAN 0x04
449 #define SUBLANG_ENGLISH_NZ 0x05
450 #define SUBLANG_ENGLISH_EIRE 0x06
451 #define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
452 #define SUBLANG_ENGLISH_JAMAICA 0x08
453 #define SUBLANG_ENGLISH_CARIBBEAN 0x09
454 #define SUBLANG_ENGLISH_BELIZE 0x0a
455 #define SUBLANG_ENGLISH_TRINIDAD 0x0b
456 #define SUBLANG_ENGLISH_PHILIPPINES 0x0c
457 #define SUBLANG_ENGLISH_ZIMBABWE 0x0d
458 #define SUBLANG_FRENCH 0x01
459 #define SUBLANG_FRENCH_BELGIAN 0x02
460 #define SUBLANG_FRENCH_CANADIAN 0x03
461 #define SUBLANG_FRENCH_SWISS 0x04
462 #define SUBLANG_FRENCH_LUXEMBOURG 0x05
463 #define SUBLANG_FRENCH_MONACO 0x06
464 #define SUBLANG_GERMAN 0x01
465 #define SUBLANG_GERMAN_SWISS 0x02
466 #define SUBLANG_GERMAN_AUSTRIAN 0x03
467 #define SUBLANG_GERMAN_LUXEMBOURG 0x04
468 #define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
469 #define SUBLANG_ITALIAN 0x01
470 #define SUBLANG_ITALIAN_SWISS 0x02
471 #define SUBLANG_KASHMIRI_INDIA 0x02
472 #define SUBLANG_KOREAN 0x01
473 #define SUBLANG_LITHUANIAN 0x01
474 #define SUBLANG_MALAY_MALAYSIA 0x01
475 #define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
476 #define SUBLANG_NEPALI_INDIA 0x02
477 #define SUBLANG_NORWEGIAN_BOKMAL 0x01
478 #define SUBLANG_NORWEGIAN_NYNORSK 0x02
479 #define SUBLANG_PORTUGUESE 0x01
480 #define SUBLANG_PORTUGUESE_BRAZILIAN 0x02
481 #define SUBLANG_SERBIAN_LATIN 0x02
482 #define SUBLANG_SERBIAN_CYRILLIC 0x03
483 #define SUBLANG_SPANISH 0x01
484 #define SUBLANG_SPANISH_MEXICAN 0x02
485 #define SUBLANG_SPANISH_MODERN 0x03
486 #define SUBLANG_SPANISH_GUATEMALA 0x04
487 #define SUBLANG_SPANISH_COSTA_RICA 0x05
488 #define SUBLANG_SPANISH_PANAMA 0x06
489 #define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
490 #define SUBLANG_SPANISH_VENEZUELA 0x08
491 #define SUBLANG_SPANISH_COLOMBIA 0x09
492 #define SUBLANG_SPANISH_PERU 0x0a
493 #define SUBLANG_SPANISH_ARGENTINA 0x0b
494 #define SUBLANG_SPANISH_ECUADOR 0x0c
495 #define SUBLANG_SPANISH_CHILE 0x0d
496 #define SUBLANG_SPANISH_URUGUAY 0x0e
497 #define SUBLANG_SPANISH_PARAGUAY 0x0f
498 #define SUBLANG_SPANISH_BOLIVIA 0x10
499 #define SUBLANG_SPANISH_EL_SALVADOR 0x11
500 #define SUBLANG_SPANISH_HONDURAS 0x12
501 #define SUBLANG_SPANISH_NICARAGUA 0x13
502 #define SUBLANG_SPANISH_PUERTO_RICO 0x14
503 #define SUBLANG_SWEDISH 0x01
504 #define SUBLANG_SWEDISH_FINLAND 0x02
505 #define SUBLANG_URDU_PAKISTAN 0x01
506 #define SUBLANG_URDU_INDIA 0x02
507 #define SUBLANG_UZBEK_LATIN 0x01
508 #define SUBLANG_UZBEK_CYRILLIC 0x02
509 #define NLS_VALID_LOCALE_MASK 1048575
510 #define SORT_DEFAULT 0
511 #define SORT_JAPANESE_XJIS 0
512 #define SORT_JAPANESE_UNICODE 1
513 #define SORT_CHINESE_BIG5 0
514 #define SORT_CHINESE_PRCP 0
515 #define SORT_CHINESE_UNICODE 1
516 #define SORT_CHINESE_PRC 2
517 #define SORT_CHINESE_BOPOMOFO 3
518 #define SORT_KOREAN_KSC 0
519 #define SORT_KOREAN_UNICODE 1
520 #define SORT_GERMAN_PHONE_BOOK 1
521 #define SORT_HUNGARIAN_DEFAULT 0
522 #define SORT_HUNGARIAN_TECHNICAL 1
523 #define SORT_GEORGIAN_TRADITIONAL 0
524 #define SORT_GEORGIAN_MODERN 1
525 #define MAKELANGID(p,s) ((((WORD)(s))<<10)|(WORD)(p))
526 #define MAKELCID(l,s) ((DWORD)((((DWORD)((WORD)(s)))<<16)|((DWORD)((WORD)(l)))))
527 #define PRIMARYLANGID(l) ((WORD)(l)&0x3ff)
528 #define SORTIDFROMLCID(l) ((WORD)((((DWORD)(l))&NLS_VALID_LOCALE_MASK)>>16))
529 #define SORTVERSIONFROMLCID(l) ((WORD)((((DWORD)(l))>>20)&0xf))
530 #define SUBLANGID(l) ((WORD)(l)>>10)
531 #define LANGIDFROMLCID(l) ((WORD)(l))
532 #define LANG_SYSTEM_DEFAULT MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)
533 #define LANG_USER_DEFAULT MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT)
534 #define LOCALE_NEUTRAL MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT)
535 #define ACL_REVISION 2
536 #define ACL_REVISION_DS 4
537 #define ACL_REVISION1 1
538 #define ACL_REVISION2 2
539 #define ACL_REVISION3 3
540 #define ACL_REVISION4 4
541 #define MIN_ACL_REVISION 2
542 #define MAX_ACL_REVISION 4
543 #define MINCHAR 0x80
544 #define MAXCHAR 0x7f
545 #define MINSHORT 0x8000
546 #define MAXSHORT 0x7fff
547 #define MINLONG 0x80000000
548 #define MAXLONG 0x7fffffff
549 #define MAXBYTE 0xff
550 #define MAXWORD 0xffff
551 #define MAXDWORD 0xffffffff
552 #define PROCESSOR_INTEL_386 386
553 #define PROCESSOR_INTEL_486 486
554 #define PROCESSOR_INTEL_PENTIUM 586
555 #define PROCESSOR_MIPS_R4000 4000
556 #define PROCESSOR_ALPHA_21064 21064
557 #define PROCESSOR_ARCHITECTURE_INTEL 0
558 #define PROCESSOR_ARCHITECTURE_MIPS 1
559 #define PROCESSOR_ARCHITECTURE_ALPHA 2
560 #define PROCESSOR_ARCHITECTURE_PPC 3
561 #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
562 #define PF_FLOATING_POINT_PRECISION_ERRATA 0
563 #define PF_FLOATING_POINT_EMULATED 1
564 #define PF_COMPARE_EXCHANGE_DOUBLE 2
565 #define PF_MMX_INSTRUCTIONS_AVAILABLE 3
566 #define PF_PPC_MOVEMEM_64BIT_OK 4
567 #define PF_ALPHA_BYTE_INSTRUCTIONS 5
568 #define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
569 #define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7
570 #define PF_RDTSC_INSTRUCTION_AVAILABLE 8
571 #define PF_PAE_ENABLED 9
572 #define PAGE_READONLY 2
573 #define PAGE_READWRITE 4
574 #define PAGE_WRITECOPY 8
575 #define FILE_ACTION_ADDED 1
576 #define FILE_ACTION_REMOVED 2
577 #define FILE_ACTION_MODIFIED 3
578 #define FILE_ACTION_RENAMED_OLD_NAME 4
579 #define FILE_ACTION_RENAMED_NEW_NAME 5
580 #define HEAP_NO_SERIALIZE 1
581 #define HEAP_GROWABLE 2
582 #define HEAP_GENERATE_EXCEPTIONS 4
583 #define HEAP_ZERO_MEMORY 8
584 #define HEAP_REALLOC_IN_PLACE_ONLY 16
585 #define HEAP_TAIL_CHECKING_ENABLED 32
586 #define HEAP_FREE_CHECKING_ENABLED 64
587 #define HEAP_DISABLE_COALESCE_ON_FREE 128
588 #define HEAP_CREATE_ALIGN_16 0x0000
589 #define HEAP_CREATE_ENABLE_TRACING 0x20000
590 #define HEAP_MAXIMUM_TAG 0xFFF
591 #define HEAP_PSEUDO_TAG_FLAG 0x8000
592 #define HEAP_TAG_SHIFT 16
593 #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16)))
594 #define KEY_QUERY_VALUE 1
595 #define KEY_SET_VALUE 2
596 #define KEY_CREATE_SUB_KEY 4
597 #define KEY_ENUMERATE_SUB_KEYS 8
598 #define KEY_NOTIFY 16
599 #define KEY_CREATE_LINK 32
600 #define KEY_WRITE 0x20006
601 #define KEY_EXECUTE 0x20019
602 #define KEY_READ 0x20019
603 #define KEY_ALL_ACCESS 0xf003f
604 #define REG_WHOLE_HIVE_VOLATILE 1
605 #define REG_REFRESH_HIVE 2
606 #define REG_NO_LAZY_FLUSH 4
607 #define REG_OPTION_RESERVED 0
608 #define REG_OPTION_NON_VOLATILE 0
609 #define REG_OPTION_VOLATILE 1
610 #define REG_OPTION_CREATE_LINK 2
611 #define REG_OPTION_BACKUP_RESTORE 4
612 #define REG_OPTION_OPEN_LINK 8
613 #define REG_LEGAL_OPTION 15
614 #define OWNER_SECURITY_INFORMATION 1
615 #define GROUP_SECURITY_INFORMATION 2
616 #define DACL_SECURITY_INFORMATION 4
617 #define SACL_SECURITY_INFORMATION 8
618 #define MAXIMUM_PROCESSORS 32
619 #define PAGE_EXECUTE 16
620 #define PAGE_EXECUTE_READ 32
621 #define PAGE_EXECUTE_READWRITE 64
622 #define PAGE_GUARD 256
623 #define PAGE_NOACCESS 1
624 #define PAGE_NOCACHE 512
625 #define MEM_COMMIT 0x1000
626 #define MEM_RESERVE 0x2000
627 #define MEM_DECOMMIT 0x4000
628 #define MEM_RELEASE 0x8000
629 #define MEM_FREE 0x10000
630 #define MEM_PRIVATE 0x20000
631 #define MEM_MAPPED 0x40000
632 #define MEM_RESET 0x80000
633 #define MEM_TOP_DOWN 0x100000
634 #define MEM_WRITE_WATCH 0x200000 /* 98/Me */
635 #define MEM_PHYSICAL 0x400000
636 #define MEM_4MB_PAGES 0x80000000
637 #define MEM_IMAGE 16777216
638 #define SEC_FILE 0x800000
639 #define SEC_IMAGE 0x1000000
640 #define SEC_VLM 0x2000000
641 #define SEC_RESERVE 0x4000000
642 #define SEC_COMMIT 0x8000000
643 #define SEC_NOCACHE 0x10000000
644 #define PAGE_EXECUTE_WRITECOPY 128
645 #define SECTION_EXTEND_SIZE 16
646 #define SECTION_MAP_READ 4
647 #define SECTION_MAP_WRITE 2
648 #define SECTION_QUERY 1
649 #define SECTION_ALL_ACCESS 0xf001f
650 #define MESSAGE_RESOURCE_UNICODE 1
651 #define RTL_CRITSECT_TYPE 0
652 #define RTL_RESOURCE_TYPE 1
653 #define FIELD_OFFSET(t,f) ((LONG)&(((t*)0)->f))
654 #define IMAGE_SIZEOF_FILE_HEADER 20
655 #define IMAGE_FILE_RELOCS_STRIPPED 1
656 #define IMAGE_FILE_EXECUTABLE_IMAGE 2
657 #define IMAGE_FILE_LINE_NUMS_STRIPPED 4
658 #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 8
659 #define IMAGE_FILE_BYTES_REVERSED_LO 128
660 #define IMAGE_FILE_32BIT_MACHINE 256
661 #define IMAGE_FILE_DEBUG_STRIPPED 512
662 #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 1024
663 #define IMAGE_FILE_NET_RUN_FROM_SWAP 2048
664 #define IMAGE_FILE_SYSTEM 4096
665 #define IMAGE_FILE_DLL 8192
666 #define IMAGE_FILE_UP_SYSTEM_ONLY 16384
667 #define IMAGE_FILE_BYTES_REVERSED_HI 32768
668 #define IMAGE_FILE_MACHINE_UNKNOWN 0
669 #define IMAGE_FILE_MACHINE_I386 332
670 #define IMAGE_FILE_MACHINE_R3000 354
671 #define IMAGE_FILE_MACHINE_R4000 358
672 #define IMAGE_FILE_MACHINE_R10000 360
673 #define IMAGE_FILE_MACHINE_ALPHA 388
674 #define IMAGE_FILE_MACHINE_POWERPC 496
675 #define IMAGE_DOS_SIGNATURE 0x5A4D
676 #define IMAGE_OS2_SIGNATURE 0x454E
677 #define IMAGE_OS2_SIGNATURE_LE 0x454C
678 #define IMAGE_VXD_SIGNATURE 0x454C
679 #define IMAGE_NT_SIGNATURE 0x00004550
680 #define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
681 #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
682 #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
683 #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
684 #define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
685 #define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
686 #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224
687 #define IMAGE_SIZEOF_SHORT_NAME 8
688 #define IMAGE_SIZEOF_SECTION_HEADER 40
689 #define IMAGE_SIZEOF_SYMBOL 18
690 #define IMAGE_SIZEOF_AUX_SYMBOL 18
691 #define IMAGE_SIZEOF_RELOCATION 10
692 #define IMAGE_SIZEOF_BASE_RELOCATION 8
693 #define IMAGE_SIZEOF_LINENUMBER 6
694 #define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
695 #define SIZEOF_RFPO_DATA 16
696 #define IMAGE_SUBSYSTEM_UNKNOWN 0
697 #define IMAGE_SUBSYSTEM_NATIVE 1
698 #define IMAGE_SUBSYSTEM_WINDOWS_GUI 2
699 #define IMAGE_SUBSYSTEM_WINDOWS_CUI 3
700 #define IMAGE_SUBSYSTEM_OS2_CUI 5
701 #define IMAGE_SUBSYSTEM_POSIX_CUI 7
702 #define IMAGE_FIRST_SECTION(h) ((PIMAGE_SECTION_HEADER) ((DWORD)h+FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader)+((PIMAGE_NT_HEADERS)(h))->FileHeader.SizeOfOptionalHeader))
703 #define IMAGE_DIRECTORY_ENTRY_EXPORT 0
704 #define IMAGE_DIRECTORY_ENTRY_IMPORT 1
705 #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2
706 #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3
707 #define IMAGE_DIRECTORY_ENTRY_SECURITY 4
708 #define IMAGE_DIRECTORY_ENTRY_BASERELOC 5
709 #define IMAGE_DIRECTORY_ENTRY_DEBUG 6
710 #define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7
711 #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8
712 #define IMAGE_DIRECTORY_ENTRY_TLS 9
713 #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10
714 #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11
715 #define IMAGE_DIRECTORY_ENTRY_IAT 12
716 #define IMAGE_SCN_TYPE_NO_PAD 8
717 #define IMAGE_SCN_CNT_CODE 32
718 #define IMAGE_SCN_CNT_INITIALIZED_DATA 64
719 #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 128
720 #define IMAGE_SCN_LNK_OTHER 256
721 #define IMAGE_SCN_LNK_INFO 512
722 #define IMAGE_SCN_LNK_REMOVE 2048
723 #define IMAGE_SCN_LNK_COMDAT 4096
724 #define IMAGE_SCN_MEM_FARDATA 0x8000
725 #define IMAGE_SCN_MEM_PURGEABLE 0x20000
726 #define IMAGE_SCN_MEM_16BIT 0x20000
727 #define IMAGE_SCN_MEM_LOCKED 0x40000
728 #define IMAGE_SCN_MEM_PRELOAD 0x80000
729 #define IMAGE_SCN_ALIGN_1BYTES 0x100000
730 #define IMAGE_SCN_ALIGN_2BYTES 0x200000
731 #define IMAGE_SCN_ALIGN_4BYTES 0x300000
732 #define IMAGE_SCN_ALIGN_8BYTES 0x400000
733 #define IMAGE_SCN_ALIGN_16BYTES 0x500000
734 #define IMAGE_SCN_ALIGN_32BYTES 0x600000
735 #define IMAGE_SCN_ALIGN_64BYTES 0x700000
736 #define IMAGE_SCN_LNK_NRELOC_OVFL 0x1000000
737 #define IMAGE_SCN_MEM_DISCARDABLE 0x2000000
738 #define IMAGE_SCN_MEM_NOT_CACHED 0x4000000
739 #define IMAGE_SCN_MEM_NOT_PAGED 0x8000000
740 #define IMAGE_SCN_MEM_SHARED 0x10000000
741 #define IMAGE_SCN_MEM_EXECUTE 0x20000000
742 #define IMAGE_SCN_MEM_READ 0x40000000
743 #define IMAGE_SCN_MEM_WRITE 0x80000000
744 #define IMAGE_SYM_UNDEFINED 0
745 #define IMAGE_SYM_ABSOLUTE (-1)
746 #define IMAGE_SYM_DEBUG (-2)
747 #define IMAGE_SYM_TYPE_NULL 0
748 #define IMAGE_SYM_TYPE_VOID 1
749 #define IMAGE_SYM_TYPE_CHAR 2
750 #define IMAGE_SYM_TYPE_SHORT 3
751 #define IMAGE_SYM_TYPE_INT 4
752 #define IMAGE_SYM_TYPE_LONG 5
753 #define IMAGE_SYM_TYPE_FLOAT 6
754 #define IMAGE_SYM_TYPE_DOUBLE 7
755 #define IMAGE_SYM_TYPE_STRUCT 8
756 #define IMAGE_SYM_TYPE_UNION 9
757 #define IMAGE_SYM_TYPE_ENUM 10
758 #define IMAGE_SYM_TYPE_MOE 11
759 #define IMAGE_SYM_TYPE_BYTE 12
760 #define IMAGE_SYM_TYPE_WORD 13
761 #define IMAGE_SYM_TYPE_UINT 14
762 #define IMAGE_SYM_TYPE_DWORD 15
763 #define IMAGE_SYM_TYPE_PCODE 32768
764 #define IMAGE_SYM_DTYPE_NULL 0
765 #define IMAGE_SYM_DTYPE_POINTER 1
766 #define IMAGE_SYM_DTYPE_FUNCTION 2
767 #define IMAGE_SYM_DTYPE_ARRAY 3
768 #define IMAGE_SYM_CLASS_END_OF_FUNCTION (-1)
769 #define IMAGE_SYM_CLASS_NULL 0
770 #define IMAGE_SYM_CLASS_AUTOMATIC 1
771 #define IMAGE_SYM_CLASS_EXTERNAL 2
772 #define IMAGE_SYM_CLASS_STATIC 3
773 #define IMAGE_SYM_CLASS_REGISTER 4
774 #define IMAGE_SYM_CLASS_EXTERNAL_DEF 5
775 #define IMAGE_SYM_CLASS_LABEL 6
776 #define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7
777 #define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8
778 #define IMAGE_SYM_CLASS_ARGUMENT 9
779 #define IMAGE_SYM_CLASS_STRUCT_TAG 10
780 #define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11
781 #define IMAGE_SYM_CLASS_UNION_TAG 12
782 #define IMAGE_SYM_CLASS_TYPE_DEFINITION 13
783 #define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14
784 #define IMAGE_SYM_CLASS_ENUM_TAG 15
785 #define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16
786 #define IMAGE_SYM_CLASS_REGISTER_PARAM 17
787 #define IMAGE_SYM_CLASS_BIT_FIELD 18
788 #define IMAGE_SYM_CLASS_FAR_EXTERNAL 68
789 #define IMAGE_SYM_CLASS_BLOCK 100
790 #define IMAGE_SYM_CLASS_FUNCTION 101
791 #define IMAGE_SYM_CLASS_END_OF_STRUCT 102
792 #define IMAGE_SYM_CLASS_FILE 103
793 #define IMAGE_SYM_CLASS_SECTION 104
794 #define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105
795 #define IMAGE_COMDAT_SELECT_NODUPLICATES 1
796 #define IMAGE_COMDAT_SELECT_ANY 2
797 #define IMAGE_COMDAT_SELECT_SAME_SIZE 3
798 #define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
799 #define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
800 #define IMAGE_COMDAT_SELECT_LARGEST 6
801 #define IMAGE_COMDAT_SELECT_NEWEST 7
802 #define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
803 #define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
804 #define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
805 #define IMAGE_REL_I386_ABSOLUTE 0
806 #define IMAGE_REL_I386_DIR16 1
807 #define IMAGE_REL_I386_REL16 2
808 #define IMAGE_REL_I386_DIR32 6
809 #define IMAGE_REL_I386_DIR32NB 7
810 #define IMAGE_REL_I386_SEG12 9
811 #define IMAGE_REL_I386_SECTION 10
812 #define IMAGE_REL_I386_SECREL 11
813 #define IMAGE_REL_I386_REL32 20
814 #define IMAGE_REL_MIPS_ABSOLUTE 0
815 #define IMAGE_REL_MIPS_REFHALF 1
816 #define IMAGE_REL_MIPS_REFWORD 2
817 #define IMAGE_REL_MIPS_JMPADDR 3
818 #define IMAGE_REL_MIPS_REFHI 4
819 #define IMAGE_REL_MIPS_REFLO 5
820 #define IMAGE_REL_MIPS_GPREL 6
821 #define IMAGE_REL_MIPS_LITERAL 7
822 #define IMAGE_REL_MIPS_SECTION 10
823 #define IMAGE_REL_MIPS_SECREL 11
824 #define IMAGE_REL_MIPS_SECRELLO 12
825 #define IMAGE_REL_MIPS_SECRELHI 13
826 #define IMAGE_REL_MIPS_REFWORDNB 34
827 #define IMAGE_REL_MIPS_PAIR 35
828 #define IMAGE_REL_ALPHA_ABSOLUTE 0
829 #define IMAGE_REL_ALPHA_REFLONG 1
830 #define IMAGE_REL_ALPHA_REFQUAD 2
831 #define IMAGE_REL_ALPHA_GPREL32 3
832 #define IMAGE_REL_ALPHA_LITERAL 4
833 #define IMAGE_REL_ALPHA_LITUSE 5
834 #define IMAGE_REL_ALPHA_GPDISP 6
835 #define IMAGE_REL_ALPHA_BRADDR 7
836 #define IMAGE_REL_ALPHA_HINT 8
837 #define IMAGE_REL_ALPHA_INLINE_REFLONG 9
838 #define IMAGE_REL_ALPHA_REFHI 10
839 #define IMAGE_REL_ALPHA_REFLO 11
840 #define IMAGE_REL_ALPHA_PAIR 12
841 #define IMAGE_REL_ALPHA_MATCH 13
842 #define IMAGE_REL_ALPHA_SECTION 14
843 #define IMAGE_REL_ALPHA_SECREL 15
844 #define IMAGE_REL_ALPHA_REFLONGNB 16
845 #define IMAGE_REL_ALPHA_SECRELLO 17
846 #define IMAGE_REL_ALPHA_SECRELHI 18
847 #define IMAGE_REL_PPC_ABSOLUTE 0
848 #define IMAGE_REL_PPC_ADDR64 1
849 #define IMAGE_REL_PPC_ADDR32 2
850 #define IMAGE_REL_PPC_ADDR24 3
851 #define IMAGE_REL_PPC_ADDR16 4
852 #define IMAGE_REL_PPC_ADDR14 5
853 #define IMAGE_REL_PPC_REL24 6
854 #define IMAGE_REL_PPC_REL14 7
855 #define IMAGE_REL_PPC_TOCREL16 8
856 #define IMAGE_REL_PPC_TOCREL14 9
857 #define IMAGE_REL_PPC_ADDR32NB 10
858 #define IMAGE_REL_PPC_SECREL 11
859 #define IMAGE_REL_PPC_SECTION 12
860 #define IMAGE_REL_PPC_IFGLUE 13
861 #define IMAGE_REL_PPC_IMGLUE 14
862 #define IMAGE_REL_PPC_SECREL16 15
863 #define IMAGE_REL_PPC_REFHI 16
864 #define IMAGE_REL_PPC_REFLO 17
865 #define IMAGE_REL_PPC_PAIR 18
866 #define IMAGE_REL_PPC_TYPEMASK 255
867 #define IMAGE_REL_PPC_NEG 256
868 #define IMAGE_REL_PPC_BRTAKEN 512
869 #define IMAGE_REL_PPC_BRNTAKEN 1024
870 #define IMAGE_REL_PPC_TOCDEFN 2048
871 #define IMAGE_REL_BASED_ABSOLUTE 0
872 #define IMAGE_REL_BASED_HIGH 1
873 #define IMAGE_REL_BASED_LOW 2
874 #define IMAGE_REL_BASED_HIGHLOW 3
875 #define IMAGE_REL_BASED_HIGHADJ 4
876 #define IMAGE_REL_BASED_MIPS_JMPADDR 5
877 #define IMAGE_ARCHIVE_START_SIZE 8
878 #define IMAGE_ARCHIVE_START "!<arch>\n"
879 #define IMAGE_ARCHIVE_END "`\n"
880 #define IMAGE_ARCHIVE_PAD "\n"
881 #define IMAGE_ARCHIVE_LINKER_MEMBER "/ "
882 #define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// "
883 #define IMAGE_ORDINAL_FLAG 0x80000000
884 #define IMAGE_SNAP_BY_ORDINAL(o) ((o&IMAGE_ORDINAL_FLAG)!=0)
885 #define IMAGE_ORDINAL(o) (o&0xffff)
886 #define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000
887 #define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
888 #define IMAGE_DEBUG_TYPE_UNKNOWN 0
889 #define IMAGE_DEBUG_TYPE_COFF 1
890 #define IMAGE_DEBUG_TYPE_CODEVIEW 2
891 #define IMAGE_DEBUG_TYPE_FPO 3
892 #define IMAGE_DEBUG_TYPE_MISC 4
893 #define IMAGE_DEBUG_TYPE_EXCEPTION 5
894 #define IMAGE_DEBUG_TYPE_FIXUP 6
895 #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7
896 #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8
897 #define FRAME_FPO 0
898 #define FRAME_TRAP 1
899 #define FRAME_TSS 2
900 #define FRAME_NONFPO 3
901 #define IMAGE_DEBUG_MISC_EXENAME 1
902 #define N_BTMASK 0x000F
903 #define N_TMASK 0x0030
904 #define N_TMASK1 0x00C0
905 #define N_TMASK2 0x00F0
906 #define N_BTSHFT 4
907 #define N_TSHIFT 2
908 #define IS_TEXT_UNICODE_ASCII16 1
909 #define IS_TEXT_UNICODE_REVERSE_ASCII16 16
910 #define IS_TEXT_UNICODE_STATISTICS 2
911 #define IS_TEXT_UNICODE_REVERSE_STATISTICS 32
912 #define IS_TEXT_UNICODE_CONTROLS 4
913 #define IS_TEXT_UNICODE_REVERSE_CONTROLS 64
914 #define IS_TEXT_UNICODE_SIGNATURE 8
915 #define IS_TEXT_UNICODE_REVERSE_SIGNATURE 128
916 #define IS_TEXT_UNICODE_ILLEGAL_CHARS 256
917 #define IS_TEXT_UNICODE_ODD_LENGTH 512
918 #define IS_TEXT_UNICODE_NULL_BYTES 4096
919 #define IS_TEXT_UNICODE_UNICODE_MASK 15
920 #define IS_TEXT_UNICODE_REVERSE_MASK 240
921 #define IS_TEXT_UNICODE_NOT_UNICODE_MASK 3840
922 #define IS_TEXT_UNICODE_NOT_ASCII_MASK 61440
923 #define SERVICE_KERNEL_DRIVER 1
924 #define SERVICE_FILE_SYSTEM_DRIVER 2
925 #define SERVICE_ADAPTER 4
926 #define SERVICE_RECOGNIZER_DRIVER 8
927 #define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER|SERVICE_FILE_SYSTEM_DRIVER|SERVICE_RECOGNIZER_DRIVER)
928 #define SERVICE_WIN32_OWN_PROCESS 16
929 #define SERVICE_WIN32_SHARE_PROCESS 32
930 #define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS|SERVICE_WIN32_SHARE_PROCESS)
931 #define SERVICE_INTERACTIVE_PROCESS 256
932 #define SERVICE_TYPE_ALL (SERVICE_WIN32|SERVICE_ADAPTER|SERVICE_DRIVER|SERVICE_INTERACTIVE_PROCESS)
933 #define SERVICE_BOOT_START 0
934 #define SERVICE_SYSTEM_START 1
935 #define SERVICE_AUTO_START 2
936 #define SERVICE_DEMAND_START 3
937 #define SERVICE_DISABLED 4
938 #define SERVICE_ERROR_IGNORE 0
939 #define SERVICE_ERROR_NORMAL 1
940 #define SERVICE_ERROR_SEVERE 2
941 #define SERVICE_ERROR_CRITICAL 3
942 #define SE_OWNER_DEFAULTED 1
943 #define SE_GROUP_DEFAULTED 2
944 #define SE_DACL_PRESENT 4
945 #define SE_DACL_DEFAULTED 8
946 #define SE_SACL_PRESENT 16
947 #define SE_SACL_DEFAULTED 32
948 #define SE_DACL_AUTO_INHERIT_REQ 256
949 #define SE_SACL_AUTO_INHERIT_REQ 512
950 #define SE_DACL_AUTO_INHERITED 1024
951 #define SE_SACL_AUTO_INHERITED 2048
952 #define SE_DACL_PROTECTED 4096
953 #define SE_SACL_PROTECTED 8192
954 #define SE_SELF_RELATIVE 0x8000
955 #define SECURITY_DESCRIPTOR_MIN_LENGTH 20
956 #define SECURITY_DESCRIPTOR_REVISION 1
957 #define SECURITY_DESCRIPTOR_REVISION1 1
958 #define SE_PRIVILEGE_ENABLED_BY_DEFAULT 1
959 #define SE_PRIVILEGE_ENABLED 2
960 #define SE_PRIVILEGE_USED_FOR_ACCESS 0x80000000
961 #define PRIVILEGE_SET_ALL_NECESSARY 1
962 #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
963 #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
964 #define SECURITY_DYNAMIC_TRACKING TRUE
965 #define SECURITY_STATIC_TRACKING FALSE
966 #define TOKEN_SOURCE_LENGTH 8
967 #define TOKEN_ADJUST_DEFAULT 128
968 #define TOKEN_ADJUST_GROUPS 64
969 #define TOKEN_ADJUST_PRIVILEGES 32
970 #define TOKEN_ALL_ACCESS 0xf00ff
971 #define TOKEN_ASSIGN_PRIMARY 1
972 #define TOKEN_DUPLICATE 2
973 #define TOKEN_EXECUTE 0x20000
974 #define TOKEN_IMPERSONATE 4
975 #define TOKEN_QUERY 8
976 #define TOKEN_QUERY_SOURCE 16
977 #define TOKEN_READ 0x20008
978 #define TOKEN_WRITE 0x200e0
979 #define DLL_PROCESS_DETACH 0
980 #define DLL_PROCESS_ATTACH 1
981 #define DLL_THREAD_ATTACH 2
982 #define DLL_THREAD_DETACH 3
983 #define DBG_CONTINUE 0x10002
984 #define DBG_TERMINATE_THREAD 0x40010003
985 #define DBG_TERMINATE_PROCESS 0x40010004
986 #define DBG_CONTROL_C 0x40010005
987 #define DBG_CONTROL_BREAK 0x40010008
988 #define DBG_EXCEPTION_NOT_HANDLED 0x80010001
989 #define TAPE_ABSOLUTE_POSITION 0
990 #define TAPE_LOGICAL_POSITION 1
991 #define TAPE_PSEUDO_LOGICAL_POSITION 2
992 #define TAPE_REWIND 0
993 #define TAPE_ABSOLUTE_BLOCK 1
994 #define TAPE_LOGICAL_BLOCK 2
995 #define TAPE_PSEUDO_LOGICAL_BLOCK 3
996 #define TAPE_SPACE_END_OF_DATA 4
997 #define TAPE_SPACE_RELATIVE_BLOCKS 5
998 #define TAPE_SPACE_FILEMARKS 6
999 #define TAPE_SPACE_SEQUENTIAL_FMKS 7
1000 #define TAPE_SPACE_SETMARKS 8
1001 #define TAPE_SPACE_SEQUENTIAL_SMKS 9
1002 #define TAPE_DRIVE_FIXED 1
1003 #define TAPE_DRIVE_SELECT 2
1004 #define TAPE_DRIVE_INITIATOR 4
1005 #define TAPE_DRIVE_ERASE_SHORT 16
1006 #define TAPE_DRIVE_ERASE_LONG 32
1007 #define TAPE_DRIVE_ERASE_BOP_ONLY 64
1008 #define TAPE_DRIVE_ERASE_IMMEDIATE 128
1009 #define TAPE_DRIVE_TAPE_CAPACITY 256
1010 #define TAPE_DRIVE_TAPE_REMAINING 512
1011 #define TAPE_DRIVE_FIXED_BLOCK 1024
1012 #define TAPE_DRIVE_VARIABLE_BLOCK 2048
1013 #define TAPE_DRIVE_WRITE_PROTECT 4096
1014 #define TAPE_DRIVE_EOT_WZ_SIZE 8192
1015 #define TAPE_DRIVE_ECC 0x10000
1016 #define TAPE_DRIVE_COMPRESSION 0x20000
1017 #define TAPE_DRIVE_PADDING 0x40000
1018 #define TAPE_DRIVE_REPORT_SMKS 0x80000
1019 #define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x100000
1020 #define TAPE_DRIVE_GET_LOGICAL_BLK 0x200000
1021 #define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x400000
1022 #define TAPE_DRIVE_EJECT_MEDIA 0x1000000
1023 #define TAPE_DRIVE_CLEAN_REQUESTS 0x2000000
1024 #define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x4000000
1025 #define TAPE_DRIVE_RESERVED_BIT 0x80000000
1026 #define TAPE_DRIVE_LOAD_UNLOAD 0x80000001
1027 #define TAPE_DRIVE_TENSION 0x80000002
1028 #define TAPE_DRIVE_LOCK_UNLOCK 0x80000004
1029 #define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008
1030 #define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010
1031 #define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020
1032 #define TAPE_DRIVE_TENSION_IMMED 0x80000040
1033 #define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080
1034 #define TAPE_DRIVE_SET_ECC 0x80000100
1035 #define TAPE_DRIVE_SET_COMPRESSION 0x80000200
1036 #define TAPE_DRIVE_SET_PADDING 0x80000400
1037 #define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800
1038 #define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000
1039 #define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000
1040 #define TAPE_DRIVE_LOGICAL_BLK 0x80004000
1041 #define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000
1042 #define TAPE_DRIVE_END_OF_DATA 0x80010000
1043 #define TAPE_DRIVE_RELATIVE_BLKS 0x80020000
1044 #define TAPE_DRIVE_FILEMARKS 0x80040000
1045 #define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000
1046 #define TAPE_DRIVE_SETMARKS 0x80100000
1047 #define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000
1048 #define TAPE_DRIVE_REVERSE_POSITION 0x80400000
1049 #define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000
1050 #define TAPE_DRIVE_WRITE_SETMARKS 0x81000000
1051 #define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000
1052 #define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000
1053 #define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000
1054 #define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000
1055 #define TAPE_DRIVE_FORMAT 0xA0000000
1056 #define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000
1057 #define TAPE_DRIVE_HIGH_FEATURES 0x80000000
1058 #define TAPE_FIXED_PARTITIONS 0
1059 #define TAPE_INITIATOR_PARTITIONS 2
1060 #define TAPE_SELECT_PARTITIONS 1
1061 #define TAPE_FILEMARKS 1
1062 #define TAPE_LONG_FILEMARKS 3
1063 #define TAPE_SETMARKS 0
1064 #define TAPE_SHORT_FILEMARKS 2
1065 #define TAPE_ERASE_LONG 1
1066 #define TAPE_ERASE_SHORT 0
1067 #define TAPE_LOAD 0
1068 #define TAPE_UNLOAD 1
1069 #define TAPE_TENSION 2
1070 #define TAPE_LOCK 3
1071 #define TAPE_UNLOCK 4
1072 #define TAPE_FORMAT 5
1073 #define VER_PLATFORM_WIN32s 0
1074 #define VER_PLATFORM_WIN32_WINDOWS 1
1075 #define VER_PLATFORM_WIN32_NT 2
1076 #define VER_NT_WORKSTATION 1
1077 #define VER_NT_DOMAIN_CONTROLLER 2
1078 #define VER_NT_SERVER 3
1079 #define VER_SUITE_SMALLBUSINESS 1
1080 #define VER_SUITE_ENTERPRISE 2
1081 #define VER_SUITE_BACKOFFICE 4
1082 #define VER_SUITE_TERMINAL 16
1083 #define VER_SUITE_SMALLBUSINESS_RESTRICTED 32
1084 #define VER_SUITE_DATACENTER 128
1085 #define VER_SUITE_PERSONAL 512
1086 #define BTYPE(x) ((x)&N_BTMASK)
1087 #define ISPTR(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT))
1088 #define ISFCN(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION<<N_BTSHFT))
1089 #define ISARY(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY<<N_BTSHFT))
1090 #define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG||(x)==IMAGE_SYM_CLASS_UNION_TAG||(x)==IMAGE_SYM_CLASS_ENUM_TAG)
1091 #define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))
1092 #define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
1093 #define TLS_MINIMUM_AVAILABLE 64
1094 #define REPARSE_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
1095 #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer)
1096 #define MAXIMUM_REPARSE_DATA_BUFFER_SIZE 16384
1097 #define IO_REPARSE_TAG_RESERVED_ZERO 0
1098 #define IO_REPARSE_TAG_RESERVED_ONE 1
1099 #define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE
1100 #define IsReparseTagMicrosoft(x) ((x)&0x80000000)
1101 #define IsReparseTagHighLatency(x) ((x)&0x40000000)
1102 #define IsReparseTagNameSurrogate(x) ((x)&0x20000000)
1103 #define IO_REPARSE_TAG_VALID_VALUES 0xE000FFFF
1104 #define IsReparseTagValid(x) (!((x)&~IO_REPARSE_TAG_VALID_VALUES)&&((x)>IO_REPARSE_TAG_RESERVED_RANGE))
1105 #define IO_REPARSE_TAG_SYMBOLIC_LINK IO_REPARSE_TAG_RESERVED_ZERO
1106 #define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003
1107 #ifndef RC_INVOKED
1108 typedef DWORD ACCESS_MASK, *PACCESS_MASK;
1109 #ifndef _GUID_DEFINED /* also defined in basetyps.h */
1110 #define _GUID_DEFINED
1111 typedef struct _GUID {
1112 unsigned long Data1;
1113 unsigned short Data2;
1114 unsigned short Data3;
1115 unsigned char Data4[8];
1116 } GUID, *REFGUID, *LPGUID;
1117 #define SYSTEM_LUID { QuadPart:999 }
1118 #endif /* _GUID_DEFINED */
1119 typedef struct _GENERIC_MAPPING {
1120 ACCESS_MASK GenericRead;
1121 ACCESS_MASK GenericWrite;
1122 ACCESS_MASK GenericExecute;
1123 ACCESS_MASK GenericAll;
1124 } GENERIC_MAPPING, *PGENERIC_MAPPING;
1125 typedef struct _ACE_HEADER {
1126 BYTE AceType;
1127 BYTE AceFlags;
1128 WORD AceSize;
1129 } ACE_HEADER;
1130 typedef struct _ACCESS_ALLOWED_ACE {
1131 ACE_HEADER Header;
1132 ACCESS_MASK Mask;
1133 DWORD SidStart;
1134 } ACCESS_ALLOWED_ACE;
1135 typedef struct _ACCESS_DENIED_ACE {
1136 ACE_HEADER Header;
1137 ACCESS_MASK Mask;
1138 DWORD SidStart;
1139 } ACCESS_DENIED_ACE;
1140 typedef struct _SYSTEM_AUDIT_ACE {
1141 ACE_HEADER Header;
1142 ACCESS_MASK Mask;
1143 DWORD SidStart;
1144 } SYSTEM_AUDIT_ACE;
1145 typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE;
1146 typedef struct _SYSTEM_ALARM_ACE {
1147 ACE_HEADER Header;
1148 ACCESS_MASK Mask;
1149 DWORD SidStart;
1150 } SYSTEM_ALARM_ACE,*PSYSTEM_ALARM_ACE;
1151 typedef struct _ACCESS_ALLOWED_OBJECT_ACE {
1152 ACE_HEADER Header;
1153 ACCESS_MASK Mask;
1154 DWORD Flags;
1155 GUID ObjectType;
1156 GUID InheritedObjectType;
1157 DWORD SidStart;
1158 } ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE;
1159 typedef struct _ACCESS_DENIED_OBJECT_ACE {
1160 ACE_HEADER Header;
1161 ACCESS_MASK Mask;
1162 DWORD Flags;
1163 GUID ObjectType;
1164 GUID InheritedObjectType;
1165 DWORD SidStart;
1166 } ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE;
1167 typedef struct _SYSTEM_AUDIT_OBJECT_ACE {
1168 ACE_HEADER Header;
1169 ACCESS_MASK Mask;
1170 DWORD Flags;
1171 GUID ObjectType;
1172 GUID InheritedObjectType;
1173 DWORD SidStart;
1174 } SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE;
1175 typedef struct _SYSTEM_ALARM_OBJECT_ACE {
1176 ACE_HEADER Header;
1177 ACCESS_MASK Mask;
1178 DWORD Flags;
1179 GUID ObjectType;
1180 GUID InheritedObjectType;
1181 DWORD SidStart;
1182 } SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE;
1183 typedef struct _ACL {
1184 BYTE AclRevision;
1185 BYTE Sbz1;
1186 WORD AclSize;
1187 WORD AceCount;
1188 WORD Sbz2;
1189 } ACL,*PACL;
1190 typedef struct _ACL_REVISION_INFORMATION {
1191 DWORD AclRevision;
1192 } ACL_REVISION_INFORMATION;
1193 typedef struct _ACL_SIZE_INFORMATION {
1194 DWORD AceCount;
1195 DWORD AclBytesInUse;
1196 DWORD AclBytesFree;
1197 } ACL_SIZE_INFORMATION;
1199 /* FIXME: add more machines */
1200 #ifdef _X86_
1201 #define SIZE_OF_80387_REGISTERS 80
1202 #define CONTEXT_i386 0x10000
1203 #define CONTEXT_i486 0x10000
1204 #define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L)
1205 #define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L)
1206 #define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L)
1207 #define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L)
1208 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L)
1209 #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L)
1210 #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)
1211 #define MAXIMUM_SUPPORTED_EXTENSION 512
1212 typedef struct _FLOATING_SAVE_AREA {
1213 DWORD ControlWord;
1214 DWORD StatusWord;
1215 DWORD TagWord;
1216 DWORD ErrorOffset;
1217 DWORD ErrorSelector;
1218 DWORD DataOffset;
1219 DWORD DataSelector;
1220 BYTE RegisterArea[80];
1221 DWORD Cr0NpxState;
1222 } FLOATING_SAVE_AREA;
1223 typedef struct _CONTEXT {
1224 DWORD ContextFlags;
1225 DWORD Dr0;
1226 DWORD Dr1;
1227 DWORD Dr2;
1228 DWORD Dr3;
1229 DWORD Dr6;
1230 DWORD Dr7;
1231 FLOATING_SAVE_AREA FloatSave;
1232 DWORD SegGs;
1233 DWORD SegFs;
1234 DWORD SegEs;
1235 DWORD SegDs;
1236 DWORD Edi;
1237 DWORD Esi;
1238 DWORD Ebx;
1239 DWORD Edx;
1240 DWORD Ecx;
1241 DWORD Eax;
1242 DWORD Ebp;
1243 DWORD Eip;
1244 DWORD SegCs;
1245 DWORD EFlags;
1246 DWORD Esp;
1247 DWORD SegSs;
1248 BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
1249 } CONTEXT;
1250 #elif defined(_PPC_)
1251 #define CONTEXT_CONTROL 1L
1252 #define CONTEXT_FLOATING_POINT 2L
1253 #define CONTEXT_INTEGER 4L
1254 #define CONTEXT_DEBUG_REGISTERS 8L
1255 #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER)
1256 typedef struct {
1257 double Fpr0;
1258 double Fpr1;
1259 double Fpr2;
1260 double Fpr3;
1261 double Fpr4;
1262 double Fpr5;
1263 double Fpr6;
1264 double Fpr7;
1265 double Fpr8;
1266 double Fpr9;
1267 double Fpr10;
1268 double Fpr11;
1269 double Fpr12;
1270 double Fpr13;
1271 double Fpr14;
1272 double Fpr15;
1273 double Fpr16;
1274 double Fpr17;
1275 double Fpr18;
1276 double Fpr19;
1277 double Fpr20;
1278 double Fpr21;
1279 double Fpr22;
1280 double Fpr23;
1281 double Fpr24;
1282 double Fpr25;
1283 double Fpr26;
1284 double Fpr27;
1285 double Fpr28;
1286 double Fpr29;
1287 double Fpr30;
1288 double Fpr31;
1289 double Fpscr;
1290 DWORD Gpr0;
1291 DWORD Gpr1;
1292 DWORD Gpr2;
1293 DWORD Gpr3;
1294 DWORD Gpr4;
1295 DWORD Gpr5;
1296 DWORD Gpr6;
1297 DWORD Gpr7;
1298 DWORD Gpr8;
1299 DWORD Gpr9;
1300 DWORD Gpr10;
1301 DWORD Gpr11;
1302 DWORD Gpr12;
1303 DWORD Gpr13;
1304 DWORD Gpr14;
1305 DWORD Gpr15;
1306 DWORD Gpr16;
1307 DWORD Gpr17;
1308 DWORD Gpr18;
1309 DWORD Gpr19;
1310 DWORD Gpr20;
1311 DWORD Gpr21;
1312 DWORD Gpr22;
1313 DWORD Gpr23;
1314 DWORD Gpr24;
1315 DWORD Gpr25;
1316 DWORD Gpr26;
1317 DWORD Gpr27;
1318 DWORD Gpr28;
1319 DWORD Gpr29;
1320 DWORD Gpr30;
1321 DWORD Gpr31;
1322 DWORD Cr;
1323 DWORD Xer;
1324 DWORD Msr;
1325 DWORD Iar;
1326 DWORD Lr;
1327 DWORD Ctr;
1328 DWORD ContextFlags;
1329 DWORD Fill[3];
1330 DWORD Dr0;
1331 DWORD Dr1;
1332 DWORD Dr2;
1333 DWORD Dr3;
1334 DWORD Dr4;
1335 DWORD Dr5;
1336 DWORD Dr6;
1337 DWORD Dr7;
1338 } CONTEXT;
1339 #elif defined(_ALPHA_)
1340 #define CONTEXT_ALPHA 0x20000
1341 #define CONTEXT_CONTROL (CONTEXT_ALPHA|1L)
1342 #define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA|2L)
1343 #define CONTEXT_INTEGER (CONTEXT_ALPHA|4L)
1344 #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER)
1345 typedef struct _CONTEXT {
1346 ULONGLONG FltF0;
1347 ULONGLONG FltF1;
1348 ULONGLONG FltF2;
1349 ULONGLONG FltF3;
1350 ULONGLONG FltF4;
1351 ULONGLONG FltF5;
1352 ULONGLONG FltF6;
1353 ULONGLONG FltF7;
1354 ULONGLONG FltF8;
1355 ULONGLONG FltF9;
1356 ULONGLONG FltF10;
1357 ULONGLONG FltF11;
1358 ULONGLONG FltF12;
1359 ULONGLONG FltF13;
1360 ULONGLONG FltF14;
1361 ULONGLONG FltF15;
1362 ULONGLONG FltF16;
1363 ULONGLONG FltF17;
1364 ULONGLONG FltF18;
1365 ULONGLONG FltF19;
1366 ULONGLONG FltF20;
1367 ULONGLONG FltF21;
1368 ULONGLONG FltF22;
1369 ULONGLONG FltF23;
1370 ULONGLONG FltF24;
1371 ULONGLONG FltF25;
1372 ULONGLONG FltF26;
1373 ULONGLONG FltF27;
1374 ULONGLONG FltF28;
1375 ULONGLONG FltF29;
1376 ULONGLONG FltF30;
1377 ULONGLONG FltF31;
1378 ULONGLONG IntV0;
1379 ULONGLONG IntT0;
1380 ULONGLONG IntT1;
1381 ULONGLONG IntT2;
1382 ULONGLONG IntT3;
1383 ULONGLONG IntT4;
1384 ULONGLONG IntT5;
1385 ULONGLONG IntT6;
1386 ULONGLONG IntT7;
1387 ULONGLONG IntS0;
1388 ULONGLONG IntS1;
1389 ULONGLONG IntS2;
1390 ULONGLONG IntS3;
1391 ULONGLONG IntS4;
1392 ULONGLONG IntS5;
1393 ULONGLONG IntFp;
1394 ULONGLONG IntA0;
1395 ULONGLONG IntA1;
1396 ULONGLONG IntA2;
1397 ULONGLONG IntA3;
1398 ULONGLONG IntA4;
1399 ULONGLONG IntA5;
1400 ULONGLONG IntT8;
1401 ULONGLONG IntT9;
1402 ULONGLONG IntT10;
1403 ULONGLONG IntT11;
1404 ULONGLONG IntRa;
1405 ULONGLONG IntT12;
1406 ULONGLONG IntAt;
1407 ULONGLONG IntGp;
1408 ULONGLONG IntSp;
1409 ULONGLONG IntZero;
1410 ULONGLONG Fpcr;
1411 ULONGLONG SoftFpcr;
1412 ULONGLONG Fir;
1413 DWORD Psr;
1414 DWORD ContextFlags;
1415 DWORD Fill[4];
1416 } CONTEXT;
1417 #elif defined(SHx)
1419 /* These are the debug or break registers on the SH3 */
1420 typedef struct _DEBUG_REGISTERS {
1421 ULONG BarA;
1422 UCHAR BasrA;
1423 UCHAR BamrA;
1424 USHORT BbrA;
1425 ULONG BarB;
1426 UCHAR BasrB;
1427 UCHAR BamrB;
1428 USHORT BbrB;
1429 ULONG BdrB;
1430 ULONG BdmrB;
1431 USHORT Brcr;
1432 USHORT Align;
1433 } DEBUG_REGISTERS, *PDEBUG_REGISTERS;
1435 /* The following flags control the contents of the CONTEXT structure. */
1437 #define CONTEXT_SH3 0x00000040
1438 #define CONTEXT_SH4 0x000000c0 /* CONTEXT_SH3 | 0x80 - must contain the SH3 bits */
1440 #ifdef SH3
1441 #define CONTEXT_CONTROL (CONTEXT_SH3 | 0x00000001L)
1442 #define CONTEXT_INTEGER (CONTEXT_SH3 | 0x00000002L)
1443 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH3 | 0x00000008L)
1444 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS)
1445 #else /* SH4 */
1446 #define CONTEXT_CONTROL (CONTEXT_SH4 | 0x00000001L)
1447 #define CONTEXT_INTEGER (CONTEXT_SH4 | 0x00000002L)
1448 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH4 | 0x00000008L)
1449 #define CONTEXT_FLOATING_POINT (CONTEXT_SH4 | 0x00000004L)
1450 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS | CONTEXT_FLOATING_POINT)
1451 #endif
1453 /* Context Frame */
1455 /* This frame is used to store a limited processor context into the */
1456 /* Thread structure for CPUs which have no floating point support. */
1458 typedef struct _CONTEXT {
1459 /* The flags values within this flag control the contents of */
1460 /* a CONTEXT record. */
1462 /* If the context record is used as an input parameter, then */
1463 /* for each portion of the context record controlled by a flag */
1464 /* whose value is set, it is assumed that that portion of the */
1465 /* context record contains valid context. If the context record */
1466 /* is being used to modify a thread's context, then only that */
1467 /* portion of the threads context will be modified. */
1469 /* If the context record is used as an IN OUT parameter to capture */
1470 /* the context of a thread, then only those portions of the thread's */
1471 /* context corresponding to set flags will be returned. */
1473 /* The context record is never used as an OUT only parameter. */
1476 ULONG ContextFlags;
1478 /* This section is specified/returned if the ContextFlags word contains */
1479 /* the flag CONTEXT_INTEGER. */
1481 /* N.B. The registers RA and R15 are defined in this section, but are */
1482 /* considered part of the control context rather than part of the integer */
1483 /* context. */
1485 ULONG PR;
1486 ULONG MACH;
1487 ULONG MACL;
1488 ULONG GBR;
1489 ULONG R0;
1490 ULONG R1;
1491 ULONG R2;
1492 ULONG R3;
1493 ULONG R4;
1494 ULONG R5;
1495 ULONG R6;
1496 ULONG R7;
1497 ULONG R8;
1498 ULONG R9;
1499 ULONG R10;
1500 ULONG R11;
1501 ULONG R12;
1502 ULONG R13;
1503 ULONG R14;
1504 ULONG R15;
1506 /* This section is specified/returned if the ContextFlags word contains */
1507 /* the flag CONTEXT_CONTROL. */
1509 /* N.B. The registers r15 and ra are defined in the integer section, */
1510 /* but are considered part of the control context rather than part of */
1511 /* the integer context. */
1513 ULONG Fir;
1514 ULONG Psr;
1516 #if !defined(SH3e) && !defined(SH4)
1517 ULONG OldStuff[2];
1518 DEBUG_REGISTERS DebugRegisters;
1519 #else
1520 ULONG Fpscr;
1521 ULONG Fpul;
1522 ULONG FRegs[16];
1523 #if defined(SH4)
1524 ULONG xFRegs[16];
1525 #endif
1526 #endif
1527 } CONTEXT;
1529 #elif defined(MIPS)
1531 /* The following flags control the contents of the CONTEXT structure. */
1533 #define CONTEXT_R4000 0x00010000 /* r4000 context */
1535 #define CONTEXT_CONTROL (CONTEXT_R4000 | 0x00000001L)
1536 #define CONTEXT_FLOATING_POINT (CONTEXT_R4000 | 0x00000002L)
1537 #define CONTEXT_INTEGER (CONTEXT_R4000 | 0x00000004L)
1539 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
1541 /* Context Frame */
1543 /* N.B. This frame must be exactly a multiple of 16 bytes in length. */
1545 /* This frame has a several purposes: 1) it is used as an argument to */
1546 /* NtContinue, 2) it is used to constuct a call frame for APC delivery, */
1547 /* 3) it is used to construct a call frame for exception dispatching */
1548 /* in user mode, and 4) it is used in the user level thread creation */
1549 /* routines. */
1551 /* The layout of the record conforms to a standard call frame. */
1554 typedef struct _CONTEXT {
1556 /* This section is always present and is used as an argument build */
1557 /* area. */
1559 DWORD Argument[4];
1561 /* This section is specified/returned if the ContextFlags word contains */
1562 /* the flag CONTEXT_FLOATING_POINT. */
1564 DWORD FltF0;
1565 DWORD FltF1;
1566 DWORD FltF2;
1567 DWORD FltF3;
1568 DWORD FltF4;
1569 DWORD FltF5;
1570 DWORD FltF6;
1571 DWORD FltF7;
1572 DWORD FltF8;
1573 DWORD FltF9;
1574 DWORD FltF10;
1575 DWORD FltF11;
1576 DWORD FltF12;
1577 DWORD FltF13;
1578 DWORD FltF14;
1579 DWORD FltF15;
1580 DWORD FltF16;
1581 DWORD FltF17;
1582 DWORD FltF18;
1583 DWORD FltF19;
1584 DWORD FltF20;
1585 DWORD FltF21;
1586 DWORD FltF22;
1587 DWORD FltF23;
1588 DWORD FltF24;
1589 DWORD FltF25;
1590 DWORD FltF26;
1591 DWORD FltF27;
1592 DWORD FltF28;
1593 DWORD FltF29;
1594 DWORD FltF30;
1595 DWORD FltF31;
1597 /* This section is specified/returned if the ContextFlags word contains */
1598 /* the flag CONTEXT_INTEGER. */
1600 /* N.B. The registers gp, sp, and ra are defined in this section, but are */
1601 /* considered part of the control context rather than part of the integer */
1602 /* context. */
1604 /* N.B. Register zero is not stored in the frame. */
1606 DWORD IntZero;
1607 DWORD IntAt;
1608 DWORD IntV0;
1609 DWORD IntV1;
1610 DWORD IntA0;
1611 DWORD IntA1;
1612 DWORD IntA2;
1613 DWORD IntA3;
1614 DWORD IntT0;
1615 DWORD IntT1;
1616 DWORD IntT2;
1617 DWORD IntT3;
1618 DWORD IntT4;
1619 DWORD IntT5;
1620 DWORD IntT6;
1621 DWORD IntT7;
1622 DWORD IntS0;
1623 DWORD IntS1;
1624 DWORD IntS2;
1625 DWORD IntS3;
1626 DWORD IntS4;
1627 DWORD IntS5;
1628 DWORD IntS6;
1629 DWORD IntS7;
1630 DWORD IntT8;
1631 DWORD IntT9;
1632 DWORD IntK0;
1633 DWORD IntK1;
1634 DWORD IntGp;
1635 DWORD IntSp;
1636 DWORD IntS8;
1637 DWORD IntRa;
1638 DWORD IntLo;
1639 DWORD IntHi;
1641 /* This section is specified/returned if the ContextFlags word contains */
1642 /* the flag CONTEXT_FLOATING_POINT. */
1644 DWORD Fsr;
1646 /* This section is specified/returned if the ContextFlags word contains */
1647 /* the flag CONTEXT_CONTROL. */
1649 /* N.B. The registers gp, sp, and ra are defined in the integer section, */
1650 /* but are considered part of the control context rather than part of */
1651 /* the integer context. */
1653 DWORD Fir;
1654 DWORD Psr;
1656 /* The flags values within this flag control the contents of */
1657 /* a CONTEXT record. */
1659 /* If the context record is used as an input parameter, then */
1660 /* for each portion of the context record controlled by a flag */
1661 /* whose value is set, it is assumed that that portion of the */
1662 /* context record contains valid context. If the context record */
1663 /* is being used to modify a thread's context, then only that */
1664 /* portion of the threads context will be modified. */
1666 /* If the context record is used as an IN OUT parameter to capture */
1667 /* the context of a thread, then only those portions of the thread's */
1668 /* context corresponding to set flags will be returned. */
1670 /* The context record is never used as an OUT only parameter. */
1672 DWORD ContextFlags;
1674 DWORD Fill[2];
1676 } CONTEXT;
1677 #elif defined(ARM)
1679 /* The following flags control the contents of the CONTEXT structure. */
1681 #define CONTEXT_ARM 0x0000040
1682 #define CONTEXT_CONTROL (CONTEXT_ARM | 0x00000001L)
1683 #define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002L)
1685 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER)
1687 typedef struct _CONTEXT {
1688 /* The flags values within this flag control the contents of
1689 a CONTEXT record.
1691 If the context record is used as an input parameter, then
1692 for each portion of the context record controlled by a flag
1693 whose value is set, it is assumed that that portion of the
1694 context record contains valid context. If the context record
1695 is being used to modify a thread's context, then only that
1696 portion of the threads context will be modified.
1698 If the context record is used as an IN OUT parameter to capture
1699 the context of a thread, then only those portions of the thread's
1700 context corresponding to set flags will be returned.
1702 The context record is never used as an OUT only parameter. */
1704 ULONG ContextFlags;
1706 /* This section is specified/returned if the ContextFlags word contains
1707 the flag CONTEXT_INTEGER. */
1708 ULONG R0;
1709 ULONG R1;
1710 ULONG R2;
1711 ULONG R3;
1712 ULONG R4;
1713 ULONG R5;
1714 ULONG R6;
1715 ULONG R7;
1716 ULONG R8;
1717 ULONG R9;
1718 ULONG R10;
1719 ULONG R11;
1720 ULONG R12;
1722 ULONG Sp;
1723 ULONG Lr;
1724 ULONG Pc;
1725 ULONG Psr;
1726 } CONTEXT;
1728 #else
1729 #error "undefined processor type"
1730 #endif
1731 typedef CONTEXT *PCONTEXT,*LPCONTEXT;
1732 typedef struct _EXCEPTION_RECORD {
1733 DWORD ExceptionCode;
1734 DWORD ExceptionFlags;
1735 struct _EXCEPTION_RECORD *ExceptionRecord;
1736 PVOID ExceptionAddress;
1737 DWORD NumberParameters;
1738 DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
1739 } EXCEPTION_RECORD,*PEXCEPTION_RECORD;
1740 typedef struct _EXCEPTION_POINTERS {
1741 PEXCEPTION_RECORD ExceptionRecord;
1742 PCONTEXT ContextRecord;
1743 } EXCEPTION_POINTERS,*PEXCEPTION_POINTERS,*LPEXCEPTION_POINTERS;
1744 typedef union _LARGE_INTEGER {
1745 struct {
1746 DWORD LowPart;
1747 LONG HighPart;
1748 } u;
1749 #if ! defined(NONAMELESSUNION) || defined(__cplusplus)
1750 _ANONYMOUS_STRUCT struct {
1751 DWORD LowPart;
1752 LONG HighPart;
1754 #endif /* NONAMELESSUNION */
1755 LONGLONG QuadPart;
1756 } LARGE_INTEGER, *PLARGE_INTEGER;
1757 typedef union _ULARGE_INTEGER {
1758 struct {
1759 DWORD LowPart;
1760 DWORD HighPart;
1761 } u;
1762 #if ! defined(NONAMELESSUNION) || defined(__cplusplus)
1763 _ANONYMOUS_STRUCT struct {
1764 DWORD LowPart;
1765 DWORD HighPart;
1767 #endif /* NONAMELESSUNION */
1768 ULONGLONG QuadPart;
1769 } ULARGE_INTEGER, *PULARGE_INTEGER;
1770 typedef LARGE_INTEGER LUID,*PLUID;
1771 #pragma pack(push,4)
1772 typedef struct _LUID_AND_ATTRIBUTES {
1773 LUID Luid;
1774 DWORD Attributes;
1775 } LUID_AND_ATTRIBUTES;
1776 #pragma pack(pop)
1777 typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
1778 typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
1779 typedef struct _PRIVILEGE_SET {
1780 DWORD PrivilegeCount;
1781 DWORD Control;
1782 LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
1783 } PRIVILEGE_SET,*PPRIVILEGE_SET;
1784 typedef struct _SECURITY_ATTRIBUTES {
1785 DWORD nLength;
1786 LPVOID lpSecurityDescriptor;
1787 BOOL bInheritHandle;
1788 } SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES;
1789 typedef enum _SECURITY_IMPERSONATION_LEVEL {
1790 SecurityAnonymous,
1791 SecurityIdentification,
1792 SecurityImpersonation,
1793 SecurityDelegation
1794 } SECURITY_IMPERSONATION_LEVEL;
1795 typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE;
1796 typedef struct _SECURITY_QUALITY_OF_SERVICE {
1797 DWORD Length;
1798 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
1799 SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
1800 BOOLEAN EffectiveOnly;
1801 } SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE;
1802 typedef PVOID PACCESS_TOKEN;
1803 typedef struct _SE_IMPERSONATION_STATE {
1804 PACCESS_TOKEN Token;
1805 BOOLEAN CopyOnOpen;
1806 BOOLEAN EffectiveOnly;
1807 SECURITY_IMPERSONATION_LEVEL Level;
1808 } SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE;
1809 typedef struct _SID_IDENTIFIER_AUTHORITY {
1810 BYTE Value[6];
1811 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
1812 typedef PVOID PSID;
1813 typedef struct _SID {
1814 BYTE Revision;
1815 BYTE SubAuthorityCount;
1816 SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
1817 DWORD SubAuthority[ANYSIZE_ARRAY];
1818 } SID, *PISID;
1819 typedef struct _SID_AND_ATTRIBUTES {
1820 PSID Sid;
1821 DWORD Attributes;
1822 } SID_AND_ATTRIBUTES;
1823 typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
1824 typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
1825 typedef struct _TOKEN_SOURCE {
1826 CHAR SourceName[TOKEN_SOURCE_LENGTH];
1827 LUID SourceIdentifier;
1828 } TOKEN_SOURCE,*PTOKEN_SOURCE;
1829 typedef struct _TOKEN_CONTROL {
1830 LUID TokenId;
1831 LUID AuthenticationId;
1832 LUID ModifiedId;
1833 TOKEN_SOURCE TokenSource;
1834 } TOKEN_CONTROL,*PTOKEN_CONTROL;
1835 typedef struct _TOKEN_DEFAULT_DACL {
1836 PACL DefaultDacl;
1837 } TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL;
1838 typedef struct _TOKEN_GROUPS {
1839 DWORD GroupCount;
1840 SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
1841 } TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS;
1842 typedef struct _TOKEN_OWNER {
1843 PSID Owner;
1844 } TOKEN_OWNER,*PTOKEN_OWNER;
1845 typedef struct _TOKEN_PRIMARY_GROUP {
1846 PSID PrimaryGroup;
1847 } TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP;
1848 typedef struct _TOKEN_PRIVILEGES {
1849 DWORD PrivilegeCount;
1850 LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
1851 } TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES;
1852 typedef enum tagTOKEN_TYPE { TokenPrimary=1,TokenImpersonation }TOKEN_TYPE;
1853 typedef struct _TOKEN_STATISTICS {
1854 LUID TokenId;
1855 LUID AuthenticationId;
1856 LARGE_INTEGER ExpirationTime;
1857 TOKEN_TYPE TokenType;
1858 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
1859 DWORD DynamicCharged;
1860 DWORD DynamicAvailable;
1861 DWORD GroupCount;
1862 DWORD PrivilegeCount;
1863 LUID ModifiedId;
1864 } TOKEN_STATISTICS;
1865 typedef struct _TOKEN_USER {
1866 SID_AND_ATTRIBUTES User;
1867 } TOKEN_USER, *PTOKEN_USER;
1868 typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION;
1869 typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL;
1870 typedef struct _SECURITY_DESCRIPTOR {
1871 BYTE Revision;
1872 BYTE Sbz1;
1873 SECURITY_DESCRIPTOR_CONTROL Control;
1874 PSID Owner;
1875 PSID Group;
1876 PACL Sacl;
1877 PACL Dacl;
1878 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
1879 typedef enum _TOKEN_INFORMATION_CLASS {
1880 TokenUser=1,TokenGroups,TokenPrivileges,TokenOwner,
1881 TokenPrimaryGroup,TokenDefaultDacl,TokenSource,TokenType,
1882 TokenImpersonationLevel,TokenStatistics,TokenRestrictedSids,
1883 TokenSessionId
1884 } TOKEN_INFORMATION_CLASS;
1885 typedef enum _SID_NAME_USE {
1886 SidTypeUser=1,SidTypeGroup,SidTypeDomain,SidTypeAlias,SidTypeWellKnownGroup,
1887 SidTypeDeletedAccount,SidTypeInvalid,SidTypeUnknown
1888 } SID_NAME_USE,*PSID_NAME_USE;
1889 typedef struct _QUOTA_LIMITS {
1890 SIZE_T PagedPoolLimit;
1891 SIZE_T NonPagedPoolLimit;
1892 SIZE_T MinimumWorkingSetSize;
1893 SIZE_T MaximumWorkingSetSize;
1894 SIZE_T PagefileLimit;
1895 LARGE_INTEGER TimeLimit;
1896 } QUOTA_LIMITS,*PQUOTA_LIMITS;
1897 typedef struct _IO_COUNTERS {
1898 ULONGLONG ReadOperationCount;
1899 ULONGLONG WriteOperationCount;
1900 ULONGLONG OtherOperationCount;
1901 ULONGLONG ReadTransferCount;
1902 ULONGLONG WriteTransferCount;
1903 ULONGLONG OtherTransferCount;
1904 } IO_COUNTERS, *PIO_COUNTERS;
1905 typedef struct _FILE_NOTIFY_INFORMATION {
1906 DWORD NextEntryOffset;
1907 DWORD Action;
1908 DWORD FileNameLength;
1909 WCHAR FileName[1];
1910 } FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION;
1911 typedef struct _TAPE_ERASE {
1912 DWORD Type;
1913 BOOLEAN Immediate;
1914 } TAPE_ERASE,*PTAPE_ERASE;
1915 typedef struct _TAPE_GET_DRIVE_PARAMETERS {
1916 BOOLEAN ECC;
1917 BOOLEAN Compression;
1918 BOOLEAN DataPadding;
1919 BOOLEAN ReportSetmarks;
1920 DWORD DefaultBlockSize;
1921 DWORD MaximumBlockSize;
1922 DWORD MinimumBlockSize;
1923 DWORD MaximumPartitionCount;
1924 DWORD FeaturesLow;
1925 DWORD FeaturesHigh;
1926 DWORD EOTWarningZoneSize;
1927 } TAPE_GET_DRIVE_PARAMETERS,*PTAPE_GET_DRIVE_PARAMETERS;
1928 typedef struct _TAPE_GET_MEDIA_PARAMETERS {
1929 LARGE_INTEGER Capacity;
1930 LARGE_INTEGER Remaining;
1931 DWORD BlockSize;
1932 DWORD PartitionCount;
1933 BOOLEAN WriteProtected;
1934 } TAPE_GET_MEDIA_PARAMETERS,*PTAPE_GET_MEDIA_PARAMETERS;
1935 typedef struct _TAPE_GET_POSITION {
1936 ULONG Type;
1937 ULONG Partition;
1938 ULONG OffsetLow;
1939 ULONG OffsetHigh;
1940 } TAPE_GET_POSITION,*PTAPE_GET_POSITION;
1941 typedef struct _TAPE_PREPARE {
1942 DWORD Operation;
1943 BOOLEAN Immediate;
1944 } TAPE_PREPARE,*PTAPE_PREPARE;
1945 typedef struct _TAPE_SET_DRIVE_PARAMETERS {
1946 BOOLEAN ECC;
1947 BOOLEAN Compression;
1948 BOOLEAN DataPadding;
1949 BOOLEAN ReportSetmarks;
1950 ULONG EOTWarningZoneSize;
1951 } TAPE_SET_DRIVE_PARAMETERS,*PTAPE_SET_DRIVE_PARAMETERS;
1952 typedef struct _TAPE_SET_MEDIA_PARAMETERS {
1953 ULONG BlockSize;
1954 } TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS;
1955 typedef struct _TAPE_SET_POSITION {
1956 DWORD Method;
1957 DWORD Partition;
1958 LARGE_INTEGER Offset;
1959 BOOLEAN Immediate;
1960 } TAPE_SET_POSITION,*PTAPE_SET_POSITION;
1961 typedef struct _TAPE_WRITE_MARKS {
1962 DWORD Type;
1963 DWORD Count;
1964 BOOLEAN Immediate;
1965 } TAPE_WRITE_MARKS,*PTAPE_WRITE_MARKS;
1966 typedef struct _TAPE_CREATE_PARTITION {
1967 DWORD Method;
1968 DWORD Count;
1969 DWORD Size;
1970 } TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION;
1971 typedef struct _MEMORY_BASIC_INFORMATION {
1972 PVOID BaseAddress;
1973 PVOID AllocationBase;
1974 DWORD AllocationProtect;
1975 DWORD RegionSize;
1976 DWORD State;
1977 DWORD Protect;
1978 DWORD Type;
1979 } MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;
1980 typedef struct _MESSAGE_RESOURCE_ENTRY {
1981 WORD Length;
1982 WORD Flags;
1983 BYTE Text[1];
1984 } MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY;
1985 typedef struct _MESSAGE_RESOURCE_BLOCK {
1986 DWORD LowId;
1987 DWORD HighId;
1988 DWORD OffsetToEntries;
1989 } MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK;
1990 typedef struct _MESSAGE_RESOURCE_DATA {
1991 DWORD NumberOfBlocks;
1992 MESSAGE_RESOURCE_BLOCK Blocks[1];
1993 } MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA;
1994 typedef struct _LIST_ENTRY {
1995 struct _LIST_ENTRY *Flink;
1996 struct _LIST_ENTRY *Blink;
1997 } LIST_ENTRY,*PLIST_ENTRY;
1998 typedef struct _RTL_CRITICAL_SECTION_DEBUG {
1999 WORD Type;
2000 WORD CreatorBackTraceIndex;
2001 struct _RTL_CRITICAL_SECTION *CriticalSection;
2002 LIST_ENTRY ProcessLocksList;
2003 DWORD EntryCount;
2004 DWORD ContentionCount;
2005 DWORD Spare[2];
2006 } RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG;
2007 typedef struct _RTL_CRITICAL_SECTION {
2008 PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
2009 LONG LockCount;
2010 LONG RecursionCount;
2011 HANDLE OwningThread;
2012 HANDLE LockSemaphore;
2013 DWORD Reserved;
2014 } RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
2015 typedef struct _EVENTLOGRECORD {
2016 DWORD Length;
2017 DWORD Reserved;
2018 DWORD RecordNumber;
2019 DWORD TimeGenerated;
2020 DWORD TimeWritten;
2021 DWORD EventID;
2022 WORD EventType;
2023 WORD NumStrings;
2024 WORD EventCategory;
2025 WORD ReservedFlags;
2026 DWORD ClosingRecordNumber;
2027 DWORD StringOffset;
2028 DWORD UserSidLength;
2029 DWORD UserSidOffset;
2030 DWORD DataLength;
2031 DWORD DataOffset;
2032 } EVENTLOGRECORD,*PEVENTLOGRECORD;
2033 typedef struct _OSVERSIONINFOA {
2034 DWORD dwOSVersionInfoSize;
2035 DWORD dwMajorVersion;
2036 DWORD dwMinorVersion;
2037 DWORD dwBuildNumber;
2038 DWORD dwPlatformId;
2039 CHAR szCSDVersion[128];
2040 } OSVERSIONINFOA,*POSVERSIONINFOA,*LPOSVERSIONINFOA;
2041 typedef struct _OSVERSIONINFOW {
2042 DWORD dwOSVersionInfoSize;
2043 DWORD dwMajorVersion;
2044 DWORD dwMinorVersion;
2045 DWORD dwBuildNumber;
2046 DWORD dwPlatformId;
2047 WCHAR szCSDVersion[128];
2048 } OSVERSIONINFOW,*POSVERSIONINFOW,*LPOSVERSIONINFOW;
2049 typedef struct _OSVERSIONINFOEXA {
2050 DWORD dwOSVersionInfoSize;
2051 DWORD dwMajorVersion;
2052 DWORD dwMinorVersion;
2053 DWORD dwBuildNumber;
2054 DWORD dwPlatformId;
2055 CHAR szCSDVersion[128];
2056 WORD wServicePackMajor;
2057 WORD wServicePackMinor;
2058 WORD wSuiteMask;
2059 BYTE wProductType;
2060 BYTE wReserved;
2061 } OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
2062 typedef struct _OSVERSIONINFOEXW {
2063 DWORD dwOSVersionInfoSize;
2064 DWORD dwMajorVersion;
2065 DWORD dwMinorVersion;
2066 DWORD dwBuildNumber;
2067 DWORD dwPlatformId;
2068 WCHAR szCSDVersion[128];
2069 WORD wServicePackMajor;
2070 WORD wServicePackMinor;
2071 WORD wSuiteMask;
2072 BYTE wProductType;
2073 BYTE wReserved;
2074 } OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW;
2075 #pragma pack(push,2)
2076 typedef struct _IMAGE_VXD_HEADER {
2077 WORD e32_magic;
2078 BYTE e32_border;
2079 BYTE e32_worder;
2080 DWORD e32_level;
2081 WORD e32_cpu;
2082 WORD e32_os;
2083 DWORD e32_ver;
2084 DWORD e32_mflags;
2085 DWORD e32_mpages;
2086 DWORD e32_startobj;
2087 DWORD e32_eip;
2088 DWORD e32_stackobj;
2089 DWORD e32_esp;
2090 DWORD e32_pagesize;
2091 DWORD e32_lastpagesize;
2092 DWORD e32_fixupsize;
2093 DWORD e32_fixupsum;
2094 DWORD e32_ldrsize;
2095 DWORD e32_ldrsum;
2096 DWORD e32_objtab;
2097 DWORD e32_objcnt;
2098 DWORD e32_objmap;
2099 DWORD e32_itermap;
2100 DWORD e32_rsrctab;
2101 DWORD e32_rsrccnt;
2102 DWORD e32_restab;
2103 DWORD e32_enttab;
2104 DWORD e32_dirtab;
2105 DWORD e32_dircnt;
2106 DWORD e32_fpagetab;
2107 DWORD e32_frectab;
2108 DWORD e32_impmod;
2109 DWORD e32_impmodcnt;
2110 DWORD e32_impproc;
2111 DWORD e32_pagesum;
2112 DWORD e32_datapage;
2113 DWORD e32_preload;
2114 DWORD e32_nrestab;
2115 DWORD e32_cbnrestab;
2116 DWORD e32_nressum;
2117 DWORD e32_autodata;
2118 DWORD e32_debuginfo;
2119 DWORD e32_debuglen;
2120 DWORD e32_instpreload;
2121 DWORD e32_instdemand;
2122 DWORD e32_heapsize;
2123 BYTE e32_res3[12];
2124 DWORD e32_winresoff;
2125 DWORD e32_winreslen;
2126 WORD e32_devid;
2127 WORD e32_ddkver;
2128 } IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER;
2129 #pragma pack(pop)
2130 #pragma pack(push,4)
2131 typedef struct _IMAGE_FILE_HEADER {
2132 WORD Machine;
2133 WORD NumberOfSections;
2134 DWORD TimeDateStamp;
2135 DWORD PointerToSymbolTable;
2136 DWORD NumberOfSymbols;
2137 WORD SizeOfOptionalHeader;
2138 WORD Characteristics;
2139 } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
2140 typedef struct _IMAGE_DATA_DIRECTORY {
2141 DWORD VirtualAddress;
2142 DWORD Size;
2143 } IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;
2144 typedef struct _IMAGE_OPTIONAL_HEADER {
2145 WORD Magic;
2146 BYTE MajorLinkerVersion;
2147 BYTE MinorLinkerVersion;
2148 DWORD SizeOfCode;
2149 DWORD SizeOfInitializedData;
2150 DWORD SizeOfUninitializedData;
2151 DWORD AddressOfEntryPoint;
2152 DWORD BaseOfCode;
2153 DWORD BaseOfData;
2154 DWORD ImageBase;
2155 DWORD SectionAlignment;
2156 DWORD FileAlignment;
2157 WORD MajorOperatingSystemVersion;
2158 WORD MinorOperatingSystemVersion;
2159 WORD MajorImageVersion;
2160 WORD MinorImageVersion;
2161 WORD MajorSubsystemVersion;
2162 WORD MinorSubsystemVersion;
2163 DWORD Reserved1;
2164 DWORD SizeOfImage;
2165 DWORD SizeOfHeaders;
2166 DWORD CheckSum;
2167 WORD Subsystem;
2168 WORD DllCharacteristics;
2169 DWORD SizeOfStackReserve;
2170 DWORD SizeOfStackCommit;
2171 DWORD SizeOfHeapReserve;
2172 DWORD SizeOfHeapCommit;
2173 DWORD LoaderFlags;
2174 DWORD NumberOfRvaAndSizes;
2175 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
2176 } IMAGE_OPTIONAL_HEADER,*PIMAGE_OPTIONAL_HEADER;
2177 typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
2178 WORD Magic;
2179 BYTE MajorLinkerVersion;
2180 BYTE MinorLinkerVersion;
2181 DWORD SizeOfCode;
2182 DWORD SizeOfInitializedData;
2183 DWORD SizeOfUninitializedData;
2184 DWORD AddressOfEntryPoint;
2185 DWORD BaseOfCode;
2186 DWORD BaseOfData;
2187 DWORD BaseOfBss;
2188 DWORD GprMask;
2189 DWORD CprMask[4];
2190 DWORD GpValue;
2191 } IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER;
2192 #pragma pack(pop)
2193 #pragma pack(push,2)
2194 typedef struct _IMAGE_DOS_HEADER {
2195 WORD e_magic;
2196 WORD e_cblp;
2197 WORD e_cp;
2198 WORD e_crlc;
2199 WORD e_cparhdr;
2200 WORD e_minalloc;
2201 WORD e_maxalloc;
2202 WORD e_ss;
2203 WORD e_sp;
2204 WORD e_csum;
2205 WORD e_ip;
2206 WORD e_cs;
2207 WORD e_lfarlc;
2208 WORD e_ovno;
2209 WORD e_res[4];
2210 WORD e_oemid;
2211 WORD e_oeminfo;
2212 WORD e_res2[10];
2213 LONG e_lfanew;
2214 } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
2215 typedef struct _IMAGE_OS2_HEADER {
2216 WORD ne_magic;
2217 CHAR ne_ver;
2218 CHAR ne_rev;
2219 WORD ne_enttab;
2220 WORD ne_cbenttab;
2221 LONG ne_crc;
2222 WORD ne_flags;
2223 WORD ne_autodata;
2224 WORD ne_heap;
2225 WORD ne_stack;
2226 LONG ne_csip;
2227 LONG ne_sssp;
2228 WORD ne_cseg;
2229 WORD ne_cmod;
2230 WORD ne_cbnrestab;
2231 WORD ne_segtab;
2232 WORD ne_rsrctab;
2233 WORD ne_restab;
2234 WORD ne_modtab;
2235 WORD ne_imptab;
2236 LONG ne_nrestab;
2237 WORD ne_cmovent;
2238 WORD ne_align;
2239 WORD ne_cres;
2240 BYTE ne_exetyp;
2241 BYTE ne_flagsothers;
2242 WORD ne_pretthunks;
2243 WORD ne_psegrefbytes;
2244 WORD ne_swaparea;
2245 WORD ne_expver;
2246 } IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER;
2247 #pragma pack(pop)
2248 #pragma pack(push,4)
2249 typedef struct _IMAGE_NT_HEADERS {
2250 DWORD Signature;
2251 IMAGE_FILE_HEADER FileHeader;
2252 IMAGE_OPTIONAL_HEADER OptionalHeader;
2253 } IMAGE_NT_HEADERS,*PIMAGE_NT_HEADERS;
2254 typedef struct _IMAGE_ROM_HEADERS {
2255 IMAGE_FILE_HEADER FileHeader;
2256 IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
2257 } IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS;
2258 typedef struct _IMAGE_SECTION_HEADER {
2259 BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
2260 union {
2261 DWORD PhysicalAddress;
2262 DWORD VirtualSize;
2263 } Misc;
2264 DWORD VirtualAddress;
2265 DWORD SizeOfRawData;
2266 DWORD PointerToRawData;
2267 DWORD PointerToRelocations;
2268 DWORD PointerToLinenumbers;
2269 WORD NumberOfRelocations;
2270 WORD NumberOfLinenumbers;
2271 DWORD Characteristics;
2272 } IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
2273 #pragma pack(pop)
2274 #pragma pack(push,2)
2275 typedef struct _IMAGE_SYMBOL {
2276 union {
2277 BYTE ShortName[8];
2278 struct {
2279 DWORD Short;
2280 DWORD Long;
2281 } Name;
2282 PBYTE LongName[2];
2283 } N;
2284 DWORD Value;
2285 SHORT SectionNumber;
2286 WORD Type;
2287 BYTE StorageClass;
2288 BYTE NumberOfAuxSymbols;
2289 } IMAGE_SYMBOL,*PIMAGE_SYMBOL;
2290 typedef union _IMAGE_AUX_SYMBOL {
2291 struct {
2292 DWORD TagIndex;
2293 union {
2294 struct {
2295 WORD Linenumber;
2296 WORD Size;
2297 } LnSz;
2298 DWORD TotalSize;
2299 } Misc;
2300 union {
2301 struct {
2302 DWORD PointerToLinenumber;
2303 DWORD PointerToNextFunction;
2304 } Function;
2305 struct {
2306 WORD Dimension[4];
2307 } Array;
2308 } FcnAry;
2309 WORD TvIndex;
2310 } Sym;
2311 struct {
2312 BYTE Name[IMAGE_SIZEOF_SYMBOL];
2313 } File;
2314 struct {
2315 DWORD Length;
2316 WORD NumberOfRelocations;
2317 WORD NumberOfLinenumbers;
2318 DWORD CheckSum;
2319 SHORT Number;
2320 BYTE Selection;
2321 } Section;
2322 } IMAGE_AUX_SYMBOL,*PIMAGE_AUX_SYMBOL;
2323 typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
2324 DWORD NumberOfSymbols;
2325 DWORD LvaToFirstSymbol;
2326 DWORD NumberOfLinenumbers;
2327 DWORD LvaToFirstLinenumber;
2328 DWORD RvaToFirstByteOfCode;
2329 DWORD RvaToLastByteOfCode;
2330 DWORD RvaToFirstByteOfData;
2331 DWORD RvaToLastByteOfData;
2332 } IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER;
2333 typedef struct _IMAGE_RELOCATION {
2334 _ANONYMOUS_UNION union {
2335 DWORD VirtualAddress;
2336 DWORD RelocCount;
2337 } DUMMYUNIONNAME;
2338 DWORD SymbolTableIndex;
2339 WORD Type;
2340 } IMAGE_RELOCATION,*PIMAGE_RELOCATION;
2341 #pragma pack(pop)
2342 #pragma pack(push,4)
2343 typedef struct _IMAGE_BASE_RELOCATION {
2344 DWORD VirtualAddress;
2345 DWORD SizeOfBlock;
2346 } IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
2347 #pragma pack(pop)
2348 #pragma pack(push,2)
2349 typedef struct _IMAGE_LINENUMBER {
2350 union {
2351 DWORD SymbolTableIndex;
2352 DWORD VirtualAddress;
2353 } Type;
2354 WORD Linenumber;
2355 } IMAGE_LINENUMBER,*PIMAGE_LINENUMBER;
2356 #pragma pack(pop)
2357 #pragma pack(push,4)
2358 typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
2359 BYTE Name[16];
2360 BYTE Date[12];
2361 BYTE UserID[6];
2362 BYTE GroupID[6];
2363 BYTE Mode[8];
2364 BYTE Size[10];
2365 BYTE EndHeader[2];
2366 } IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER;
2367 typedef struct _IMAGE_EXPORT_DIRECTORY {
2368 DWORD Characteristics;
2369 DWORD TimeDateStamp;
2370 WORD MajorVersion;
2371 WORD MinorVersion;
2372 DWORD Name;
2373 DWORD Base;
2374 DWORD NumberOfFunctions;
2375 DWORD NumberOfNames;
2376 PDWORD *AddressOfFunctions;
2377 PDWORD *AddressOfNames;
2378 PWORD *AddressOfNameOrdinals;
2379 } IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
2380 typedef struct _IMAGE_IMPORT_BY_NAME {
2381 WORD Hint;
2382 BYTE Name[1];
2383 } IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;
2384 typedef struct _IMAGE_THUNK_DATA {
2385 union {
2386 PBYTE ForwarderString;
2387 PDWORD Function;
2388 DWORD Ordinal;
2389 PIMAGE_IMPORT_BY_NAME AddressOfData;
2390 } u1;
2391 } IMAGE_THUNK_DATA,*PIMAGE_THUNK_DATA;
2392 typedef struct _IMAGE_IMPORT_DESCRIPTOR {
2393 _ANONYMOUS_UNION union {
2394 DWORD Characteristics;
2395 PIMAGE_THUNK_DATA OriginalFirstThunk;
2396 } DUMMYUNIONNAME;
2397 DWORD TimeDateStamp;
2398 DWORD ForwarderChain;
2399 DWORD Name;
2400 PIMAGE_THUNK_DATA FirstThunk;
2401 } IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR;
2402 typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR {
2403 DWORD TimeDateStamp;
2404 WORD OffsetModuleName;
2405 WORD NumberOfModuleForwarderRefs;
2406 } IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR;
2407 typedef struct _IMAGE_BOUND_FORWARDER_REF {
2408 DWORD TimeDateStamp;
2409 WORD OffsetModuleName;
2410 WORD Reserved;
2411 } IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF;
2412 typedef void(NTAPI *PIMAGE_TLS_CALLBACK)(PVOID,DWORD,PVOID);
2413 typedef struct _IMAGE_TLS_DIRECTORY {
2414 DWORD StartAddressOfRawData;
2415 DWORD EndAddressOfRawData;
2416 PDWORD AddressOfIndex;
2417 PIMAGE_TLS_CALLBACK *AddressOfCallBacks;
2418 DWORD SizeOfZeroFill;
2419 DWORD Characteristics;
2420 } IMAGE_TLS_DIRECTORY,*PIMAGE_TLS_DIRECTORY;
2421 typedef struct _IMAGE_RESOURCE_DIRECTORY {
2422 DWORD Characteristics;
2423 DWORD TimeDateStamp;
2424 WORD MajorVersion;
2425 WORD MinorVersion;
2426 WORD NumberOfNamedEntries;
2427 WORD NumberOfIdEntries;
2428 } IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY;
2429 _ANONYMOUS_STRUCT typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
2430 _ANONYMOUS_UNION union {
2431 _ANONYMOUS_STRUCT struct {
2432 DWORD NameOffset:31;
2433 DWORD NameIsString:1;
2434 }DUMMYSTRUCTNAME;
2435 DWORD Name;
2436 WORD Id;
2437 } DUMMYUNIONNAME;
2438 _ANONYMOUS_UNION union {
2439 DWORD OffsetToData;
2440 _ANONYMOUS_STRUCT struct {
2441 DWORD OffsetToDirectory:31;
2442 DWORD DataIsDirectory:1;
2443 } DUMMYSTRUCTNAME2;
2444 } DUMMYUNIONNAME2;
2445 } IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY;
2446 typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
2447 WORD Length;
2448 CHAR NameString[1];
2449 } IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING;
2450 typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
2451 WORD Length;
2452 WCHAR NameString[1];
2453 } IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U;
2454 typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
2455 DWORD OffsetToData;
2456 DWORD Size;
2457 DWORD CodePage;
2458 DWORD Reserved;
2459 } IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY;
2460 typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY {
2461 DWORD Characteristics;
2462 DWORD TimeDateStamp;
2463 WORD MajorVersion;
2464 WORD MinorVersion;
2465 DWORD GlobalFlagsClear;
2466 DWORD GlobalFlagsSet;
2467 DWORD CriticalSectionDefaultTimeout;
2468 DWORD DeCommitFreeBlockThreshold;
2469 DWORD DeCommitTotalFreeThreshold;
2470 PVOID LockPrefixTable;
2471 DWORD MaximumAllocationSize;
2472 DWORD VirtualMemoryThreshold;
2473 DWORD ProcessHeapFlags;
2474 DWORD Reserved[4];
2475 } IMAGE_LOAD_CONFIG_DIRECTORY,*PIMAGE_LOAD_CONFIG_DIRECTORY;
2476 typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
2477 DWORD BeginAddress;
2478 DWORD EndAddress;
2479 PVOID ExceptionHandler;
2480 PVOID HandlerData;
2481 DWORD PrologEndAddress;
2482 } IMAGE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_RUNTIME_FUNCTION_ENTRY;
2483 typedef struct _IMAGE_DEBUG_DIRECTORY {
2484 DWORD Characteristics;
2485 DWORD TimeDateStamp;
2486 WORD MajorVersion;
2487 WORD MinorVersion;
2488 DWORD Type;
2489 DWORD SizeOfData;
2490 DWORD AddressOfRawData;
2491 DWORD PointerToRawData;
2492 } IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY;
2493 typedef struct _FPO_DATA {
2494 DWORD ulOffStart;
2495 DWORD cbProcSize;
2496 DWORD cdwLocals;
2497 WORD cdwParams;
2498 WORD cbProlog:8;
2499 WORD cbRegs:3;
2500 WORD fHasSEH:1;
2501 WORD fUseBP:1;
2502 WORD reserved:1;
2503 WORD cbFrame:2;
2504 } FPO_DATA,*PFPO_DATA;
2505 typedef struct _IMAGE_DEBUG_MISC {
2506 DWORD DataType;
2507 DWORD Length;
2508 BOOLEAN Unicode;
2509 BYTE Reserved[3];
2510 BYTE Data[1];
2511 } IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC;
2512 typedef struct _IMAGE_FUNCTION_ENTRY {
2513 DWORD StartingAddress;
2514 DWORD EndingAddress;
2515 DWORD EndOfPrologue;
2516 } IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY;
2517 typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
2518 WORD Signature;
2519 WORD Flags;
2520 WORD Machine;
2521 WORD Characteristics;
2522 DWORD TimeDateStamp;
2523 DWORD CheckSum;
2524 DWORD ImageBase;
2525 DWORD SizeOfImage;
2526 DWORD NumberOfSections;
2527 DWORD ExportedNamesSize;
2528 DWORD DebugDirectorySize;
2529 DWORD Reserved[3];
2530 } IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER;
2531 #pragma pack(pop)
2532 typedef enum _CM_SERVICE_NODE_TYPE {
2533 DriverType=SERVICE_KERNEL_DRIVER,
2534 FileSystemType=SERVICE_FILE_SYSTEM_DRIVER,
2535 Win32ServiceOwnProcess=SERVICE_WIN32_OWN_PROCESS,
2536 Win32ServiceShareProcess=SERVICE_WIN32_SHARE_PROCESS,
2537 AdapterType=SERVICE_ADAPTER,
2538 RecognizerType=SERVICE_RECOGNIZER_DRIVER
2539 } SERVICE_NODE_TYPE;
2540 typedef enum _CM_SERVICE_LOAD_TYPE {
2541 BootLoad=SERVICE_BOOT_START,
2542 SystemLoad=SERVICE_SYSTEM_START,
2543 AutoLoad=SERVICE_AUTO_START,
2544 DemandLoad=SERVICE_DEMAND_START,
2545 DisableLoad=SERVICE_DISABLED
2546 } SERVICE_LOAD_TYPE;
2547 typedef enum _CM_ERROR_CONTROL_TYPE {
2548 IgnoreError=SERVICE_ERROR_IGNORE,
2549 NormalError=SERVICE_ERROR_NORMAL,
2550 SevereError=SERVICE_ERROR_SEVERE,
2551 CriticalError=SERVICE_ERROR_CRITICAL
2552 } SERVICE_ERROR_TYPE;
2553 typedef struct _NT_TIB {
2554 struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
2555 PVOID StackBase;
2556 PVOID StackLimit;
2557 PVOID SubSystemTib;
2558 _ANONYMOUS_UNION union {
2559 PVOID FiberData;
2560 DWORD Version;
2561 } DUMMYUNIONNAME;
2562 PVOID ArbitraryUserPointer;
2563 struct _NT_TIB *Self;
2564 } NT_TIB,*PNT_TIB;
2565 typedef struct _REPARSE_DATA_BUFFER {
2566 DWORD ReparseTag;
2567 WORD ReparseDataLength;
2568 WORD Reserved;
2569 _ANONYMOUS_UNION union {
2570 struct {
2571 WORD SubstituteNameOffset;
2572 WORD SubstituteNameLength;
2573 WORD PrintNameOffset;
2574 WORD PrintNameLength;
2575 WCHAR PathBuffer[1];
2576 } SymbolicLinkReparseBuffer;
2577 struct {
2578 WORD SubstituteNameOffset;
2579 WORD SubstituteNameLength;
2580 WORD PrintNameOffset;
2581 WORD PrintNameLength;
2582 WCHAR PathBuffer[1];
2583 } MountPointReparseBuffer;
2584 struct {
2585 BYTE DataBuffer[1];
2586 } GenericReparseBuffer;
2587 } DUMMYUNIONNAME;
2588 } REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
2589 typedef struct _REPARSE_GUID_DATA_BUFFER {
2590 DWORD ReparseTag;
2591 WORD ReparseDataLength;
2592 WORD Reserved;
2593 GUID ReparseGuid;
2594 struct {
2595 BYTE DataBuffer[1];
2596 } GenericReparseBuffer;
2597 } REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER;
2598 typedef struct _REPARSE_POINT_INFORMATION {
2599 WORD ReparseDataLength;
2600 WORD UnparsedNameLength;
2601 } REPARSE_POINT_INFORMATION, *PREPARSE_POINT_INFORMATION;
2603 #ifdef UNICODE
2604 typedef OSVERSIONINFOW OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO;
2605 typedef OSVERSIONINFOEXW OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX;
2606 #else
2607 typedef OSVERSIONINFOA OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO;
2608 typedef OSVERSIONINFOEXA OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX;
2609 #endif
2611 #if defined(__GNUC__)
2613 PVOID GetCurrentFiber(void);
2614 PVOID GetFiberData(void);
2616 PVOID GetCurrentFiber(void);
2617 extern __inline__ PVOID GetCurrentFiber(void)
2619 void* ret;
2620 __asm__ volatile (
2621 "movl %%fs:0x10,%0"
2622 : "=r" (ret) /* allow use of reg eax,ebx,ecx,edx,esi,edi */
2625 return ret;
2628 PVOID GetFiberData(void);
2629 extern __inline__ PVOID GetFiberData(void)
2631 void* ret;
2632 __asm__ volatile (
2633 "movl %%fs:0x10,%0\n"
2634 "movl (%0),%0"
2635 : "=r" (ret) /* allow use of reg eax,ebx,ecx,edx,esi,edi */
2638 return ret;
2641 #else
2643 extern PVOID GetCurrentFiber(void);
2644 #pragma aux GetCurrentFiber = \
2645 "mov eax, dword ptr fs:0x10" \
2646 value [eax] \
2647 modify [eax];
2649 extern PVOID GetFiberData(void);
2650 #pragma aux GetFiberData = \
2651 "mov eax, dword ptr fs:0x10" \
2652 "mov eax, [eax]" \
2653 value [eax] \
2654 modify [eax];
2656 #endif /* __GNUC__ */
2658 #endif
2659 #ifdef __cplusplus
2661 #endif
2662 #endif