4 #pragma GCC system_header
7 /* translate GCC target defines to MS equivalents. Keep this synchronized
9 #if defined(__i686__) && !defined(_M_IX86)
11 #elif defined(__i586__) && !defined(_M_IX86)
13 #elif defined(__i486__) && !defined(_M_IX86)
15 #elif defined(__i386__) && !defined(_M_IX86)
18 #if defined(_M_IX86) && !defined(_X86_)
20 #elif defined(_M_ALPHA) && !defined(_ALPHA_)
23 #elif defined(_M_ARM) && !defined(ARM)
25 #elif defined(_M_PPC) && !defined(_PPC_)
27 #elif defined(_M_MRX000) && !defined(_MIPS_)
29 #elif defined(_M_M68K) && !defined(_68K_)
43 /* FIXME: add more architectures. Is there a way to specify this in GCC? */
56 typedef char CCHAR
, *PCCHAR
;
57 typedef unsigned char UCHAR
,*PUCHAR
;
58 typedef unsigned short USHORT
,*PUSHORT
;
59 typedef unsigned long ULONG
,*PULONG
;
62 typedef void *PVOID
,*LPVOID
;
64 /* FIXME for __WIN64 */
68 typedef void* __ptr64 PVOID64
;
70 #ifndef _WCHAR_T_DEFINED
71 #define _WCHAR_T_DEFINED
76 typedef unsigned short wchar_t;
81 typedef wchar_t WCHAR
;
82 typedef WCHAR
*PWCHAR
,*LPWCH
,*PWCH
,*NWPSTR
,*LPWSTR
,*PWSTR
;
83 typedef CONST WCHAR
*LPCWCH
,*PCWCH
,*LPCWSTR
,*PCWSTR
;
84 typedef CHAR
*PCHAR
,*LPCH
,*PCH
,*NPSTR
,*LPSTR
,*PSTR
;
85 typedef CONST CHAR
*LPCCH
,*PCSTR
,*LPCSTR
;
86 #ifndef _TCHAR_DEFINED
87 #define _TCHAR_DEFINED
90 * NOTE: This tests UNICODE, which is different from the _UNICODE define
91 * used to differentiate standard C runtime calls.
100 typedef TCHAR TBYTE
,*PTCH
,*PTBYTE
;
101 typedef TCHAR
*LPTCH
,*PTSTR
,*LPTSTR
,*LP
,*PTCHAR
;
102 typedef const TCHAR
*LPCTSTR
;
105 * __TEXT is a private macro whose specific use is to force the expansion of a
106 * macro passed as an argument to the macro TEXT. DO NOT use this
107 * macro within your programs. It's name and function could change without
110 #define __TEXT(q) L##q
115 * UNICODE a constant string when UNICODE is defined, else returns the string
117 * The corresponding macros _TEXT() and _T() for mapping _UNICODE strings
118 * passed to C runtime functions are defined in mingw/tchar.h
120 #define TEXT(q) __TEXT(q)
121 typedef SHORT
*PSHORT
;
124 typedef void *HANDLE
;
125 #define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n
127 typedef PVOID HANDLE
;
128 #define DECLARE_HANDLE(n) typedef HANDLE n
130 typedef HANDLE
*PHANDLE
,*LPHANDLE
;
132 typedef PDWORD PLCID
;
136 #define _INTEGRAL_MAX_BITS 64
138 #define __int64 long long
139 #elif defined(__WATCOMC__) && (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64 )
141 #endif /* __GNUC__/__WATCOMC */
142 #if defined(_HAVE_INT64) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64)
143 typedef __int64 LONGLONG
;
144 typedef unsigned __int64 DWORDLONG
;
146 typedef double LONGLONG
,DWORDLONG
;
148 typedef LONGLONG
*PLONGLONG
;
149 typedef DWORDLONG
*PDWORDLONG
;
150 typedef DWORDLONG ULONGLONG
,*PULONGLONG
;
151 typedef LONGLONG USN
;
153 #define Int32x32To64(a,b) ((LONGLONG)(a)*(LONGLONG)(b))
154 #define UInt32x32To64(a,b) ((DWORDLONG)(a)*(DWORDLONG)(b))
155 #define Int64ShllMod32(a,b) ((DWORDLONG)(a)<<(b))
156 #define Int64ShraMod32(a,b) ((LONGLONG)(a)>>(b))
157 #define Int64ShrlMod32(a,b) ((DWORDLONG)(a)>>(b))
159 #define ANSI_NULL '\0'
160 #define UNICODE_NULL L'\0'
161 typedef BYTE BOOLEAN
,*PBOOLEAN
;
167 #define NTAPI __stdcall
169 #define ACE_OBJECT_TYPE_PRESENT 0x00000001
170 #define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x00000002
171 #define APPLICATION_ERROR_MASK 0x20000000
172 #define ERROR_SEVERITY_SUCCESS 0x00000000
173 #define ERROR_SEVERITY_INFORMATIONAL 0x40000000
174 #define ERROR_SEVERITY_WARNING 0x80000000
175 #define ERROR_SEVERITY_ERROR 0xC0000000
176 /* also in ddk/ntifs.h */
177 #define COMPRESSION_FORMAT_NONE (0x0000)
178 #define COMPRESSION_FORMAT_DEFAULT (0x0001)
179 #define COMPRESSION_FORMAT_LZNT1 (0x0002)
180 #define COMPRESSION_ENGINE_STANDARD (0x0000)
181 #define COMPRESSION_ENGINE_MAXIMUM (0x0100)
182 #define COMPRESSION_ENGINE_HIBER (0x0200)
183 #define ACCESS_ALLOWED_ACE_TYPE (0x0)
184 #define ACCESS_DENIED_ACE_TYPE (0x1)
185 #define SYSTEM_AUDIT_ACE_TYPE (0x2)
186 #define SYSTEM_ALARM_ACE_TYPE (0x3)
188 #define ANYSIZE_ARRAY 1
189 #define OBJECT_INHERIT_ACE 1
190 #define CONTAINER_INHERIT_ACE 2
191 #define NO_PROPAGATE_INHERIT_ACE 4
192 #define INHERIT_ONLY_ACE 8
193 #define VALID_INHERIT_FLAGS 16
194 #define SUCCESSFUL_ACCESS_ACE_FLAG 64
195 #define FAILED_ACCESS_ACE_FLAG 128
196 #define DELETE 0x00010000L
197 #define READ_CONTROL 0x20000L
198 #define WRITE_DAC 0x40000L
199 #define WRITE_OWNER 0x80000L
200 #define SYNCHRONIZE 0x100000L
201 #define STANDARD_RIGHTS_REQUIRED 0xF0000
202 #define STANDARD_RIGHTS_READ 0x20000
203 #define STANDARD_RIGHTS_WRITE 0x20000
204 #define STANDARD_RIGHTS_EXECUTE 0x20000
205 #define STANDARD_RIGHTS_ALL 0x1F0000
206 #define SPECIFIC_RIGHTS_ALL 0xFFFF
207 #define ACCESS_SYSTEM_SECURITY 0x1000000
209 #define MAXIMUM_ALLOWED 0x2000000
210 #define GENERIC_READ 0x80000000
211 #define GENERIC_WRITE 0x40000000
212 #define GENERIC_EXECUTE 0x20000000
213 #define GENERIC_ALL 0x10000000
215 #define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
217 /* Also in ddk/winddk.h */
218 #define FILE_LIST_DIRECTORY 0x00000001
219 #define FILE_READ_DATA 0x00000001
220 #define FILE_ADD_FILE 0x00000002
221 #define FILE_WRITE_DATA 0x00000002
222 #define FILE_ADD_SUBDIRECTORY 0x00000004
223 #define FILE_APPEND_DATA 0x00000004
224 #define FILE_CREATE_PIPE_INSTANCE 0x00000004
225 #define FILE_READ_EA 0x00000008
226 #define FILE_READ_PROPERTIES 0x00000008
227 #define FILE_WRITE_EA 0x00000010
228 #define FILE_WRITE_PROPERTIES 0x00000010
229 #define FILE_EXECUTE 0x00000020
230 #define FILE_TRAVERSE 0x00000020
231 #define FILE_DELETE_CHILD 0x00000040
232 #define FILE_READ_ATTRIBUTES 0x00000080
233 #define FILE_WRITE_ATTRIBUTES 0x00000100
235 #define FILE_SHARE_READ 0x00000001
236 #define FILE_SHARE_WRITE 0x00000002
237 #define FILE_SHARE_DELETE 0x00000004
238 #define FILE_SHARE_VALID_FLAGS 0x00000007
240 #define FILE_ATTRIBUTE_READONLY 0x00000001
241 #define FILE_ATTRIBUTE_HIDDEN 0x00000002
242 #define FILE_ATTRIBUTE_SYSTEM 0x00000004
243 #define FILE_ATTRIBUTE_DIRECTORY 0x00000010
244 #define FILE_ATTRIBUTE_ARCHIVE 0x00000020
245 #define FILE_ATTRIBUTE_DEVICE 0x00000040
246 #define FILE_ATTRIBUTE_NORMAL 0x00000080
247 #define FILE_ATTRIBUTE_TEMPORARY 0x00000100
248 #define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
249 #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
250 #define FILE_ATTRIBUTE_COMPRESSED 0x00000800
251 #define FILE_ATTRIBUTE_OFFLINE 0x00001000
252 #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
253 #define FILE_ATTRIBUTE_ENCRYPTED 0x00004000
254 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
255 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
257 #define FILE_COPY_STRUCTURED_STORAGE 0x00000041
258 #define FILE_STRUCTURED_STORAGE 0x00000441
260 #define FILE_VALID_OPTION_FLAGS 0x00ffffff
261 #define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032
262 #define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032
263 #define FILE_VALID_SET_FLAGS 0x00000036
265 #define FILE_DIRECTORY_FILE 0x00000001
266 #define FILE_WRITE_THROUGH 0x00000002
267 #define FILE_SEQUENTIAL_ONLY 0x00000004
268 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
269 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
270 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
271 #define FILE_NON_DIRECTORY_FILE 0x00000040
272 #define FILE_CREATE_TREE_CONNECTION 0x00000080
273 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
274 #define FILE_NO_EA_KNOWLEDGE 0x00000200
275 #define FILE_OPEN_FOR_RECOVERY 0x00000400
276 #define FILE_RANDOM_ACCESS 0x00000800
277 #define FILE_DELETE_ON_CLOSE 0x00001000
278 #define FILE_OPEN_BY_FILE_ID 0x00002000
279 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
280 #define FILE_NO_COMPRESSION 0x00008000
281 #define FILE_RESERVE_OPFILTER 0x00100000
282 #define FILE_OPEN_REPARSE_POINT 0x00200000
283 #define FILE_OPEN_NO_RECALL 0x00400000
284 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
286 #define FILE_ALL_ACCESS \
287 (STANDARD_RIGHTS_REQUIRED | \
291 #define FILE_GENERIC_EXECUTE \
292 (STANDARD_RIGHTS_EXECUTE | \
293 FILE_READ_ATTRIBUTES | \
297 #define FILE_GENERIC_READ \
298 (STANDARD_RIGHTS_READ | \
300 FILE_READ_ATTRIBUTES | \
304 #define FILE_GENERIC_WRITE \
305 (STANDARD_RIGHTS_WRITE | \
307 FILE_WRITE_ATTRIBUTES | \
312 /* also in ddk/ntifs.h */
313 #define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
314 #define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
315 #define FILE_NOTIFY_CHANGE_NAME 0x00000003
316 #define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
317 #define FILE_NOTIFY_CHANGE_SIZE 0x00000008
318 #define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
319 #define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
320 #define FILE_NOTIFY_CHANGE_CREATION 0x00000040
321 #define FILE_NOTIFY_CHANGE_EA 0x00000080
322 #define FILE_NOTIFY_CHANGE_SECURITY 0x00000100
323 #define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
324 #define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
325 #define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
326 #define FILE_NOTIFY_VALID_MASK 0x00000fff
328 #define FILE_CASE_SENSITIVE_SEARCH 0x00000001
329 #define FILE_CASE_PRESERVED_NAMES 0x00000002
330 #define FILE_UNICODE_ON_DISK 0x00000004
331 #define FILE_PERSISTENT_ACLS 0x00000008
332 #define FILE_FILE_COMPRESSION 0x00000010
333 #define FILE_VOLUME_QUOTAS 0x00000020
334 #define FILE_SUPPORTS_SPARSE_FILES 0x00000040
335 #define FILE_SUPPORTS_REPARSE_POINTS 0x00000080
336 #define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100
337 #define FS_LFN_APIS 0x00004000
338 #define FILE_VOLUME_IS_COMPRESSED 0x00008000
339 #define FILE_SUPPORTS_OBJECT_IDS 0x00010000
340 #define FILE_SUPPORTS_ENCRYPTION 0x00020000
341 #define FILE_NAMED_STREAMS 0x00040000
343 #define IO_COMPLETION_QUERY_STATE 0x0001
344 #define IO_COMPLETION_MODIFY_STATE 0x0002
345 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
348 /* also in ddk/winddk.h */
349 #define DUPLICATE_CLOSE_SOURCE 0x00000001
350 #define DUPLICATE_SAME_ACCESS 0x00000002
353 #define MAILSLOT_NO_MESSAGE ((DWORD)-1)
354 #define MAILSLOT_WAIT_FOREVER ((DWORD)-1)
355 #define PROCESS_TERMINATE 1
356 #define PROCESS_CREATE_THREAD 2
357 #define PROCESS_SET_SESSIONID 4
358 #define PROCESS_VM_OPERATION 8
359 #define PROCESS_VM_READ 16
360 #define PROCESS_VM_WRITE 32
361 #define PROCESS_DUP_HANDLE 64
362 #define PROCESS_CREATE_PROCESS 128
363 #define PROCESS_SET_QUOTA 256
364 #define PROCESS_SET_INFORMATION 512
365 #define PROCESS_QUERY_INFORMATION 1024
366 #define PROCESS_SUSPEND_RESUME 2048
367 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xFFF)
368 #define THREAD_TERMINATE 1
369 #define THREAD_SUSPEND_RESUME 2
370 #define THREAD_GET_CONTEXT 8
371 #define THREAD_SET_CONTEXT 16
372 #define THREAD_SET_INFORMATION 32
373 #define THREAD_QUERY_INFORMATION 64
374 #define THREAD_SET_THREAD_TOKEN 128
375 #define THREAD_IMPERSONATE 256
376 #define THREAD_DIRECT_IMPERSONATION 0x200
377 #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF)
378 #define THREAD_BASE_PRIORITY_LOWRT 15
379 #define THREAD_BASE_PRIORITY_MAX 2
380 #define THREAD_BASE_PRIORITY_MIN (-2)
381 #define THREAD_BASE_PRIORITY_IDLE (-15)
382 #define EXCEPTION_NONCONTINUABLE 1
383 #define EXCEPTION_MAXIMUM_PARAMETERS 15
384 #define MUTANT_QUERY_STATE 0x0001
385 #define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|MUTANT_QUERY_STATE)
386 #define TIMER_QUERY_STATE 0x0001
387 #define TIMER_MODIFY_STATE 0x0002
388 #define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|TIMER_QUERY_STATE|TIMER_MODIFY_STATE)
390 * To prevent gcc compiler warnings, bracket these defines when initialising
391 * a SID_IDENTIFIER_AUTHORITY, eg.
392 * SID_IDENTIFIER_AUTHORITY aNullSidAuthority = {SECURITY_NULL_SID_AUTHORITY};
394 #define SID_MAX_SUB_AUTHORITIES 15
395 #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
396 #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
397 #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
398 #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
399 #define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
400 #define SECURITY_NT_AUTHORITY {0,0,0,0,0,5}
401 #define SECURITY_NULL_RID 0
402 #define SECURITY_WORLD_RID (0x00000000L)
403 #define SECURITY_LOCAL_RID 0
404 #define SECURITY_CREATOR_OWNER_RID 0
405 #define SECURITY_CREATOR_GROUP_RID 1
406 #define SECURITY_DIALUP_RID 1
407 #define SECURITY_NETWORK_RID 2
408 #define SECURITY_BATCH_RID 3
409 #define SECURITY_INTERACTIVE_RID 4
410 #define SECURITY_LOGON_IDS_RID 5
411 #define SECURITY_SERVICE_RID 6
412 #define SECURITY_LOCAL_SYSTEM_RID 18
413 #define SECURITY_BUILTIN_DOMAIN_RID 32
414 #define SECURITY_PRINCIPAL_SELF_RID 10
415 #define SECURITY_CREATOR_OWNER_SERVER_RID 0x2
416 #define SECURITY_CREATOR_GROUP_SERVER_RID 0x3
417 #define SECURITY_LOGON_IDS_RID_COUNT 0x3
418 #define SECURITY_ANONYMOUS_LOGON_RID 0x7
419 #define SECURITY_PROXY_RID 0x8
420 #define SECURITY_ENTERPRISE_CONTROLLERS_RID 0x9
421 #define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID
422 #define SECURITY_AUTHENTICATED_USER_RID 0xB
423 #define SECURITY_RESTRICTED_CODE_RID 0xC
424 #define SECURITY_NT_NON_UNIQUE_RID 0x15
425 #define SID_REVISION 1
426 #define DOMAIN_USER_RID_ADMIN 0x1F4L
427 #define DOMAIN_USER_RID_GUEST 0x1F5L
428 #define DOMAIN_GROUP_RID_ADMINS 0x200L
429 #define DOMAIN_GROUP_RID_USERS 0x201L
430 #define DOMAIN_ALIAS_RID_ADMINS 0x220L
431 #define DOMAIN_ALIAS_RID_USERS 0x221L
432 #define DOMAIN_ALIAS_RID_GUESTS 0x222L
433 #define DOMAIN_ALIAS_RID_POWER_USERS 0x223L
434 #define DOMAIN_ALIAS_RID_ACCOUNT_OPS 0x224L
435 #define DOMAIN_ALIAS_RID_SYSTEM_OPS 0x225L
436 #define DOMAIN_ALIAS_RID_PRINT_OPS 0x226L
437 #define DOMAIN_ALIAS_RID_BACKUP_OPS 0x227L
438 #define DOMAIN_ALIAS_RID_REPLICATOR 0x228L
447 WinCreatorOwnerServerSid
,
448 WinCreatorGroupServerSid
,
457 WinEnterpriseControllersSid
,
459 WinAuthenticatedUserSid
,
460 WinRestrictedCodeSid
,
461 WinTerminalServerSid
,
466 WinNetworkServiceSid
,
468 WinBuiltinAdministratorsSid
,
471 WinBuiltinPowerUsersSid
,
472 WinBuiltinAccountOperatorsSid
,
473 WinBuiltinSystemOperatorsSid
,
474 WinBuiltinPrintOperatorsSid
,
475 WinBuiltinBackupOperatorsSid
,
476 WinBuiltinReplicatorSid
,
477 WinBuiltinPreWindows2000CompatibleAccessSid
,
478 WinBuiltinRemoteDesktopUsersSid
,
479 WinBuiltinNetworkConfigurationOperatorsSid
,
480 WinAccountAdministratorSid
,
483 WinAccountDomainAdminsSid
,
484 WinAccountDomainUsersSid
,
485 WinAccountDomainGuestsSid
,
486 WinAccountComputersSid
,
487 WinAccountControllersSid
,
488 WinAccountCertAdminsSid
,
489 WinAccountSchemaAdminsSid
,
490 WinAccountEnterpriseAdminsSid
,
491 WinAccountPolicyAdminsSid
,
492 WinAccountRasAndIasServersSid
,
493 WinNTLMAuthenticationSid
,
494 WinDigestAuthenticationSid
,
495 WinSChannelAuthenticationSid
,
496 WinThisOrganizationSid
,
497 WinOtherOrganizationSid
,
498 WinBuiltinIncomingForestTrustBuildersSid
,
499 WinBuiltinPerfMonitoringUsersSid
,
500 WinBuiltinPerfLoggingUsersSid
,
501 WinBuiltinAuthorizationAccessSid
,
502 WinBuiltinTerminalServerLicenseServersSid
,
503 WinBuiltinDCOMUsersSid
504 } WELL_KNOWN_SID_TYPE
;
506 #define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege")
507 #define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege")
508 #define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege")
509 #define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege")
510 #define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege")
511 #define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege")
512 #define SE_TCB_NAME TEXT("SeTcbPrivilege")
513 #define SE_SECURITY_NAME TEXT("SeSecurityPrivilege")
514 #define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege")
515 #define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege")
516 #define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege")
517 #define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege")
518 #define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege")
519 #define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege")
520 #define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege")
521 #define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege")
522 #define SE_BACKUP_NAME TEXT("SeBackupPrivilege")
523 #define SE_RESTORE_NAME TEXT("SeRestorePrivilege")
524 #define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege")
525 #define SE_DEBUG_NAME TEXT("SeDebugPrivilege")
526 #define SE_AUDIT_NAME TEXT("SeAuditPrivilege")
527 #define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege")
528 #define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege")
529 #define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege")
530 #define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege")
531 #define SE_GROUP_MANDATORY 1
532 #define SE_GROUP_ENABLED_BY_DEFAULT 2
533 #define SE_GROUP_ENABLED 4
534 #define SE_GROUP_OWNER 8
535 #define SE_GROUP_USE_FOR_DENY_ONLY 16
536 #define SE_GROUP_LOGON_ID 3221225472U
537 #define SE_GROUP_RESOURCE 536870912
538 #define LANG_NEUTRAL 0x00
539 #define LANG_ARABIC 0x01
540 #define LANG_BULGARIAN 0x02
541 #define LANG_CATALAN 0x03
542 #define LANG_CHINESE 0x04
543 #define LANG_CZECH 0x05
544 #define LANG_DANISH 0x06
545 #define LANG_GERMAN 0x07
546 #define LANG_GREEK 0x08
547 #define LANG_ENGLISH 0x09
548 #define LANG_SPANISH 0x0a
549 #define LANG_FINNISH 0x0b
550 #define LANG_FRENCH 0x0c
551 #define LANG_HEBREW 0x0d
552 #define LANG_HUNGARIAN 0x0e
553 #define LANG_ICELANDIC 0x0f
554 #define LANG_ITALIAN 0x10
555 #define LANG_JAPANESE 0x11
556 #define LANG_KOREAN 0x12
557 #define LANG_DUTCH 0x13
558 #define LANG_NORWEGIAN 0x14
559 #define LANG_POLISH 0x15
560 #define LANG_PORTUGUESE 0x16
561 #define LANG_ROMANIAN 0x18
562 #define LANG_RUSSIAN 0x19
563 #define LANG_CROATIAN 0x1a
564 #define LANG_SERBIAN 0x1a
565 #define LANG_SLOVAK 0x1b
566 #define LANG_ALBANIAN 0x1c
567 #define LANG_SWEDISH 0x1d
568 #define LANG_THAI 0x1e
569 #define LANG_TURKISH 0x1f
570 #define LANG_URDU 0x20
571 #define LANG_INDONESIAN 0x21
572 #define LANG_UKRAINIAN 0x22
573 #define LANG_BELARUSIAN 0x23
574 #define LANG_SLOVENIAN 0x24
575 #define LANG_ESTONIAN 0x25
576 #define LANG_LATVIAN 0x26
577 #define LANG_LITHUANIAN 0x27
578 #define LANG_FARSI 0x29
579 #define LANG_VIETNAMESE 0x2a
580 #define LANG_ARMENIAN 0x2b
581 #define LANG_AZERI 0x2c
582 #define LANG_BASQUE 0x2d
583 #define LANG_MACEDONIAN 0x2f
584 #define LANG_AFRIKAANS 0x36
585 #define LANG_GEORGIAN 0x37
586 #define LANG_FAEROESE 0x38
587 #define LANG_HINDI 0x39
588 #define LANG_MALAY 0x3e
589 #define LANG_KAZAK 0x3f
590 #define LANG_KYRGYZ 0x40
591 #define LANG_SWAHILI 0x41
592 #define LANG_UZBEK 0x43
593 #define LANG_TATAR 0x44
594 #define LANG_BENGALI 0x45
595 #define LANG_PUNJABI 0x46
596 #define LANG_GUJARATI 0x47
597 #define LANG_ORIYA 0x48
598 #define LANG_TAMIL 0x49
599 #define LANG_TELUGU 0x4a
600 #define LANG_KANNADA 0x4b
601 #define LANG_MALAYALAM 0x4c
602 #define LANG_ASSAMESE 0x4d
603 #define LANG_MARATHI 0x4e
604 #define LANG_SANSKRIT 0x4f
605 #define LANG_MONGOLIAN 0x50
606 #define LANG_GALICIAN 0x56
607 #define LANG_KONKANI 0x57
608 #define LANG_MANIPURI 0x58
609 #define LANG_SINDHI 0x59
610 #define LANG_SYRIAC 0x5a
611 #define LANG_KASHMIRI 0x60
612 #define LANG_NEPALI 0x61
613 #define LANG_DIVEHI 0x65
614 #define LANG_INVARIANT 0x7f
615 #define SUBLANG_NEUTRAL 0x00
616 #define SUBLANG_DEFAULT 0x01
617 #define SUBLANG_SYS_DEFAULT 0x02
618 #define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
619 #define SUBLANG_ARABIC_IRAQ 0x02
620 #define SUBLANG_ARABIC_EGYPT 0x03
621 #define SUBLANG_ARABIC_LIBYA 0x04
622 #define SUBLANG_ARABIC_ALGERIA 0x05
623 #define SUBLANG_ARABIC_MOROCCO 0x06
624 #define SUBLANG_ARABIC_TUNISIA 0x07
625 #define SUBLANG_ARABIC_OMAN 0x08
626 #define SUBLANG_ARABIC_YEMEN 0x09
627 #define SUBLANG_ARABIC_SYRIA 0x0a
628 #define SUBLANG_ARABIC_JORDAN 0x0b
629 #define SUBLANG_ARABIC_LEBANON 0x0c
630 #define SUBLANG_ARABIC_KUWAIT 0x0d
631 #define SUBLANG_ARABIC_UAE 0x0e
632 #define SUBLANG_ARABIC_BAHRAIN 0x0f
633 #define SUBLANG_ARABIC_QATAR 0x10
634 #define SUBLANG_AZERI_LATIN 0x01
635 #define SUBLANG_AZERI_CYRILLIC 0x02
636 #define SUBLANG_CHINESE_TRADITIONAL 0x01
637 #define SUBLANG_CHINESE_SIMPLIFIED 0x02
638 #define SUBLANG_CHINESE_HONGKONG 0x03
639 #define SUBLANG_CHINESE_SINGAPORE 0x04
640 #define SUBLANG_CHINESE_MACAU 0x05
641 #define SUBLANG_DUTCH 0x01
642 #define SUBLANG_DUTCH_BELGIAN 0x02
643 #define SUBLANG_ENGLISH_US 0x01
644 #define SUBLANG_ENGLISH_UK 0x02
645 #define SUBLANG_ENGLISH_AUS 0x03
646 #define SUBLANG_ENGLISH_CAN 0x04
647 #define SUBLANG_ENGLISH_NZ 0x05
648 #define SUBLANG_ENGLISH_EIRE 0x06
649 #define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
650 #define SUBLANG_ENGLISH_JAMAICA 0x08
651 #define SUBLANG_ENGLISH_CARIBBEAN 0x09
652 #define SUBLANG_ENGLISH_BELIZE 0x0a
653 #define SUBLANG_ENGLISH_TRINIDAD 0x0b
654 #define SUBLANG_ENGLISH_ZIMBABWE 0x0c
655 #define SUBLANG_ENGLISH_PHILIPPINES 0x0d
656 #define SUBLANG_FRENCH 0x01
657 #define SUBLANG_FRENCH_BELGIAN 0x02
658 #define SUBLANG_FRENCH_CANADIAN 0x03
659 #define SUBLANG_FRENCH_SWISS 0x04
660 #define SUBLANG_FRENCH_LUXEMBOURG 0x05
661 #define SUBLANG_FRENCH_MONACO 0x06
662 #define SUBLANG_GERMAN 0x01
663 #define SUBLANG_GERMAN_SWISS 0x02
664 #define SUBLANG_GERMAN_AUSTRIAN 0x03
665 #define SUBLANG_GERMAN_LUXEMBOURG 0x04
666 #define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
667 #define SUBLANG_ITALIAN 0x01
668 #define SUBLANG_ITALIAN_SWISS 0x02
669 #define SUBLANG_KASHMIRI_INDIA 0x02
670 #define SUBLANG_KASHMIRI_SASIA 0x02
671 #define SUBLANG_KOREAN 0x01
672 #define SUBLANG_LITHUANIAN 0x01
673 #define SUBLANG_MALAY_MALAYSIA 0x01
674 #define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
675 #define SUBLANG_NEPALI_INDIA 0x02
676 #define SUBLANG_NORWEGIAN_BOKMAL 0x01
677 #define SUBLANG_NORWEGIAN_NYNORSK 0x02
678 #define SUBLANG_PORTUGUESE 0x01
679 #define SUBLANG_PORTUGUESE_BRAZILIAN 0x02
680 #define SUBLANG_SERBIAN_LATIN 0x02
681 #define SUBLANG_SERBIAN_CYRILLIC 0x03
682 #define SUBLANG_SPANISH 0x01
683 #define SUBLANG_SPANISH_MEXICAN 0x02
684 #define SUBLANG_SPANISH_MODERN 0x03
685 #define SUBLANG_SPANISH_GUATEMALA 0x04
686 #define SUBLANG_SPANISH_COSTA_RICA 0x05
687 #define SUBLANG_SPANISH_PANAMA 0x06
688 #define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
689 #define SUBLANG_SPANISH_VENEZUELA 0x08
690 #define SUBLANG_SPANISH_COLOMBIA 0x09
691 #define SUBLANG_SPANISH_PERU 0x0a
692 #define SUBLANG_SPANISH_ARGENTINA 0x0b
693 #define SUBLANG_SPANISH_ECUADOR 0x0c
694 #define SUBLANG_SPANISH_CHILE 0x0d
695 #define SUBLANG_SPANISH_URUGUAY 0x0e
696 #define SUBLANG_SPANISH_PARAGUAY 0x0f
697 #define SUBLANG_SPANISH_BOLIVIA 0x10
698 #define SUBLANG_SPANISH_EL_SALVADOR 0x11
699 #define SUBLANG_SPANISH_HONDURAS 0x12
700 #define SUBLANG_SPANISH_NICARAGUA 0x13
701 #define SUBLANG_SPANISH_PUERTO_RICO 0x14
702 #define SUBLANG_SWEDISH 0x01
703 #define SUBLANG_SWEDISH_FINLAND 0x02
704 #define SUBLANG_URDU_PAKISTAN 0x01
705 #define SUBLANG_URDU_INDIA 0x02
706 #define SUBLANG_UZBEK_LATIN 0x01
707 #define SUBLANG_UZBEK_CYRILLIC 0x02
708 #define NLS_VALID_LOCALE_MASK 1048575
709 #define SORT_DEFAULT 0
710 #define SORT_JAPANESE_XJIS 0
711 #define SORT_JAPANESE_UNICODE 1
712 #define SORT_CHINESE_BIG5 0
713 #define SORT_CHINESE_PRCP 0
714 #define SORT_CHINESE_UNICODE 1
715 #define SORT_CHINESE_PRC 2
716 #define SORT_CHINESE_BOPOMOFO 3
717 #define SORT_KOREAN_KSC 0
718 #define SORT_KOREAN_UNICODE 1
719 #define SORT_GERMAN_PHONE_BOOK 1
720 #define SORT_HUNGARIAN_DEFAULT 0
721 #define SORT_HUNGARIAN_TECHNICAL 1
722 #define SORT_GEORGIAN_TRADITIONAL 0
723 #define SORT_GEORGIAN_MODERN 1
724 #define MAKELANGID(p,s) ((((WORD)(s))<<10)|(WORD)(p))
725 #define MAKELCID(l,s) ((DWORD)((((DWORD)((WORD)(s)))<<16)|((DWORD)((WORD)(l)))))
726 #define PRIMARYLANGID(l) ((WORD)(l)&0x3ff)
727 #define SORTIDFROMLCID(l) ((WORD)((((DWORD)(l))&NLS_VALID_LOCALE_MASK)>>16))
728 #define SORTVERSIONFROMLCID(l) ((WORD)((((DWORD)(l))>>20)&0xf))
729 #define SUBLANGID(l) ((WORD)(l)>>10)
730 #define LANGIDFROMLCID(l) ((WORD)(l))
731 #define LANG_SYSTEM_DEFAULT MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)
732 #define LANG_USER_DEFAULT MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT)
733 #define LOCALE_NEUTRAL MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT)
734 #define ACL_REVISION 2
735 #define ACL_REVISION_DS 4
736 #define ACL_REVISION1 1
737 #define ACL_REVISION2 2
738 #define ACL_REVISION3 3
739 #define ACL_REVISION4 4
740 #define MIN_ACL_REVISION 2
741 #define MAX_ACL_REVISION 4
744 #define MINSHORT 0x8000
745 #define MAXSHORT 0x7fff
746 #define MINLONG 0x80000000
747 #define MAXLONG 0x7fffffff
749 #define MAXWORD 0xffff
750 #define MAXDWORD 0xffffffff
751 #define PROCESSOR_INTEL_386 386
752 #define PROCESSOR_INTEL_486 486
753 #define PROCESSOR_INTEL_PENTIUM 586
754 #define PROCESSOR_MIPS_R4000 4000
755 #define PROCESSOR_ALPHA_21064 21064
756 #define PROCESSOR_INTEL_IA64 2200
757 #define PROCESSOR_PPC_601 601
758 #define PROCESSOR_PPC_603 603
759 #define PROCESSOR_PPC_604 604
760 #define PROCESSOR_PPC_620 620
761 #define PROCESSOR_ARCHITECTURE_INTEL 0
762 #define PROCESSOR_ARCHITECTURE_MIPS 1
763 #define PROCESSOR_ARCHITECTURE_ALPHA 2
764 #define PROCESSOR_ARCHITECTURE_PPC 3
765 #define PROCESSOR_ARCHITECTURE_SHX 4
766 #define PROCESSOR_ARCHITECTURE_ARM 5
767 #define PROCESSOR_ARCHITECTURE_IA64 6
768 #define PROCESSOR_ARCHITECTURE_ALPHA64 7
769 #define PROCESSOR_ARCHITECTURE_MSIL8
770 #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
771 #define PF_FLOATING_POINT_PRECISION_ERRATA 0
772 #define PF_FLOATING_POINT_EMULATED 1
773 #define PF_COMPARE_EXCHANGE_DOUBLE 2
774 #define PF_MMX_INSTRUCTIONS_AVAILABLE 3
775 #define PF_PPC_MOVEMEM_64BIT_OK 4
776 #define PF_ALPHA_BYTE_INSTRUCTIONS 5
777 #define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
778 #define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7
779 #define PF_RDTSC_INSTRUCTION_AVAILABLE 8
780 #define PF_PAE_ENABLED 9
781 #define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
782 /* also in ddk/ntifs.h */
783 #define FILE_ACTION_ADDED 0x00000001
784 #define FILE_ACTION_REMOVED 0x00000002
785 #define FILE_ACTION_MODIFIED 0x00000003
786 #define FILE_ACTION_RENAMED_OLD_NAME 0x00000004
787 #define FILE_ACTION_RENAMED_NEW_NAME 0x00000005
788 #define FILE_ACTION_ADDED_STREAM 0x00000006
789 #define FILE_ACTION_REMOVED_STREAM 0x00000007
790 #define FILE_ACTION_MODIFIED_STREAM 0x00000008
791 #define FILE_ACTION_REMOVED_BY_DELETE 0x00000009
792 #define FILE_ACTION_ID_NOT_TUNNELLED 0x0000000A
793 #define FILE_ACTION_TUNNELLED_ID_COLLISION 0x0000000B
795 #define HEAP_NO_SERIALIZE 1
796 #define HEAP_GROWABLE 2
797 #define HEAP_GENERATE_EXCEPTIONS 4
798 #define HEAP_ZERO_MEMORY 8
799 #define HEAP_REALLOC_IN_PLACE_ONLY 16
800 #define HEAP_TAIL_CHECKING_ENABLED 32
801 #define HEAP_FREE_CHECKING_ENABLED 64
802 #define HEAP_DISABLE_COALESCE_ON_FREE 128
803 #define HEAP_CREATE_ALIGN_16 0x0000
804 #define HEAP_CREATE_ENABLE_TRACING 0x20000
805 #define HEAP_MAXIMUM_TAG 0xFFF
806 #define HEAP_PSEUDO_TAG_FLAG 0x8000
807 #define HEAP_TAG_SHIFT 16
808 #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16)))
809 #define KEY_QUERY_VALUE 1
810 #define KEY_SET_VALUE 2
811 #define KEY_CREATE_SUB_KEY 4
812 #define KEY_ENUMERATE_SUB_KEYS 8
813 #define KEY_NOTIFY 16
814 #define KEY_CREATE_LINK 32
815 #define KEY_WRITE 0x20006
816 #define KEY_EXECUTE 0x20019
817 #define KEY_READ 0x20019
818 #define KEY_ALL_ACCESS 0xf003f
819 #define REG_WHOLE_HIVE_VOLATILE 1
820 #define REG_REFRESH_HIVE 2
821 #define REG_NO_LAZY_FLUSH 4
822 #define REG_OPTION_RESERVED 0
823 #define REG_OPTION_NON_VOLATILE 0
824 #define REG_OPTION_VOLATILE 1
825 #define REG_OPTION_CREATE_LINK 2
826 #define REG_OPTION_BACKUP_RESTORE 4
827 #define REG_OPTION_OPEN_LINK 8
828 #define REG_LEGAL_OPTION 15
829 #define OWNER_SECURITY_INFORMATION 1
830 #define GROUP_SECURITY_INFORMATION 2
831 #define DACL_SECURITY_INFORMATION 4
832 #define SACL_SECURITY_INFORMATION 8
833 #define PROTECTED_DACL_SECURITY_INFORMATION 0x80000000
834 #define PROTECTED_SACL_SECURITY_INFORMATION 0x40000000
835 #define UNPROTECTED_DACL_SECURITY_INFORMATION 0x20000000
836 #define UNPROTECTED_SACL_SECURITY_INFORMATION 0x10000000
837 #define MAXIMUM_PROCESSORS 32
838 #define PAGE_NOACCESS 0x0001
839 #define PAGE_READONLY 0x0002
840 #define PAGE_READWRITE 0x0004
841 #define PAGE_WRITECOPY 0x0008
842 #define PAGE_EXECUTE 0x0010
843 #define PAGE_EXECUTE_READ 0x0020
844 #define PAGE_EXECUTE_READWRITE 0x0040
845 #define PAGE_EXECUTE_WRITECOPY 0x0080
846 #define PAGE_GUARD 0x0100
847 #define PAGE_NOCACHE 0x0200
848 #define PAGE_WRITECOMBINE 0x0400
849 #define MEM_COMMIT 0x1000
850 #define MEM_RESERVE 0x2000
851 #define MEM_DECOMMIT 0x4000
852 #define MEM_RELEASE 0x8000
853 #define MEM_FREE 0x10000
854 #define MEM_PRIVATE 0x20000
855 #define MEM_MAPPED 0x40000
856 #define MEM_RESET 0x80000
857 #define MEM_TOP_DOWN 0x100000
858 #define MEM_WRITE_WATCH 0x200000 /* 98/Me */
859 #define MEM_PHYSICAL 0x400000
860 #define MEM_4MB_PAGES 0x80000000
861 /* also in ddk/ntifs.h */
862 #define MEM_IMAGE SEC_IMAGE
863 #define SEC_BASED 0x00200000
864 #define SEC_NO_CHANGE 0x00400000
865 #define SEC_FILE 0x00800000
866 #define SEC_IMAGE 0x01000000
867 #define SEC_VLM 0x02000000
868 #define SEC_RESERVE 0x04000000
869 #define SEC_COMMIT 0x08000000
870 #define SEC_NOCACHE 0x10000000
872 #define SECTION_EXTEND_SIZE 16
873 #define SECTION_MAP_READ 4
874 #define SECTION_MAP_WRITE 2
875 #define SECTION_QUERY 1
876 #define SECTION_MAP_EXECUTE 8
877 #define SECTION_ALL_ACCESS 0xf001f
878 #define MESSAGE_RESOURCE_UNICODE 1
879 #define RTL_CRITSECT_TYPE 0
880 #define RTL_RESOURCE_TYPE 1
881 /* Also in winddk.h */
882 #define FIELD_OFFSET(t,f) ((LONG)&(((t*)0)->f))
883 #ifndef CONTAINING_RECORD
884 #define CONTAINING_RECORD(address, type, field) \
885 ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field))))
888 #define IMAGE_SIZEOF_FILE_HEADER 20
889 #define IMAGE_FILE_RELOCS_STRIPPED 1
890 #define IMAGE_FILE_EXECUTABLE_IMAGE 2
891 #define IMAGE_FILE_LINE_NUMS_STRIPPED 4
892 #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 8
893 #define IMAGE_FILE_AGGRESIVE_WS_TRIM 16
894 #define IMAGE_FILE_LARGE_ADDRESS_AWARE 32
895 #define IMAGE_FILE_BYTES_REVERSED_LO 128
896 #define IMAGE_FILE_32BIT_MACHINE 256
897 #define IMAGE_FILE_DEBUG_STRIPPED 512
898 #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 1024
899 #define IMAGE_FILE_NET_RUN_FROM_SWAP 2048
900 #define IMAGE_FILE_SYSTEM 4096
901 #define IMAGE_FILE_DLL 8192
902 #define IMAGE_FILE_UP_SYSTEM_ONLY 16384
903 #define IMAGE_FILE_BYTES_REVERSED_HI 32768
904 #define IMAGE_FILE_MACHINE_UNKNOWN 0
905 #define IMAGE_FILE_MACHINE_I386 332
906 #define IMAGE_FILE_MACHINE_R3000 354
907 #define IMAGE_FILE_MACHINE_R4000 358
908 #define IMAGE_FILE_MACHINE_R10000 360
909 #define IMAGE_FILE_MACHINE_ALPHA 388
910 #define IMAGE_FILE_MACHINE_POWERPC 496
911 #define IMAGE_FILE_MACHINE_IA64 512
912 #define IMAGE_FILE_MACHINE_AMD64 0x8664
913 #define IMAGE_DOS_SIGNATURE 0x5A4D
914 #define IMAGE_OS2_SIGNATURE 0x454E
915 #define IMAGE_OS2_SIGNATURE_LE 0x454C
916 #define IMAGE_VXD_SIGNATURE 0x454C
917 #define IMAGE_NT_SIGNATURE 0x00004550
918 #define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b
919 #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
921 #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC
923 #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC
925 #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
926 #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
927 #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
928 #define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
929 #define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
930 #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224
931 #define IMAGE_SIZEOF_SHORT_NAME 8
932 #define IMAGE_SIZEOF_SECTION_HEADER 40
933 #define IMAGE_SIZEOF_SYMBOL 18
934 #define IMAGE_SIZEOF_AUX_SYMBOL 18
935 #define IMAGE_SIZEOF_RELOCATION 10
936 #define IMAGE_SIZEOF_BASE_RELOCATION 8
937 #define IMAGE_SIZEOF_LINENUMBER 6
938 #define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
939 #define SIZEOF_RFPO_DATA 16
940 #define IMAGE_SUBSYSTEM_UNKNOWN 0
941 #define IMAGE_SUBSYSTEM_NATIVE 1
942 #define IMAGE_SUBSYSTEM_WINDOWS_GUI 2
943 #define IMAGE_SUBSYSTEM_WINDOWS_CUI 3
944 #define IMAGE_SUBSYSTEM_OS2_CUI 5
945 #define IMAGE_SUBSYSTEM_POSIX_CUI 7
946 #define IMAGE_SUBSYSTEM_XBOX 14
947 #define IMAGE_FIRST_SECTION(h) ((PIMAGE_SECTION_HEADER) ((DWORD)h+FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader)+((PIMAGE_NT_HEADERS)(h))->FileHeader.SizeOfOptionalHeader))
948 #define IMAGE_DIRECTORY_ENTRY_EXPORT 0
949 #define IMAGE_DIRECTORY_ENTRY_IMPORT 1
950 #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2
951 #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3
952 #define IMAGE_DIRECTORY_ENTRY_SECURITY 4
953 #define IMAGE_DIRECTORY_ENTRY_BASERELOC 5
954 #define IMAGE_DIRECTORY_ENTRY_DEBUG 6
955 #define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7
956 #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8
957 #define IMAGE_DIRECTORY_ENTRY_TLS 9
958 #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10
959 #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11
960 #define IMAGE_DIRECTORY_ENTRY_IAT 12
961 #define IMAGE_SCN_TYPE_REG 0
962 #define IMAGE_SCN_TYPE_DSECT 1
963 #define IMAGE_SCN_TYPE_NOLOAD 2
964 #define IMAGE_SCN_TYPE_GROUP 4
965 #define IMAGE_SCN_TYPE_NO_PAD 8
966 #define IMAGE_SCN_CNT_CODE 32
967 #define IMAGE_SCN_CNT_INITIALIZED_DATA 64
968 #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 128
969 #define IMAGE_SCN_LNK_OTHER 256
970 #define IMAGE_SCN_LNK_INFO 512
971 #define IMAGE_SCN_LNK_REMOVE 2048
972 #define IMAGE_SCN_LNK_COMDAT 4096
973 #define IMAGE_SCN_MEM_FARDATA 0x8000
974 #define IMAGE_SCN_MEM_PURGEABLE 0x20000
975 #define IMAGE_SCN_MEM_16BIT 0x20000
976 #define IMAGE_SCN_MEM_LOCKED 0x40000
977 #define IMAGE_SCN_MEM_PRELOAD 0x80000
978 #define IMAGE_SCN_ALIGN_1BYTES 0x100000
979 #define IMAGE_SCN_ALIGN_2BYTES 0x200000
980 #define IMAGE_SCN_ALIGN_4BYTES 0x300000
981 #define IMAGE_SCN_ALIGN_8BYTES 0x400000
982 #define IMAGE_SCN_ALIGN_16BYTES 0x500000
983 #define IMAGE_SCN_ALIGN_32BYTES 0x600000
984 #define IMAGE_SCN_ALIGN_64BYTES 0x700000
985 #define IMAGE_SCN_LNK_NRELOC_OVFL 0x1000000
986 #define IMAGE_SCN_MEM_DISCARDABLE 0x2000000
987 #define IMAGE_SCN_MEM_NOT_CACHED 0x4000000
988 #define IMAGE_SCN_MEM_NOT_PAGED 0x8000000
989 #define IMAGE_SCN_MEM_SHARED 0x10000000
990 #define IMAGE_SCN_MEM_EXECUTE 0x20000000
991 #define IMAGE_SCN_MEM_READ 0x40000000
992 #define IMAGE_SCN_MEM_WRITE 0x80000000
993 #define IMAGE_SYM_UNDEFINED 0
994 #define IMAGE_SYM_ABSOLUTE (-1)
995 #define IMAGE_SYM_DEBUG (-2)
996 #define IMAGE_SYM_TYPE_NULL 0
997 #define IMAGE_SYM_TYPE_VOID 1
998 #define IMAGE_SYM_TYPE_CHAR 2
999 #define IMAGE_SYM_TYPE_SHORT 3
1000 #define IMAGE_SYM_TYPE_INT 4
1001 #define IMAGE_SYM_TYPE_LONG 5
1002 #define IMAGE_SYM_TYPE_FLOAT 6
1003 #define IMAGE_SYM_TYPE_DOUBLE 7
1004 #define IMAGE_SYM_TYPE_STRUCT 8
1005 #define IMAGE_SYM_TYPE_UNION 9
1006 #define IMAGE_SYM_TYPE_ENUM 10
1007 #define IMAGE_SYM_TYPE_MOE 11
1008 #define IMAGE_SYM_TYPE_BYTE 12
1009 #define IMAGE_SYM_TYPE_WORD 13
1010 #define IMAGE_SYM_TYPE_UINT 14
1011 #define IMAGE_SYM_TYPE_DWORD 15
1012 #define IMAGE_SYM_TYPE_PCODE 32768
1013 #define IMAGE_SYM_DTYPE_NULL 0
1014 #define IMAGE_SYM_DTYPE_POINTER 1
1015 #define IMAGE_SYM_DTYPE_FUNCTION 2
1016 #define IMAGE_SYM_DTYPE_ARRAY 3
1017 #define IMAGE_SYM_CLASS_END_OF_FUNCTION (-1)
1018 #define IMAGE_SYM_CLASS_NULL 0
1019 #define IMAGE_SYM_CLASS_AUTOMATIC 1
1020 #define IMAGE_SYM_CLASS_EXTERNAL 2
1021 #define IMAGE_SYM_CLASS_STATIC 3
1022 #define IMAGE_SYM_CLASS_REGISTER 4
1023 #define IMAGE_SYM_CLASS_EXTERNAL_DEF 5
1024 #define IMAGE_SYM_CLASS_LABEL 6
1025 #define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7
1026 #define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8
1027 #define IMAGE_SYM_CLASS_ARGUMENT 9
1028 #define IMAGE_SYM_CLASS_STRUCT_TAG 10
1029 #define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11
1030 #define IMAGE_SYM_CLASS_UNION_TAG 12
1031 #define IMAGE_SYM_CLASS_TYPE_DEFINITION 13
1032 #define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14
1033 #define IMAGE_SYM_CLASS_ENUM_TAG 15
1034 #define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16
1035 #define IMAGE_SYM_CLASS_REGISTER_PARAM 17
1036 #define IMAGE_SYM_CLASS_BIT_FIELD 18
1037 #define IMAGE_SYM_CLASS_FAR_EXTERNAL 68
1038 #define IMAGE_SYM_CLASS_BLOCK 100
1039 #define IMAGE_SYM_CLASS_FUNCTION 101
1040 #define IMAGE_SYM_CLASS_END_OF_STRUCT 102
1041 #define IMAGE_SYM_CLASS_FILE 103
1042 #define IMAGE_SYM_CLASS_SECTION 104
1043 #define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105
1044 #define IMAGE_COMDAT_SELECT_NODUPLICATES 1
1045 #define IMAGE_COMDAT_SELECT_ANY 2
1046 #define IMAGE_COMDAT_SELECT_SAME_SIZE 3
1047 #define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
1048 #define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
1049 #define IMAGE_COMDAT_SELECT_LARGEST 6
1050 #define IMAGE_COMDAT_SELECT_NEWEST 7
1051 #define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
1052 #define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
1053 #define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
1054 #define IMAGE_REL_I386_ABSOLUTE 0
1055 #define IMAGE_REL_I386_DIR16 1
1056 #define IMAGE_REL_I386_REL16 2
1057 #define IMAGE_REL_I386_DIR32 6
1058 #define IMAGE_REL_I386_DIR32NB 7
1059 #define IMAGE_REL_I386_SEG12 9
1060 #define IMAGE_REL_I386_SECTION 10
1061 #define IMAGE_REL_I386_SECREL 11
1062 #define IMAGE_REL_I386_REL32 20
1063 #define IMAGE_REL_MIPS_ABSOLUTE 0
1064 #define IMAGE_REL_MIPS_REFHALF 1
1065 #define IMAGE_REL_MIPS_REFWORD 2
1066 #define IMAGE_REL_MIPS_JMPADDR 3
1067 #define IMAGE_REL_MIPS_REFHI 4
1068 #define IMAGE_REL_MIPS_REFLO 5
1069 #define IMAGE_REL_MIPS_GPREL 6
1070 #define IMAGE_REL_MIPS_LITERAL 7
1071 #define IMAGE_REL_MIPS_SECTION 10
1072 #define IMAGE_REL_MIPS_SECREL 11
1073 #define IMAGE_REL_MIPS_SECRELLO 12
1074 #define IMAGE_REL_MIPS_SECRELHI 13
1075 #define IMAGE_REL_MIPS_REFWORDNB 34
1076 #define IMAGE_REL_MIPS_PAIR 35
1077 #define IMAGE_REL_ALPHA_ABSOLUTE 0
1078 #define IMAGE_REL_ALPHA_REFLONG 1
1079 #define IMAGE_REL_ALPHA_REFQUAD 2
1080 #define IMAGE_REL_ALPHA_GPREL32 3
1081 #define IMAGE_REL_ALPHA_LITERAL 4
1082 #define IMAGE_REL_ALPHA_LITUSE 5
1083 #define IMAGE_REL_ALPHA_GPDISP 6
1084 #define IMAGE_REL_ALPHA_BRADDR 7
1085 #define IMAGE_REL_ALPHA_HINT 8
1086 #define IMAGE_REL_ALPHA_INLINE_REFLONG 9
1087 #define IMAGE_REL_ALPHA_REFHI 10
1088 #define IMAGE_REL_ALPHA_REFLO 11
1089 #define IMAGE_REL_ALPHA_PAIR 12
1090 #define IMAGE_REL_ALPHA_MATCH 13
1091 #define IMAGE_REL_ALPHA_SECTION 14
1092 #define IMAGE_REL_ALPHA_SECREL 15
1093 #define IMAGE_REL_ALPHA_REFLONGNB 16
1094 #define IMAGE_REL_ALPHA_SECRELLO 17
1095 #define IMAGE_REL_ALPHA_SECRELHI 18
1096 #define IMAGE_REL_PPC_ABSOLUTE 0
1097 #define IMAGE_REL_PPC_ADDR64 1
1098 #define IMAGE_REL_PPC_ADDR32 2
1099 #define IMAGE_REL_PPC_ADDR24 3
1100 #define IMAGE_REL_PPC_ADDR16 4
1101 #define IMAGE_REL_PPC_ADDR14 5
1102 #define IMAGE_REL_PPC_REL24 6
1103 #define IMAGE_REL_PPC_REL14 7
1104 #define IMAGE_REL_PPC_TOCREL16 8
1105 #define IMAGE_REL_PPC_TOCREL14 9
1106 #define IMAGE_REL_PPC_ADDR32NB 10
1107 #define IMAGE_REL_PPC_SECREL 11
1108 #define IMAGE_REL_PPC_SECTION 12
1109 #define IMAGE_REL_PPC_IFGLUE 13
1110 #define IMAGE_REL_PPC_IMGLUE 14
1111 #define IMAGE_REL_PPC_SECREL16 15
1112 #define IMAGE_REL_PPC_REFHI 16
1113 #define IMAGE_REL_PPC_REFLO 17
1114 #define IMAGE_REL_PPC_PAIR 18
1115 #define IMAGE_REL_PPC_TYPEMASK 255
1116 #define IMAGE_REL_PPC_NEG 256
1117 #define IMAGE_REL_PPC_BRTAKEN 512
1118 #define IMAGE_REL_PPC_BRNTAKEN 1024
1119 #define IMAGE_REL_PPC_TOCDEFN 2048
1120 #define IMAGE_REL_BASED_ABSOLUTE 0
1121 #define IMAGE_REL_BASED_HIGH 1
1122 #define IMAGE_REL_BASED_LOW 2
1123 #define IMAGE_REL_BASED_HIGHLOW 3
1124 #define IMAGE_REL_BASED_HIGHADJ 4
1125 #define IMAGE_REL_BASED_MIPS_JMPADDR 5
1126 #define IMAGE_ARCHIVE_START_SIZE 8
1127 #define IMAGE_ARCHIVE_START "!<arch>\n"
1128 #define IMAGE_ARCHIVE_END "`\n"
1129 #define IMAGE_ARCHIVE_PAD "\n"
1130 #define IMAGE_ARCHIVE_LINKER_MEMBER "/ "
1131 #define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// "
1132 #define IMAGE_ORDINAL_FLAG 0x80000000
1133 #define IMAGE_SNAP_BY_ORDINAL(o) ((o&IMAGE_ORDINAL_FLAG)!=0)
1134 #define IMAGE_ORDINAL(o) (o&0xffff)
1135 #define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000
1136 #define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
1137 #define IMAGE_DEBUG_TYPE_UNKNOWN 0
1138 #define IMAGE_DEBUG_TYPE_COFF 1
1139 #define IMAGE_DEBUG_TYPE_CODEVIEW 2
1140 #define IMAGE_DEBUG_TYPE_FPO 3
1141 #define IMAGE_DEBUG_TYPE_MISC 4
1142 #define IMAGE_DEBUG_TYPE_EXCEPTION 5
1143 #define IMAGE_DEBUG_TYPE_FIXUP 6
1144 #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7
1145 #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8
1147 #define FRAME_TRAP 1
1149 #define FRAME_NONFPO 3
1150 #define IMAGE_DEBUG_MISC_EXENAME 1
1151 #define N_BTMASK 0x000F
1152 #define N_TMASK 0x0030
1153 #define N_TMASK1 0x00C0
1154 #define N_TMASK2 0x00F0
1157 #define IS_TEXT_UNICODE_ASCII16 1
1158 #define IS_TEXT_UNICODE_REVERSE_ASCII16 16
1159 #define IS_TEXT_UNICODE_STATISTICS 2
1160 #define IS_TEXT_UNICODE_REVERSE_STATISTICS 32
1161 #define IS_TEXT_UNICODE_CONTROLS 4
1162 #define IS_TEXT_UNICODE_REVERSE_CONTROLS 64
1163 #define IS_TEXT_UNICODE_SIGNATURE 8
1164 #define IS_TEXT_UNICODE_REVERSE_SIGNATURE 128
1165 #define IS_TEXT_UNICODE_ILLEGAL_CHARS 256
1166 #define IS_TEXT_UNICODE_ODD_LENGTH 512
1167 #define IS_TEXT_UNICODE_NULL_BYTES 4096
1168 #define IS_TEXT_UNICODE_UNICODE_MASK 15
1169 #define IS_TEXT_UNICODE_REVERSE_MASK 240
1170 #define IS_TEXT_UNICODE_NOT_UNICODE_MASK 3840
1171 #define IS_TEXT_UNICODE_NOT_ASCII_MASK 61440
1172 #define SERVICE_KERNEL_DRIVER 1
1173 #define SERVICE_FILE_SYSTEM_DRIVER 2
1174 #define SERVICE_ADAPTER 4
1175 #define SERVICE_RECOGNIZER_DRIVER 8
1176 #define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER|SERVICE_FILE_SYSTEM_DRIVER|SERVICE_RECOGNIZER_DRIVER)
1177 #define SERVICE_WIN32_OWN_PROCESS 16
1178 #define SERVICE_WIN32_SHARE_PROCESS 32
1179 #define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS|SERVICE_WIN32_SHARE_PROCESS)
1180 #define SERVICE_INTERACTIVE_PROCESS 256
1181 #define SERVICE_TYPE_ALL (SERVICE_WIN32|SERVICE_ADAPTER|SERVICE_DRIVER|SERVICE_INTERACTIVE_PROCESS)
1182 #define SERVICE_BOOT_START 0
1183 #define SERVICE_SYSTEM_START 1
1184 #define SERVICE_AUTO_START 2
1185 #define SERVICE_DEMAND_START 3
1186 #define SERVICE_DISABLED 4
1187 #define SERVICE_ERROR_IGNORE 0
1188 #define SERVICE_ERROR_NORMAL 1
1189 #define SERVICE_ERROR_SEVERE 2
1190 #define SERVICE_ERROR_CRITICAL 3
1191 #define SE_OWNER_DEFAULTED 1
1192 #define SE_GROUP_DEFAULTED 2
1193 #define SE_DACL_PRESENT 4
1194 #define SE_DACL_DEFAULTED 8
1195 #define SE_SACL_PRESENT 16
1196 #define SE_SACL_DEFAULTED 32
1197 #define SE_DACL_AUTO_INHERIT_REQ 256
1198 #define SE_SACL_AUTO_INHERIT_REQ 512
1199 #define SE_DACL_AUTO_INHERITED 1024
1200 #define SE_SACL_AUTO_INHERITED 2048
1201 #define SE_DACL_PROTECTED 4096
1202 #define SE_SACL_PROTECTED 8192
1203 #define SE_RM_CONTROL_VALID 0x4000
1204 #define SE_SELF_RELATIVE 0x8000
1205 #define SECURITY_DESCRIPTOR_MIN_LENGTH 20
1206 #define SECURITY_DESCRIPTOR_REVISION 1
1207 #define SECURITY_DESCRIPTOR_REVISION1 1
1208 #define SE_PRIVILEGE_ENABLED_BY_DEFAULT 1
1209 #define SE_PRIVILEGE_ENABLED 2
1210 #define SE_PRIVILEGE_USED_FOR_ACCESS 0x80000000
1211 #define PRIVILEGE_SET_ALL_NECESSARY 1
1212 #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
1213 #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
1214 #define SECURITY_DYNAMIC_TRACKING TRUE
1215 #define SECURITY_STATIC_TRACKING FALSE
1216 /* also in ddk/ntifs.h */
1217 #define TOKEN_ASSIGN_PRIMARY (0x0001)
1218 #define TOKEN_DUPLICATE (0x0002)
1219 #define TOKEN_IMPERSONATE (0x0004)
1220 #define TOKEN_QUERY (0x0008)
1221 #define TOKEN_QUERY_SOURCE (0x0010)
1222 #define TOKEN_ADJUST_PRIVILEGES (0x0020)
1223 #define TOKEN_ADJUST_GROUPS (0x0040)
1224 #define TOKEN_ADJUST_DEFAULT (0x0080)
1225 #define TOKEN_ADJUST_SESSIONID (0x0100)
1226 #define TOKEN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
1227 TOKEN_ASSIGN_PRIMARY |\
1229 TOKEN_IMPERSONATE |\
1231 TOKEN_QUERY_SOURCE |\
1232 TOKEN_ADJUST_PRIVILEGES |\
1233 TOKEN_ADJUST_GROUPS |\
1234 TOKEN_ADJUST_DEFAULT |\
1235 TOKEN_ADJUST_SESSIONID)
1236 #define TOKEN_READ (STANDARD_RIGHTS_READ |\
1238 #define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\
1239 TOKEN_ADJUST_PRIVILEGES |\
1240 TOKEN_ADJUST_GROUPS |\
1241 TOKEN_ADJUST_DEFAULT)
1243 #define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE)
1244 #define TOKEN_SOURCE_LENGTH 8
1245 /* end ddk/ntifs.h */
1246 #define DLL_PROCESS_DETACH 0
1247 #define DLL_PROCESS_ATTACH 1
1248 #define DLL_THREAD_ATTACH 2
1249 #define DLL_THREAD_DETACH 3
1250 #define DBG_CONTINUE 0x10002
1251 #define DBG_TERMINATE_THREAD 0x40010003
1252 #define DBG_TERMINATE_PROCESS 0x40010004
1253 #define DBG_CONTROL_C 0x40010005
1254 #define DBG_CONTROL_BREAK 0x40010008
1255 #define DBG_EXCEPTION_NOT_HANDLED 0x80010001
1256 #define TAPE_ABSOLUTE_POSITION 0
1257 #define TAPE_LOGICAL_POSITION 1
1258 #define TAPE_PSEUDO_LOGICAL_POSITION 2
1259 #define TAPE_REWIND 0
1260 #define TAPE_ABSOLUTE_BLOCK 1
1261 #define TAPE_LOGICAL_BLOCK 2
1262 #define TAPE_PSEUDO_LOGICAL_BLOCK 3
1263 #define TAPE_SPACE_END_OF_DATA 4
1264 #define TAPE_SPACE_RELATIVE_BLOCKS 5
1265 #define TAPE_SPACE_FILEMARKS 6
1266 #define TAPE_SPACE_SEQUENTIAL_FMKS 7
1267 #define TAPE_SPACE_SETMARKS 8
1268 #define TAPE_SPACE_SEQUENTIAL_SMKS 9
1269 #define TAPE_DRIVE_FIXED 1
1270 #define TAPE_DRIVE_SELECT 2
1271 #define TAPE_DRIVE_INITIATOR 4
1272 #define TAPE_DRIVE_ERASE_SHORT 16
1273 #define TAPE_DRIVE_ERASE_LONG 32
1274 #define TAPE_DRIVE_ERASE_BOP_ONLY 64
1275 #define TAPE_DRIVE_ERASE_IMMEDIATE 128
1276 #define TAPE_DRIVE_TAPE_CAPACITY 256
1277 #define TAPE_DRIVE_TAPE_REMAINING 512
1278 #define TAPE_DRIVE_FIXED_BLOCK 1024
1279 #define TAPE_DRIVE_VARIABLE_BLOCK 2048
1280 #define TAPE_DRIVE_WRITE_PROTECT 4096
1281 #define TAPE_DRIVE_EOT_WZ_SIZE 8192
1282 #define TAPE_DRIVE_ECC 0x10000
1283 #define TAPE_DRIVE_COMPRESSION 0x20000
1284 #define TAPE_DRIVE_PADDING 0x40000
1285 #define TAPE_DRIVE_REPORT_SMKS 0x80000
1286 #define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x100000
1287 #define TAPE_DRIVE_GET_LOGICAL_BLK 0x200000
1288 #define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x400000
1289 #define TAPE_DRIVE_EJECT_MEDIA 0x1000000
1290 #define TAPE_DRIVE_CLEAN_REQUESTS 0x2000000
1291 #define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x4000000
1292 #define TAPE_DRIVE_RESERVED_BIT 0x80000000
1293 #define TAPE_DRIVE_LOAD_UNLOAD 0x80000001
1294 #define TAPE_DRIVE_TENSION 0x80000002
1295 #define TAPE_DRIVE_LOCK_UNLOCK 0x80000004
1296 #define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008
1297 #define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010
1298 #define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020
1299 #define TAPE_DRIVE_TENSION_IMMED 0x80000040
1300 #define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080
1301 #define TAPE_DRIVE_SET_ECC 0x80000100
1302 #define TAPE_DRIVE_SET_COMPRESSION 0x80000200
1303 #define TAPE_DRIVE_SET_PADDING 0x80000400
1304 #define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800
1305 #define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000
1306 #define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000
1307 #define TAPE_DRIVE_LOGICAL_BLK 0x80004000
1308 #define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000
1309 #define TAPE_DRIVE_END_OF_DATA 0x80010000
1310 #define TAPE_DRIVE_RELATIVE_BLKS 0x80020000
1311 #define TAPE_DRIVE_FILEMARKS 0x80040000
1312 #define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000
1313 #define TAPE_DRIVE_SETMARKS 0x80100000
1314 #define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000
1315 #define TAPE_DRIVE_REVERSE_POSITION 0x80400000
1316 #define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000
1317 #define TAPE_DRIVE_WRITE_SETMARKS 0x81000000
1318 #define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000
1319 #define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000
1320 #define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000
1321 #define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000
1322 #define TAPE_DRIVE_FORMAT 0xA0000000
1323 #define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000
1324 #define TAPE_DRIVE_HIGH_FEATURES 0x80000000
1325 #define TAPE_FIXED_PARTITIONS 0
1326 #define TAPE_INITIATOR_PARTITIONS 2
1327 #define TAPE_SELECT_PARTITIONS 1
1328 #define TAPE_FILEMARKS 1
1329 #define TAPE_LONG_FILEMARKS 3
1330 #define TAPE_SETMARKS 0
1331 #define TAPE_SHORT_FILEMARKS 2
1332 #define TAPE_ERASE_LONG 1
1333 #define TAPE_ERASE_SHORT 0
1335 #define TAPE_UNLOAD 1
1336 #define TAPE_TENSION 2
1338 #define TAPE_UNLOCK 4
1339 #define TAPE_FORMAT 5
1340 #if (_WIN32_WINNT >= 0x0500)
1341 #define VER_MINORVERSION 0x0000001
1342 #define VER_MAJORVERSION 0x0000002
1343 #define VER_BUILDNUMBER 0x0000004
1344 #define VER_PLATFORMID 0x0000008
1345 #define VER_SERVICEPACKMINOR 0x0000010
1346 #define VER_SERVICEPACKMAJOR 0x0000020
1347 #define VER_SUITENAME 0x0000040
1348 #define VER_PRODUCT_TYPE 0x0000080
1350 #define VER_GREATER 2
1351 #define VER_GREATER_EQUAL 3
1353 #define VER_LESS_EQUAL 5
1357 #define VER_PLATFORM_WIN32s 0
1358 #define VER_PLATFORM_WIN32_WINDOWS 1
1359 #define VER_PLATFORM_WIN32_NT 2
1360 #define VER_NT_WORKSTATION 1
1361 #define VER_NT_DOMAIN_CONTROLLER 2
1362 #define VER_NT_SERVER 3
1363 #define VER_SUITE_SMALLBUSINESS 1
1364 #define VER_SUITE_ENTERPRISE 2
1365 #define VER_SUITE_BACKOFFICE 4
1366 #define VER_SUITE_TERMINAL 16
1367 #define VER_SUITE_SMALLBUSINESS_RESTRICTED 32
1368 #define VER_SUITE_DATACENTER 128
1369 #define VER_SUITE_PERSONAL 512
1370 #define VER_SUITE_BLADE 1024
1371 #define WT_EXECUTEDEFAULT 0x00000000
1372 #define WT_EXECUTEINIOTHREAD 0x00000001
1373 #define WT_EXECUTEINWAITTHREAD 0x00000004
1374 #define WT_EXECUTEONLYONCE 0x00000008
1375 #define WT_EXECUTELONGFUNCTION 0x00000010
1376 #define WT_EXECUTEINTIMERTHREAD 0x00000020
1377 #define WT_EXECUTEINPERSISTENTTHREAD 0x00000080
1378 #define WT_TRANSFER_IMPERSONATION 0x00000100
1379 #if (_WIN32_WINNT >= 0x0501)
1380 #define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION 1
1381 #define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION 2
1382 #define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION 3
1383 #define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION 4
1384 #define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION 5
1385 #define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION 6
1386 #define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION 7
1387 #define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES 9
1388 #endif /* (_WIN32_WINNT >= 0x0501) */
1389 #define BTYPE(x) ((x)&N_BTMASK)
1390 #define ISPTR(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT))
1391 #define ISFCN(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION<<N_BTSHFT))
1392 #define ISARY(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY<<N_BTSHFT))
1393 #define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG||(x)==IMAGE_SYM_CLASS_UNION_TAG||(x)==IMAGE_SYM_CLASS_ENUM_TAG)
1394 #define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))
1395 #define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
1396 #define TLS_MINIMUM_AVAILABLE 64
1397 #define REPARSE_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
1398 #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer)
1399 #define MAXIMUM_REPARSE_DATA_BUFFER_SIZE 16384
1400 #define IO_REPARSE_TAG_RESERVED_ZERO 0
1401 #define IO_REPARSE_TAG_RESERVED_ONE 1
1402 #define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE
1403 #define IsReparseTagMicrosoft(x) ((x)&0x80000000)
1404 #define IsReparseTagHighLatency(x) ((x)&0x40000000)
1405 #define IsReparseTagNameSurrogate(x) ((x)&0x20000000)
1406 #define IO_REPARSE_TAG_VALID_VALUES 0xE000FFFF
1407 #define IsReparseTagValid(x) (!((x)&~IO_REPARSE_TAG_VALID_VALUES)&&((x)>IO_REPARSE_TAG_RESERVED_RANGE))
1408 #define IO_REPARSE_TAG_SYMBOLIC_LINK IO_REPARSE_TAG_RESERVED_ZERO
1409 #define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003
1411 typedef DWORD ACCESS_MASK
, *PACCESS_MASK
;
1413 #ifdef _GUID_DEFINED
1414 # warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
1417 #if ! (defined _GUID_DEFINED || defined GUID_DEFINED) /* also defined in basetyps.h */
1418 #define GUID_DEFINED
1419 typedef struct _GUID
{
1420 unsigned long Data1
;
1421 unsigned short Data2
;
1422 unsigned short Data3
;
1423 unsigned char Data4
[8];
1424 } GUID
, *REFGUID
, *LPGUID
;
1425 #define SYSTEM_LUID { 0x3E7, 0x0 }
1426 #endif /* GUID_DEFINED */
1428 /* ACE Access Types, also in ntifs.h */
1429 #define ACCESS_MIN_MS_ACE_TYPE (0x0)
1430 #define ACCESS_ALLOWED_ACE_TYPE (0x0)
1431 #define ACCESS_DENIED_ACE_TYPE (0x1)
1432 #define SYSTEM_AUDIT_ACE_TYPE (0x2)
1433 #define SYSTEM_ALARM_ACE_TYPE (0x3)
1434 #define ACCESS_MAX_MS_V2_ACE_TYPE (0x3)
1435 #define ACCESS_ALLOWED_COMPOUND_ACE_TYPE (0x4)
1436 #define ACCESS_MAX_MS_V3_ACE_TYPE (0x4)
1437 #define ACCESS_MIN_MS_OBJECT_ACE_TYPE (0x5)
1438 #define ACCESS_ALLOWED_OBJECT_ACE_TYPE (0x5)
1439 #define ACCESS_DENIED_OBJECT_ACE_TYPE (0x6)
1440 #define SYSTEM_AUDIT_OBJECT_ACE_TYPE (0x7)
1441 #define SYSTEM_ALARM_OBJECT_ACE_TYPE (0x8)
1442 #define ACCESS_MAX_MS_OBJECT_ACE_TYPE (0x8)
1443 #define ACCESS_MAX_MS_V4_ACE_TYPE (0x8)
1444 #define ACCESS_MAX_MS_ACE_TYPE (0x8)
1445 #define ACCESS_ALLOWED_CALLBACK_ACE_TYPE (0x9)
1446 #define ACCESS_DENIED_CALLBACK_ACE_TYPE (0xA)
1447 #define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE (0xB)
1448 #define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE (0xC)
1449 #define SYSTEM_AUDIT_CALLBACK_ACE_TYPE (0xD)
1450 #define SYSTEM_ALARM_CALLBACK_ACE_TYPE (0xE)
1451 #define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE (0xF)
1452 #define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE (0x10)
1453 #define ACCESS_MAX_MS_V5_ACE_TYPE (0x10)
1455 typedef struct _GENERIC_MAPPING
{
1456 ACCESS_MASK GenericRead
;
1457 ACCESS_MASK GenericWrite
;
1458 ACCESS_MASK GenericExecute
;
1459 ACCESS_MASK GenericAll
;
1460 } GENERIC_MAPPING
, *PGENERIC_MAPPING
;
1461 typedef struct _ACE_HEADER
{
1465 } ACE_HEADER
, *PACE_HEADER
;
1466 typedef struct _ACCESS_ALLOWED_ACE
{
1470 } ACCESS_ALLOWED_ACE
, *PACCESS_ALLOWED_ACE
;
1471 typedef struct _ACCESS_DENIED_ACE
{
1475 } ACCESS_DENIED_ACE
, *PACCESS_DENIED_ACE
;
1476 typedef struct _SYSTEM_AUDIT_ACE
{
1481 typedef SYSTEM_AUDIT_ACE
*PSYSTEM_AUDIT_ACE
;
1482 typedef struct _SYSTEM_ALARM_ACE
{
1486 } SYSTEM_ALARM_ACE
,*PSYSTEM_ALARM_ACE
;
1487 typedef struct _ACCESS_ALLOWED_OBJECT_ACE
{
1492 GUID InheritedObjectType
;
1494 } ACCESS_ALLOWED_OBJECT_ACE
,*PACCESS_ALLOWED_OBJECT_ACE
;
1495 typedef struct _ACCESS_DENIED_OBJECT_ACE
{
1500 GUID InheritedObjectType
;
1502 } ACCESS_DENIED_OBJECT_ACE
,*PACCESS_DENIED_OBJECT_ACE
;
1503 typedef struct _SYSTEM_AUDIT_OBJECT_ACE
{
1508 GUID InheritedObjectType
;
1510 } SYSTEM_AUDIT_OBJECT_ACE
,*PSYSTEM_AUDIT_OBJECT_ACE
;
1511 typedef struct _SYSTEM_ALARM_OBJECT_ACE
{
1516 GUID InheritedObjectType
;
1518 } SYSTEM_ALARM_OBJECT_ACE
,*PSYSTEM_ALARM_OBJECT_ACE
;
1519 typedef struct _ACL
{
1526 typedef struct _ACL_REVISION_INFORMATION
{
1528 } ACL_REVISION_INFORMATION
;
1529 typedef struct _ACL_SIZE_INFORMATION
{
1531 DWORD AclBytesInUse
;
1533 } ACL_SIZE_INFORMATION
;
1535 /* FIXME: add more machines */
1537 #define SIZE_OF_80387_REGISTERS 80
1538 #define CONTEXT_i386 0x10000
1539 #define CONTEXT_i486 0x10000
1540 #define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L)
1541 #define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L)
1542 #define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L)
1543 #define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L)
1544 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L)
1545 #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L)
1546 #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)
1547 #define MAXIMUM_SUPPORTED_EXTENSION 512
1548 typedef struct _FLOATING_SAVE_AREA
{
1553 DWORD ErrorSelector
;
1556 BYTE RegisterArea
[80];
1558 } FLOATING_SAVE_AREA
;
1559 typedef struct _CONTEXT
{
1567 FLOATING_SAVE_AREA FloatSave
;
1584 BYTE ExtendedRegisters
[MAXIMUM_SUPPORTED_EXTENSION
];
1586 #elif defined(_PPC_)
1587 #define CONTEXT_CONTROL 1L
1588 #define CONTEXT_FLOATING_POINT 2L
1589 #define CONTEXT_INTEGER 4L
1590 #define CONTEXT_DEBUG_REGISTERS 8L
1591 #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER)
1675 #elif defined(_ALPHA_)
1676 #define CONTEXT_ALPHA 0x20000
1677 #define CONTEXT_CONTROL (CONTEXT_ALPHA|1L)
1678 #define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA|2L)
1679 #define CONTEXT_INTEGER (CONTEXT_ALPHA|4L)
1680 #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER)
1681 typedef struct _CONTEXT
{
1755 /* These are the debug or break registers on the SH3 */
1756 typedef struct _DEBUG_REGISTERS
{
1769 } DEBUG_REGISTERS
, *PDEBUG_REGISTERS
;
1771 /* The following flags control the contents of the CONTEXT structure. */
1773 #define CONTEXT_SH3 0x00000040
1774 #define CONTEXT_SH4 0x000000c0 /* CONTEXT_SH3 | 0x80 - must contain the SH3 bits */
1777 #define CONTEXT_CONTROL (CONTEXT_SH3 | 0x00000001L)
1778 #define CONTEXT_INTEGER (CONTEXT_SH3 | 0x00000002L)
1779 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH3 | 0x00000008L)
1780 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS)
1782 #define CONTEXT_CONTROL (CONTEXT_SH4 | 0x00000001L)
1783 #define CONTEXT_INTEGER (CONTEXT_SH4 | 0x00000002L)
1784 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH4 | 0x00000008L)
1785 #define CONTEXT_FLOATING_POINT (CONTEXT_SH4 | 0x00000004L)
1786 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS | CONTEXT_FLOATING_POINT)
1791 /* This frame is used to store a limited processor context into the */
1792 /* Thread structure for CPUs which have no floating point support. */
1794 typedef struct _CONTEXT
{
1795 /* The flags values within this flag control the contents of */
1796 /* a CONTEXT record. */
1798 /* If the context record is used as an input parameter, then */
1799 /* for each portion of the context record controlled by a flag */
1800 /* whose value is set, it is assumed that that portion of the */
1801 /* context record contains valid context. If the context record */
1802 /* is being used to modify a thread's context, then only that */
1803 /* portion of the threads context will be modified. */
1805 /* If the context record is used as an IN OUT parameter to capture */
1806 /* the context of a thread, then only those portions of the thread's */
1807 /* context corresponding to set flags will be returned. */
1809 /* The context record is never used as an OUT only parameter. */
1814 /* This section is specified/returned if the ContextFlags word contains */
1815 /* the flag CONTEXT_INTEGER. */
1817 /* N.B. The registers RA and R15 are defined in this section, but are */
1818 /* considered part of the control context rather than part of the integer */
1842 /* This section is specified/returned if the ContextFlags word contains */
1843 /* the flag CONTEXT_CONTROL. */
1845 /* N.B. The registers r15 and ra are defined in the integer section, */
1846 /* but are considered part of the control context rather than part of */
1847 /* the integer context. */
1852 #if !defined(SH3e) && !defined(SH4)
1854 DEBUG_REGISTERS DebugRegisters
;
1867 /* The following flags control the contents of the CONTEXT structure. */
1869 #define CONTEXT_R4000 0x00010000 /* r4000 context */
1871 #define CONTEXT_CONTROL (CONTEXT_R4000 | 0x00000001L)
1872 #define CONTEXT_FLOATING_POINT (CONTEXT_R4000 | 0x00000002L)
1873 #define CONTEXT_INTEGER (CONTEXT_R4000 | 0x00000004L)
1875 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
1879 /* N.B. This frame must be exactly a multiple of 16 bytes in length. */
1881 /* This frame has a several purposes: 1) it is used as an argument to */
1882 /* NtContinue, 2) it is used to constuct a call frame for APC delivery, */
1883 /* 3) it is used to construct a call frame for exception dispatching */
1884 /* in user mode, and 4) it is used in the user level thread creation */
1887 /* The layout of the record conforms to a standard call frame. */
1890 typedef struct _CONTEXT
{
1892 /* This section is always present and is used as an argument build */
1897 /* This section is specified/returned if the ContextFlags word contains */
1898 /* the flag CONTEXT_FLOATING_POINT. */
1933 /* This section is specified/returned if the ContextFlags word contains */
1934 /* the flag CONTEXT_INTEGER. */
1936 /* N.B. The registers gp, sp, and ra are defined in this section, but are */
1937 /* considered part of the control context rather than part of the integer */
1940 /* N.B. Register zero is not stored in the frame. */
1977 /* This section is specified/returned if the ContextFlags word contains */
1978 /* the flag CONTEXT_FLOATING_POINT. */
1982 /* This section is specified/returned if the ContextFlags word contains */
1983 /* the flag CONTEXT_CONTROL. */
1985 /* N.B. The registers gp, sp, and ra are defined in the integer section, */
1986 /* but are considered part of the control context rather than part of */
1987 /* the integer context. */
1992 /* The flags values within this flag control the contents of */
1993 /* a CONTEXT record. */
1995 /* If the context record is used as an input parameter, then */
1996 /* for each portion of the context record controlled by a flag */
1997 /* whose value is set, it is assumed that that portion of the */
1998 /* context record contains valid context. If the context record */
1999 /* is being used to modify a thread's context, then only that */
2000 /* portion of the threads context will be modified. */
2002 /* If the context record is used as an IN OUT parameter to capture */
2003 /* the context of a thread, then only those portions of the thread's */
2004 /* context corresponding to set flags will be returned. */
2006 /* The context record is never used as an OUT only parameter. */
2015 /* The following flags control the contents of the CONTEXT structure. */
2017 #define CONTEXT_ARM 0x0000040
2018 #define CONTEXT_CONTROL (CONTEXT_ARM | 0x00000001L)
2019 #define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002L)
2021 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER)
2023 typedef struct _CONTEXT
{
2024 /* The flags values within this flag control the contents of
2027 If the context record is used as an input parameter, then
2028 for each portion of the context record controlled by a flag
2029 whose value is set, it is assumed that that portion of the
2030 context record contains valid context. If the context record
2031 is being used to modify a thread's context, then only that
2032 portion of the threads context will be modified.
2034 If the context record is used as an IN OUT parameter to capture
2035 the context of a thread, then only those portions of the thread's
2036 context corresponding to set flags will be returned.
2038 The context record is never used as an OUT only parameter. */
2042 /* This section is specified/returned if the ContextFlags word contains
2043 the flag CONTEXT_INTEGER. */
2065 #error "undefined processor type"
2067 typedef CONTEXT
*PCONTEXT
,*LPCONTEXT
;
2068 typedef struct _EXCEPTION_RECORD
{
2069 DWORD ExceptionCode
;
2070 DWORD ExceptionFlags
;
2071 struct _EXCEPTION_RECORD
*ExceptionRecord
;
2072 PVOID ExceptionAddress
;
2073 DWORD NumberParameters
;
2074 DWORD ExceptionInformation
[EXCEPTION_MAXIMUM_PARAMETERS
];
2075 } EXCEPTION_RECORD
,*PEXCEPTION_RECORD
,*LPEXCEPTION_RECORD
;
2076 typedef struct _EXCEPTION_POINTERS
{
2077 PEXCEPTION_RECORD ExceptionRecord
;
2078 PCONTEXT ContextRecord
;
2079 } EXCEPTION_POINTERS
,*PEXCEPTION_POINTERS
,*LPEXCEPTION_POINTERS
;
2080 typedef union _LARGE_INTEGER
{
2085 #if ! defined(NONAMELESSUNION) || defined(__cplusplus)
2086 _ANONYMOUS_STRUCT
struct {
2090 #endif /* NONAMELESSUNION */
2092 } LARGE_INTEGER
, *PLARGE_INTEGER
;
2093 typedef union _ULARGE_INTEGER
{
2098 #if ! defined(NONAMELESSUNION) || defined(__cplusplus)
2099 _ANONYMOUS_STRUCT
struct {
2103 #endif /* NONAMELESSUNION */
2105 } ULARGE_INTEGER
, *PULARGE_INTEGER
;
2106 typedef struct _LUID
{
2110 #pragma pack(push,4)
2111 typedef struct _LUID_AND_ATTRIBUTES
{
2114 } LUID_AND_ATTRIBUTES
, *PLUID_AND_ATTRIBUTES
;
2116 typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY
[ANYSIZE_ARRAY
];
2117 typedef LUID_AND_ATTRIBUTES_ARRAY
*PLUID_AND_ATTRIBUTES_ARRAY
;
2118 typedef struct _PRIVILEGE_SET
{
2119 DWORD PrivilegeCount
;
2121 LUID_AND_ATTRIBUTES Privilege
[ANYSIZE_ARRAY
];
2122 } PRIVILEGE_SET
,*PPRIVILEGE_SET
;
2123 typedef struct _SECURITY_ATTRIBUTES
{
2125 LPVOID lpSecurityDescriptor
;
2126 BOOL bInheritHandle
;
2127 } SECURITY_ATTRIBUTES
,*PSECURITY_ATTRIBUTES
,*LPSECURITY_ATTRIBUTES
;
2128 typedef enum _SECURITY_IMPERSONATION_LEVEL
{
2130 SecurityIdentification
,
2131 SecurityImpersonation
,
2133 } SECURITY_IMPERSONATION_LEVEL
,*PSECURITY_IMPERSONATION_LEVEL
;
2134 typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE
,*PSECURITY_CONTEXT_TRACKING_MODE
;
2135 typedef struct _SECURITY_QUALITY_OF_SERVICE
{
2137 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;
2138 SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode
;
2139 BOOLEAN EffectiveOnly
;
2140 } SECURITY_QUALITY_OF_SERVICE
,*PSECURITY_QUALITY_OF_SERVICE
;
2141 typedef PVOID PACCESS_TOKEN
;
2142 typedef struct _SE_IMPERSONATION_STATE
{
2143 PACCESS_TOKEN Token
;
2145 BOOLEAN EffectiveOnly
;
2146 SECURITY_IMPERSONATION_LEVEL Level
;
2147 } SE_IMPERSONATION_STATE
,*PSE_IMPERSONATION_STATE
;
2148 typedef struct _SID_IDENTIFIER_AUTHORITY
{
2150 } SID_IDENTIFIER_AUTHORITY
,*PSID_IDENTIFIER_AUTHORITY
,*LPSID_IDENTIFIER_AUTHORITY
;
2152 typedef struct _SID
{
2154 BYTE SubAuthorityCount
;
2155 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
;
2156 DWORD SubAuthority
[ANYSIZE_ARRAY
];
2158 typedef struct _SID_AND_ATTRIBUTES
{
2161 } SID_AND_ATTRIBUTES
, *PSID_AND_ATTRIBUTES
;
2162 typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY
[ANYSIZE_ARRAY
];
2163 typedef SID_AND_ATTRIBUTES_ARRAY
*PSID_AND_ATTRIBUTES_ARRAY
;
2164 typedef struct _TOKEN_SOURCE
{
2165 CHAR SourceName
[TOKEN_SOURCE_LENGTH
];
2166 LUID SourceIdentifier
;
2167 } TOKEN_SOURCE
,*PTOKEN_SOURCE
;
2168 typedef struct _TOKEN_CONTROL
{
2170 LUID AuthenticationId
;
2172 TOKEN_SOURCE TokenSource
;
2173 } TOKEN_CONTROL
,*PTOKEN_CONTROL
;
2174 typedef struct _TOKEN_DEFAULT_DACL
{
2176 } TOKEN_DEFAULT_DACL
,*PTOKEN_DEFAULT_DACL
;
2177 typedef struct _TOKEN_GROUPS
{
2179 SID_AND_ATTRIBUTES Groups
[ANYSIZE_ARRAY
];
2180 } TOKEN_GROUPS
,*PTOKEN_GROUPS
,*LPTOKEN_GROUPS
;
2181 typedef struct _TOKEN_GROUPS_AND_PRIVILEGES
{
2184 PSID_AND_ATTRIBUTES Sids
;
2185 ULONG RestrictedSidCount
;
2186 ULONG RestrictedSidLength
;
2187 PSID_AND_ATTRIBUTES RestrictedSids
;
2188 ULONG PrivilegeCount
;
2189 ULONG PrivilegeLength
;
2190 PLUID_AND_ATTRIBUTES Privileges
;
2191 LUID AuthenticationId
;
2192 } TOKEN_GROUPS_AND_PRIVILEGES
, *PTOKEN_GROUPS_AND_PRIVILEGES
;
2193 typedef struct _TOKEN_ORIGIN
{
2194 LUID OriginatingLogonSession
;
2195 } TOKEN_ORIGIN
, *PTOKEN_ORIGIN
;
2196 typedef struct _TOKEN_OWNER
{
2198 } TOKEN_OWNER
,*PTOKEN_OWNER
;
2199 typedef struct _TOKEN_PRIMARY_GROUP
{
2201 } TOKEN_PRIMARY_GROUP
,*PTOKEN_PRIMARY_GROUP
;
2202 typedef struct _TOKEN_PRIVILEGES
{
2203 DWORD PrivilegeCount
;
2204 LUID_AND_ATTRIBUTES Privileges
[ANYSIZE_ARRAY
];
2205 } TOKEN_PRIVILEGES
,*PTOKEN_PRIVILEGES
,*LPTOKEN_PRIVILEGES
;
2206 typedef enum tagTOKEN_TYPE
{
2209 } TOKEN_TYPE
,*PTOKEN_TYPE
;
2210 typedef struct _TOKEN_STATISTICS
{
2212 LUID AuthenticationId
;
2213 LARGE_INTEGER ExpirationTime
;
2214 TOKEN_TYPE TokenType
;
2215 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;
2216 DWORD DynamicCharged
;
2217 DWORD DynamicAvailable
;
2219 DWORD PrivilegeCount
;
2221 } TOKEN_STATISTICS
, *PTOKEN_STATISTICS
;
2222 typedef struct _TOKEN_USER
{
2223 SID_AND_ATTRIBUTES User
;
2224 } TOKEN_USER
, *PTOKEN_USER
;
2225 typedef DWORD SECURITY_INFORMATION
,*PSECURITY_INFORMATION
;
2226 typedef WORD SECURITY_DESCRIPTOR_CONTROL
,*PSECURITY_DESCRIPTOR_CONTROL
;
2227 typedef struct _SECURITY_DESCRIPTOR
{
2230 SECURITY_DESCRIPTOR_CONTROL Control
;
2235 } SECURITY_DESCRIPTOR
, *PSECURITY_DESCRIPTOR
, *PISECURITY_DESCRIPTOR
;
2236 typedef struct _SECURITY_DESCRIPTOR_RELATIVE
{
2239 SECURITY_DESCRIPTOR_CONTROL Control
;
2244 } SECURITY_DESCRIPTOR_RELATIVE
, *PISECURITY_DESCRIPTOR_RELATIVE
;
2245 typedef enum _TOKEN_INFORMATION_CLASS
{
2246 TokenUser
=1,TokenGroups
,TokenPrivileges
,TokenOwner
,
2247 TokenPrimaryGroup
,TokenDefaultDacl
,TokenSource
,TokenType
,
2248 TokenImpersonationLevel
,TokenStatistics
,TokenRestrictedSids
,
2249 TokenSessionId
,TokenGroupsAndPrivileges
,TokenSessionReference
,
2250 TokenSandBoxInert
,TokenAuditPolicy
,TokenOrigin
,
2251 } TOKEN_INFORMATION_CLASS
;
2252 typedef enum _SID_NAME_USE
{
2253 SidTypeUser
=1,SidTypeGroup
,SidTypeDomain
,SidTypeAlias
,
2254 SidTypeWellKnownGroup
,SidTypeDeletedAccount
,SidTypeInvalid
,
2256 } SID_NAME_USE
,*PSID_NAME_USE
;
2257 typedef struct _QUOTA_LIMITS
{
2258 SIZE_T PagedPoolLimit
;
2259 SIZE_T NonPagedPoolLimit
;
2260 SIZE_T MinimumWorkingSetSize
;
2261 SIZE_T MaximumWorkingSetSize
;
2262 SIZE_T PagefileLimit
;
2263 LARGE_INTEGER TimeLimit
;
2264 } QUOTA_LIMITS
,*PQUOTA_LIMITS
;
2265 typedef struct _IO_COUNTERS
{
2266 ULONGLONG ReadOperationCount
;
2267 ULONGLONG WriteOperationCount
;
2268 ULONGLONG OtherOperationCount
;
2269 ULONGLONG ReadTransferCount
;
2270 ULONGLONG WriteTransferCount
;
2271 ULONGLONG OtherTransferCount
;
2272 } IO_COUNTERS
, *PIO_COUNTERS
;
2273 typedef struct _FILE_NOTIFY_INFORMATION
{
2274 DWORD NextEntryOffset
;
2276 DWORD FileNameLength
;
2278 } FILE_NOTIFY_INFORMATION
,*PFILE_NOTIFY_INFORMATION
;
2279 typedef struct _TAPE_ERASE
{
2282 } TAPE_ERASE
,*PTAPE_ERASE
;
2283 typedef struct _TAPE_GET_DRIVE_PARAMETERS
{
2285 BOOLEAN Compression
;
2286 BOOLEAN DataPadding
;
2287 BOOLEAN ReportSetmarks
;
2288 DWORD DefaultBlockSize
;
2289 DWORD MaximumBlockSize
;
2290 DWORD MinimumBlockSize
;
2291 DWORD MaximumPartitionCount
;
2294 DWORD EOTWarningZoneSize
;
2295 } TAPE_GET_DRIVE_PARAMETERS
,*PTAPE_GET_DRIVE_PARAMETERS
;
2296 typedef struct _TAPE_GET_MEDIA_PARAMETERS
{
2297 LARGE_INTEGER Capacity
;
2298 LARGE_INTEGER Remaining
;
2300 DWORD PartitionCount
;
2301 BOOLEAN WriteProtected
;
2302 } TAPE_GET_MEDIA_PARAMETERS
,*PTAPE_GET_MEDIA_PARAMETERS
;
2303 typedef struct _TAPE_GET_POSITION
{
2306 LARGE_INTEGER Offset
;
2307 } TAPE_GET_POSITION
,*PTAPE_GET_POSITION
;
2308 typedef struct _TAPE_PREPARE
{
2311 } TAPE_PREPARE
,*PTAPE_PREPARE
;
2312 typedef struct _TAPE_SET_DRIVE_PARAMETERS
{
2314 BOOLEAN Compression
;
2315 BOOLEAN DataPadding
;
2316 BOOLEAN ReportSetmarks
;
2317 ULONG EOTWarningZoneSize
;
2318 } TAPE_SET_DRIVE_PARAMETERS
,*PTAPE_SET_DRIVE_PARAMETERS
;
2319 typedef struct _TAPE_SET_MEDIA_PARAMETERS
{
2321 } TAPE_SET_MEDIA_PARAMETERS
,*PTAPE_SET_MEDIA_PARAMETERS
;
2322 typedef struct _TAPE_SET_POSITION
{
2325 LARGE_INTEGER Offset
;
2327 } TAPE_SET_POSITION
,*PTAPE_SET_POSITION
;
2328 typedef struct _TAPE_WRITE_MARKS
{
2332 } TAPE_WRITE_MARKS
,*PTAPE_WRITE_MARKS
;
2333 typedef struct _TAPE_CREATE_PARTITION
{
2337 } TAPE_CREATE_PARTITION
,*PTAPE_CREATE_PARTITION
;
2338 typedef struct _MEMORY_BASIC_INFORMATION
{
2340 PVOID AllocationBase
;
2341 DWORD AllocationProtect
;
2346 } MEMORY_BASIC_INFORMATION
,*PMEMORY_BASIC_INFORMATION
;
2347 typedef struct _MESSAGE_RESOURCE_ENTRY
{
2351 } MESSAGE_RESOURCE_ENTRY
,*PMESSAGE_RESOURCE_ENTRY
;
2352 typedef struct _MESSAGE_RESOURCE_BLOCK
{
2355 DWORD OffsetToEntries
;
2356 } MESSAGE_RESOURCE_BLOCK
,*PMESSAGE_RESOURCE_BLOCK
;
2357 typedef struct _MESSAGE_RESOURCE_DATA
{
2358 DWORD NumberOfBlocks
;
2359 MESSAGE_RESOURCE_BLOCK Blocks
[1];
2360 } MESSAGE_RESOURCE_DATA
,*PMESSAGE_RESOURCE_DATA
;
2361 typedef struct _LIST_ENTRY
{
2362 struct _LIST_ENTRY
*Flink
;
2363 struct _LIST_ENTRY
*Blink
;
2364 } LIST_ENTRY
,*PLIST_ENTRY
;
2365 typedef struct _SINGLE_LIST_ENTRY
{
2366 struct _SINGLE_LIST_ENTRY
*Next
;
2367 } SINGLE_LIST_ENTRY
,*PSINGLE_LIST_ENTRY
;
2369 #ifndef _SLIST_HEADER_
2370 #define _SLIST_HEADER_
2371 #define SLIST_ENTRY SINGLE_LIST_ENTRY
2372 #define _SLIST_ENTRY _SINGLE_LIST_ENTRY
2373 #define PSLIST_ENTRY PSINGLE_LIST_ENTRY
2374 typedef union _SLIST_HEADER
{
2375 ULONGLONG Alignment
;
2376 _ANONYMOUS_STRUCT
struct {
2381 } SLIST_HEADER
,*PSLIST_HEADER
;
2382 #endif /* !_SLIST_HEADER_ */
2384 typedef struct _RTL_CRITICAL_SECTION_DEBUG
{
2386 WORD CreatorBackTraceIndex
;
2387 struct _RTL_CRITICAL_SECTION
*CriticalSection
;
2388 LIST_ENTRY ProcessLocksList
;
2390 DWORD ContentionCount
;
2392 } RTL_CRITICAL_SECTION_DEBUG
,*PRTL_CRITICAL_SECTION_DEBUG
;
2393 typedef struct _RTL_CRITICAL_SECTION
{
2394 PRTL_CRITICAL_SECTION_DEBUG DebugInfo
;
2396 LONG RecursionCount
;
2397 HANDLE OwningThread
;
2398 HANDLE LockSemaphore
;
2399 ULONG_PTR SpinCount
;
2400 } RTL_CRITICAL_SECTION
,*PRTL_CRITICAL_SECTION
;
2401 typedef struct _EVENTLOGRECORD
{
2405 DWORD TimeGenerated
;
2412 DWORD ClosingRecordNumber
;
2414 DWORD UserSidLength
;
2415 DWORD UserSidOffset
;
2418 } EVENTLOGRECORD
,*PEVENTLOGRECORD
;
2419 typedef struct _OSVERSIONINFOA
{
2420 DWORD dwOSVersionInfoSize
;
2421 DWORD dwMajorVersion
;
2422 DWORD dwMinorVersion
;
2423 DWORD dwBuildNumber
;
2425 CHAR szCSDVersion
[128];
2426 } OSVERSIONINFOA
,*POSVERSIONINFOA
,*LPOSVERSIONINFOA
;
2427 typedef struct _OSVERSIONINFOW
{
2428 DWORD dwOSVersionInfoSize
;
2429 DWORD dwMajorVersion
;
2430 DWORD dwMinorVersion
;
2431 DWORD dwBuildNumber
;
2433 WCHAR szCSDVersion
[128];
2434 } OSVERSIONINFOW
,*POSVERSIONINFOW
,*LPOSVERSIONINFOW
;
2435 typedef struct _OSVERSIONINFOEXA
{
2436 DWORD dwOSVersionInfoSize
;
2437 DWORD dwMajorVersion
;
2438 DWORD dwMinorVersion
;
2439 DWORD dwBuildNumber
;
2441 CHAR szCSDVersion
[128];
2442 WORD wServicePackMajor
;
2443 WORD wServicePackMinor
;
2447 } OSVERSIONINFOEXA
, *POSVERSIONINFOEXA
, *LPOSVERSIONINFOEXA
;
2448 typedef struct _OSVERSIONINFOEXW
{
2449 DWORD dwOSVersionInfoSize
;
2450 DWORD dwMajorVersion
;
2451 DWORD dwMinorVersion
;
2452 DWORD dwBuildNumber
;
2454 WCHAR szCSDVersion
[128];
2455 WORD wServicePackMajor
;
2456 WORD wServicePackMinor
;
2460 } OSVERSIONINFOEXW
, *POSVERSIONINFOEXW
, *LPOSVERSIONINFOEXW
;
2461 #pragma pack(push,2)
2462 typedef struct _IMAGE_VXD_HEADER
{
2477 DWORD e32_lastpagesize
;
2478 DWORD e32_fixupsize
;
2495 DWORD e32_impmodcnt
;
2501 DWORD e32_cbnrestab
;
2504 DWORD e32_debuginfo
;
2506 DWORD e32_instpreload
;
2507 DWORD e32_instdemand
;
2510 DWORD e32_winresoff
;
2511 DWORD e32_winreslen
;
2514 } IMAGE_VXD_HEADER
,*PIMAGE_VXD_HEADER
;
2516 #pragma pack(push,4)
2517 typedef struct _IMAGE_FILE_HEADER
{
2519 WORD NumberOfSections
;
2520 DWORD TimeDateStamp
;
2521 DWORD PointerToSymbolTable
;
2522 DWORD NumberOfSymbols
;
2523 WORD SizeOfOptionalHeader
;
2524 WORD Characteristics
;
2525 } IMAGE_FILE_HEADER
, *PIMAGE_FILE_HEADER
;
2526 typedef struct _IMAGE_DATA_DIRECTORY
{
2527 DWORD VirtualAddress
;
2529 } IMAGE_DATA_DIRECTORY
,*PIMAGE_DATA_DIRECTORY
;
2530 typedef struct _IMAGE_OPTIONAL_HEADER32
{
2532 BYTE MajorLinkerVersion
;
2533 BYTE MinorLinkerVersion
;
2535 DWORD SizeOfInitializedData
;
2536 DWORD SizeOfUninitializedData
;
2537 DWORD AddressOfEntryPoint
;
2541 DWORD SectionAlignment
;
2542 DWORD FileAlignment
;
2543 WORD MajorOperatingSystemVersion
;
2544 WORD MinorOperatingSystemVersion
;
2545 WORD MajorImageVersion
;
2546 WORD MinorImageVersion
;
2547 WORD MajorSubsystemVersion
;
2548 WORD MinorSubsystemVersion
;
2549 DWORD Win32VersionValue
;
2551 DWORD SizeOfHeaders
;
2554 WORD DllCharacteristics
;
2555 DWORD SizeOfStackReserve
;
2556 DWORD SizeOfStackCommit
;
2557 DWORD SizeOfHeapReserve
;
2558 DWORD SizeOfHeapCommit
;
2560 DWORD NumberOfRvaAndSizes
;
2561 IMAGE_DATA_DIRECTORY DataDirectory
[IMAGE_NUMBEROF_DIRECTORY_ENTRIES
];
2562 } IMAGE_OPTIONAL_HEADER32
,*PIMAGE_OPTIONAL_HEADER32
;
2563 typedef struct _IMAGE_OPTIONAL_HEADER64
{
2565 BYTE MajorLinkerVersion
;
2566 BYTE MinorLinkerVersion
;
2568 DWORD SizeOfInitializedData
;
2569 DWORD SizeOfUninitializedData
;
2570 DWORD AddressOfEntryPoint
;
2572 ULONGLONG ImageBase
;
2573 DWORD SectionAlignment
;
2574 DWORD FileAlignment
;
2575 WORD MajorOperatingSystemVersion
;
2576 WORD MinorOperatingSystemVersion
;
2577 WORD MajorImageVersion
;
2578 WORD MinorImageVersion
;
2579 WORD MajorSubsystemVersion
;
2580 WORD MinorSubsystemVersion
;
2583 DWORD SizeOfHeaders
;
2586 WORD DllCharacteristics
;
2587 ULONGLONG SizeOfStackReserve
;
2588 ULONGLONG SizeOfStackCommit
;
2589 ULONGLONG SizeOfHeapReserve
;
2590 ULONGLONG SizeOfHeapCommit
;
2592 DWORD NumberOfRvaAndSizes
;
2593 IMAGE_DATA_DIRECTORY DataDirectory
[IMAGE_NUMBEROF_DIRECTORY_ENTRIES
];
2594 } IMAGE_OPTIONAL_HEADER64
,*PIMAGE_OPTIONAL_HEADER64
;
2595 typedef struct _IMAGE_ROM_OPTIONAL_HEADER
{
2597 BYTE MajorLinkerVersion
;
2598 BYTE MinorLinkerVersion
;
2600 DWORD SizeOfInitializedData
;
2601 DWORD SizeOfUninitializedData
;
2602 DWORD AddressOfEntryPoint
;
2609 } IMAGE_ROM_OPTIONAL_HEADER
,*PIMAGE_ROM_OPTIONAL_HEADER
;
2611 #pragma pack(push,2)
2612 typedef struct _IMAGE_DOS_HEADER
{
2632 } IMAGE_DOS_HEADER
,*PIMAGE_DOS_HEADER
;
2633 typedef struct _IMAGE_OS2_HEADER
{
2659 BYTE ne_flagsothers
;
2661 WORD ne_psegrefbytes
;
2664 } IMAGE_OS2_HEADER
,*PIMAGE_OS2_HEADER
;
2666 #pragma pack(push,4)
2667 typedef struct _IMAGE_NT_HEADERS32
{
2669 IMAGE_FILE_HEADER FileHeader
;
2670 IMAGE_OPTIONAL_HEADER32 OptionalHeader
;
2671 } IMAGE_NT_HEADERS32
,*PIMAGE_NT_HEADERS32
;
2672 typedef struct _IMAGE_NT_HEADERS64
{
2674 IMAGE_FILE_HEADER FileHeader
;
2675 IMAGE_OPTIONAL_HEADER64 OptionalHeader
;
2676 } IMAGE_NT_HEADERS64
,*PIMAGE_NT_HEADERS64
;
2678 typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER
;
2679 typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER
;
2680 typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS
;
2681 typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS
;
2683 typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER
;
2684 typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER
;
2685 typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS
;
2686 typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS
;
2688 typedef struct _IMAGE_ROM_HEADERS
{
2689 IMAGE_FILE_HEADER FileHeader
;
2690 IMAGE_ROM_OPTIONAL_HEADER OptionalHeader
;
2691 } IMAGE_ROM_HEADERS
,*PIMAGE_ROM_HEADERS
;
2692 typedef struct _IMAGE_SECTION_HEADER
{
2693 BYTE Name
[IMAGE_SIZEOF_SHORT_NAME
];
2695 DWORD PhysicalAddress
;
2698 DWORD VirtualAddress
;
2699 DWORD SizeOfRawData
;
2700 DWORD PointerToRawData
;
2701 DWORD PointerToRelocations
;
2702 DWORD PointerToLinenumbers
;
2703 WORD NumberOfRelocations
;
2704 WORD NumberOfLinenumbers
;
2705 DWORD Characteristics
;
2706 } IMAGE_SECTION_HEADER
,*PIMAGE_SECTION_HEADER
;
2708 #pragma pack(push,2)
2709 typedef struct _IMAGE_SYMBOL
{
2719 SHORT SectionNumber
;
2722 BYTE NumberOfAuxSymbols
;
2723 } IMAGE_SYMBOL
,*PIMAGE_SYMBOL
;
2724 typedef union _IMAGE_AUX_SYMBOL
{
2736 DWORD PointerToLinenumber
;
2737 DWORD PointerToNextFunction
;
2746 BYTE Name
[IMAGE_SIZEOF_SYMBOL
];
2750 WORD NumberOfRelocations
;
2751 WORD NumberOfLinenumbers
;
2756 } IMAGE_AUX_SYMBOL
,*PIMAGE_AUX_SYMBOL
;
2757 typedef struct _IMAGE_COFF_SYMBOLS_HEADER
{
2758 DWORD NumberOfSymbols
;
2759 DWORD LvaToFirstSymbol
;
2760 DWORD NumberOfLinenumbers
;
2761 DWORD LvaToFirstLinenumber
;
2762 DWORD RvaToFirstByteOfCode
;
2763 DWORD RvaToLastByteOfCode
;
2764 DWORD RvaToFirstByteOfData
;
2765 DWORD RvaToLastByteOfData
;
2766 } IMAGE_COFF_SYMBOLS_HEADER
,*PIMAGE_COFF_SYMBOLS_HEADER
;
2767 typedef struct _IMAGE_RELOCATION
{
2768 _ANONYMOUS_UNION
union {
2769 DWORD VirtualAddress
;
2772 DWORD SymbolTableIndex
;
2774 } IMAGE_RELOCATION
,*PIMAGE_RELOCATION
;
2776 #pragma pack(push,4)
2777 typedef struct _IMAGE_BASE_RELOCATION
{
2778 DWORD VirtualAddress
;
2780 } IMAGE_BASE_RELOCATION
,*PIMAGE_BASE_RELOCATION
;
2782 #pragma pack(push,2)
2783 typedef struct _IMAGE_LINENUMBER
{
2785 DWORD SymbolTableIndex
;
2786 DWORD VirtualAddress
;
2789 } IMAGE_LINENUMBER
,*PIMAGE_LINENUMBER
;
2791 #pragma pack(push,4)
2792 typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER
{
2800 } IMAGE_ARCHIVE_MEMBER_HEADER
,*PIMAGE_ARCHIVE_MEMBER_HEADER
;
2801 typedef struct _IMAGE_EXPORT_DIRECTORY
{
2802 DWORD Characteristics
;
2803 DWORD TimeDateStamp
;
2808 DWORD NumberOfFunctions
;
2809 DWORD NumberOfNames
;
2810 DWORD AddressOfFunctions
;
2811 DWORD AddressOfNames
;
2812 DWORD AddressOfNameOrdinals
;
2813 } IMAGE_EXPORT_DIRECTORY
,*PIMAGE_EXPORT_DIRECTORY
;
2814 typedef struct _IMAGE_IMPORT_BY_NAME
{
2817 } IMAGE_IMPORT_BY_NAME
,*PIMAGE_IMPORT_BY_NAME
;
2818 typedef struct _IMAGE_THUNK_DATA
{
2820 PBYTE ForwarderString
;
2823 PIMAGE_IMPORT_BY_NAME AddressOfData
;
2825 } IMAGE_THUNK_DATA
,*PIMAGE_THUNK_DATA
;
2826 typedef struct _IMAGE_IMPORT_DESCRIPTOR
{
2827 _ANONYMOUS_UNION
union {
2828 DWORD Characteristics
;
2829 PIMAGE_THUNK_DATA OriginalFirstThunk
;
2831 DWORD TimeDateStamp
;
2832 DWORD ForwarderChain
;
2834 PIMAGE_THUNK_DATA FirstThunk
;
2835 } IMAGE_IMPORT_DESCRIPTOR
,*PIMAGE_IMPORT_DESCRIPTOR
;
2836 typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR
{
2837 DWORD TimeDateStamp
;
2838 WORD OffsetModuleName
;
2839 WORD NumberOfModuleForwarderRefs
;
2840 } IMAGE_BOUND_IMPORT_DESCRIPTOR
,*PIMAGE_BOUND_IMPORT_DESCRIPTOR
;
2841 typedef struct _IMAGE_BOUND_FORWARDER_REF
{
2842 DWORD TimeDateStamp
;
2843 WORD OffsetModuleName
;
2845 } IMAGE_BOUND_FORWARDER_REF
,*PIMAGE_BOUND_FORWARDER_REF
;
2846 typedef void(NTAPI
*PIMAGE_TLS_CALLBACK
)(PVOID
,DWORD
,PVOID
);
2847 typedef struct _IMAGE_TLS_DIRECTORY
{
2848 DWORD StartAddressOfRawData
;
2849 DWORD EndAddressOfRawData
;
2850 PDWORD AddressOfIndex
;
2851 PIMAGE_TLS_CALLBACK
*AddressOfCallBacks
;
2852 DWORD SizeOfZeroFill
;
2853 DWORD Characteristics
;
2854 } IMAGE_TLS_DIRECTORY
,*PIMAGE_TLS_DIRECTORY
;
2855 typedef struct _IMAGE_RESOURCE_DIRECTORY
{
2856 DWORD Characteristics
;
2857 DWORD TimeDateStamp
;
2860 WORD NumberOfNamedEntries
;
2861 WORD NumberOfIdEntries
;
2862 } IMAGE_RESOURCE_DIRECTORY
,*PIMAGE_RESOURCE_DIRECTORY
;
2863 _ANONYMOUS_STRUCT
typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY
{
2864 _ANONYMOUS_UNION
union {
2865 _ANONYMOUS_STRUCT
struct {
2866 DWORD NameOffset
:31;
2867 DWORD NameIsString
:1;
2872 _ANONYMOUS_UNION
union {
2874 _ANONYMOUS_STRUCT
struct {
2875 DWORD OffsetToDirectory
:31;
2876 DWORD DataIsDirectory
:1;
2879 } IMAGE_RESOURCE_DIRECTORY_ENTRY
,*PIMAGE_RESOURCE_DIRECTORY_ENTRY
;
2880 typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING
{
2883 } IMAGE_RESOURCE_DIRECTORY_STRING
,*PIMAGE_RESOURCE_DIRECTORY_STRING
;
2884 typedef struct _IMAGE_RESOURCE_DIR_STRING_U
{
2886 WCHAR NameString
[1];
2887 } IMAGE_RESOURCE_DIR_STRING_U
,*PIMAGE_RESOURCE_DIR_STRING_U
;
2888 typedef struct _IMAGE_RESOURCE_DATA_ENTRY
{
2893 } IMAGE_RESOURCE_DATA_ENTRY
,*PIMAGE_RESOURCE_DATA_ENTRY
;
2894 typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY
{
2896 DWORD TimeDateStamp
;
2899 DWORD GlobalFlagsClear
;
2900 DWORD GlobalFlagsSet
;
2901 DWORD CriticalSectionDefaultTimeout
;
2902 DWORD DeCommitFreeBlockThreshold
;
2903 DWORD DeCommitTotalFreeThreshold
;
2904 DWORD LockPrefixTable
;
2905 DWORD MaximumAllocationSize
;
2906 DWORD VirtualMemoryThreshold
;
2907 DWORD ProcessHeapFlags
;
2908 DWORD ProcessAffinityMask
;
2912 DWORD SecurityCookie
;
2913 DWORD SEHandlerTable
;
2914 DWORD SEHandlerCount
;
2915 } IMAGE_LOAD_CONFIG_DIRECTORY
,*PIMAGE_LOAD_CONFIG_DIRECTORY
;
2916 typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY
{
2919 PVOID ExceptionHandler
;
2921 DWORD PrologEndAddress
;
2922 } IMAGE_RUNTIME_FUNCTION_ENTRY
,*PIMAGE_RUNTIME_FUNCTION_ENTRY
;
2923 typedef struct _IMAGE_DEBUG_DIRECTORY
{
2924 DWORD Characteristics
;
2925 DWORD TimeDateStamp
;
2930 DWORD AddressOfRawData
;
2931 DWORD PointerToRawData
;
2932 } IMAGE_DEBUG_DIRECTORY
,*PIMAGE_DEBUG_DIRECTORY
;
2933 typedef struct _FPO_DATA
{
2944 } FPO_DATA
,*PFPO_DATA
;
2945 typedef struct _IMAGE_DEBUG_MISC
{
2951 } IMAGE_DEBUG_MISC
,*PIMAGE_DEBUG_MISC
;
2952 typedef struct _IMAGE_FUNCTION_ENTRY
{
2953 DWORD StartingAddress
;
2954 DWORD EndingAddress
;
2955 DWORD EndOfPrologue
;
2956 } IMAGE_FUNCTION_ENTRY
,*PIMAGE_FUNCTION_ENTRY
;
2957 typedef struct _IMAGE_SEPARATE_DEBUG_HEADER
{
2961 WORD Characteristics
;
2962 DWORD TimeDateStamp
;
2966 DWORD NumberOfSections
;
2967 DWORD ExportedNamesSize
;
2968 DWORD DebugDirectorySize
;
2969 DWORD SectionAlignment
;
2971 } IMAGE_SEPARATE_DEBUG_HEADER
,*PIMAGE_SEPARATE_DEBUG_HEADER
;
2973 typedef enum _CM_SERVICE_NODE_TYPE
{
2974 DriverType
=SERVICE_KERNEL_DRIVER
,
2975 FileSystemType
=SERVICE_FILE_SYSTEM_DRIVER
,
2976 Win32ServiceOwnProcess
=SERVICE_WIN32_OWN_PROCESS
,
2977 Win32ServiceShareProcess
=SERVICE_WIN32_SHARE_PROCESS
,
2978 AdapterType
=SERVICE_ADAPTER
,
2979 RecognizerType
=SERVICE_RECOGNIZER_DRIVER
2980 } SERVICE_NODE_TYPE
;
2981 typedef enum _CM_SERVICE_LOAD_TYPE
{
2982 BootLoad
=SERVICE_BOOT_START
,
2983 SystemLoad
=SERVICE_SYSTEM_START
,
2984 AutoLoad
=SERVICE_AUTO_START
,
2985 DemandLoad
=SERVICE_DEMAND_START
,
2986 DisableLoad
=SERVICE_DISABLED
2987 } SERVICE_LOAD_TYPE
;
2988 typedef enum _CM_ERROR_CONTROL_TYPE
{
2989 IgnoreError
=SERVICE_ERROR_IGNORE
,
2990 NormalError
=SERVICE_ERROR_NORMAL
,
2991 SevereError
=SERVICE_ERROR_SEVERE
,
2992 CriticalError
=SERVICE_ERROR_CRITICAL
2993 } SERVICE_ERROR_TYPE
;
2994 typedef struct _NT_TIB
{
2995 struct _EXCEPTION_REGISTRATION_RECORD
*ExceptionList
;
2999 _ANONYMOUS_UNION
union {
3003 PVOID ArbitraryUserPointer
;
3004 struct _NT_TIB
*Self
;
3006 typedef struct _REPARSE_DATA_BUFFER
{
3008 WORD ReparseDataLength
;
3010 _ANONYMOUS_UNION
union {
3012 WORD SubstituteNameOffset
;
3013 WORD SubstituteNameLength
;
3014 WORD PrintNameOffset
;
3015 WORD PrintNameLength
;
3016 WCHAR PathBuffer
[1];
3017 } SymbolicLinkReparseBuffer
;
3019 WORD SubstituteNameOffset
;
3020 WORD SubstituteNameLength
;
3021 WORD PrintNameOffset
;
3022 WORD PrintNameLength
;
3023 WCHAR PathBuffer
[1];
3024 } MountPointReparseBuffer
;
3027 } GenericReparseBuffer
;
3029 } REPARSE_DATA_BUFFER
, *PREPARSE_DATA_BUFFER
;
3030 typedef struct _REPARSE_GUID_DATA_BUFFER
{
3032 WORD ReparseDataLength
;
3037 } GenericReparseBuffer
;
3038 } REPARSE_GUID_DATA_BUFFER
, *PREPARSE_GUID_DATA_BUFFER
;
3039 typedef struct _REPARSE_POINT_INFORMATION
{
3040 WORD ReparseDataLength
;
3041 WORD UnparsedNameLength
;
3042 } REPARSE_POINT_INFORMATION
, *PREPARSE_POINT_INFORMATION
;
3044 typedef union _FILE_SEGMENT_ELEMENT
{
3046 ULONGLONG Alignment
;
3047 }FILE_SEGMENT_ELEMENT
, *PFILE_SEGMENT_ELEMENT
;
3049 /* JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants */
3050 #define JOB_OBJECT_LIMIT_WORKINGSET 0x0001
3051 #define JOB_OBJECT_LIMIT_PROCESS_TIME 0x0002
3052 #define JOB_OBJECT_LIMIT_JOB_TIME 0x0004
3053 #define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 0x0008
3054 #define JOB_OBJECT_LIMIT_AFFINITY 0x0010
3055 #define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x0020
3056 #define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x0040
3057 #define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x0080
3058 #define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x0100
3059 #define JOB_OBJECT_LIMIT_JOB_MEMORY 0x0200
3060 #define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x0400
3061 #define JOB_OBJECT_BREAKAWAY_OK 0x0800
3062 #define JOB_OBJECT_SILENT_BREAKAWAY 0x1000
3064 /* JOBOBJECT_BASIC_UI_RESTRICTIONS.UIRestrictionsClass constants */
3065 #define JOB_OBJECT_UILIMIT_HANDLES 0x0001
3066 #define JOB_OBJECT_UILIMIT_READCLIPBOARD 0x0002
3067 #define JOB_OBJECT_UILIMIT_WRITECLIPBOARD 0x0004
3068 #define JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS 0x0008
3069 #define JOB_OBJECT_UILIMIT_DISPLAYSETTINGS 0x0010
3070 #define JOB_OBJECT_UILIMIT_GLOBALATOMS 0x0020
3071 #define JOB_OBJECT_UILIMIT_DESKTOP 0x0040
3072 #define JOB_OBJECT_UILIMIT_EXITWINDOWS 0x0080
3074 /* JOBOBJECT_SECURITY_LIMIT_INFORMATION.SecurityLimitFlags constants */
3075 #define JOB_OBJECT_SECURITY_NO_ADMIN 0x0001
3076 #define JOB_OBJECT_SECURITY_RESTRICTED_TOKEN 0x0002
3077 #define JOB_OBJECT_SECURITY_ONLY_TOKEN 0x0004
3078 #define JOB_OBJECT_SECURITY_FILTER_TOKENS 0x0008
3080 /* JOBOBJECT_END_OF_JOB_TIME_INFORMATION.EndOfJobTimeAction constants */
3081 #define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0
3082 #define JOB_OBJECT_POST_AT_END_OF_JOB 1
3084 #define JOB_OBJECT_MSG_END_OF_JOB_TIME 1
3085 #define JOB_OBJECT_MSG_END_OF_PROCESS_TIME 2
3086 #define JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT 3
3087 #define JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO 4
3088 #define JOB_OBJECT_MSG_NEW_PROCESS 6
3089 #define JOB_OBJECT_MSG_EXIT_PROCESS 7
3090 #define JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS 8
3091 #define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT 9
3092 #define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 10
3094 #define JOB_OBJECT_ASSIGN_PROCESS 1
3095 #define JOB_OBJECT_SET_ATTRIBUTES 2
3096 #define JOB_OBJECT_QUERY 4
3097 #define JOB_OBJECT_TERMINATE 8
3098 #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES 16
3099 #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31)
3101 typedef enum _JOBOBJECTINFOCLASS
{
3102 JobObjectBasicAccountingInformation
= 1,
3103 JobObjectBasicLimitInformation
,
3104 JobObjectBasicProcessIdList
,
3105 JobObjectBasicUIRestrictions
,
3106 JobObjectSecurityLimitInformation
,
3107 JobObjectEndOfJobTimeInformation
,
3108 JobObjectAssociateCompletionPortInformation
,
3109 JobObjectBasicAndIoAccountingInformation
,
3110 JobObjectExtendedLimitInformation
,
3111 JobObjectJobSetInformation
,
3112 MaxJobObjectInfoClass
3113 } JOBOBJECTINFOCLASS
;
3114 typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
{
3115 LARGE_INTEGER TotalUserTime
;
3116 LARGE_INTEGER TotalKernelTime
;
3117 LARGE_INTEGER ThisPeriodTotalUserTime
;
3118 LARGE_INTEGER ThisPeriodTotalKernelTime
;
3119 DWORD TotalPageFaultCount
;
3120 DWORD TotalProcesses
;
3121 DWORD ActiveProcesses
;
3122 DWORD TotalTerminatedProcesses
;
3123 } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
,*PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION
;
3124 typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION
{
3125 LARGE_INTEGER PerProcessUserTimeLimit
;
3126 LARGE_INTEGER PerJobUserTimeLimit
;
3128 SIZE_T MinimumWorkingSetSize
;
3129 SIZE_T MaximumWorkingSetSize
;
3130 DWORD ActiveProcessLimit
;
3132 DWORD PriorityClass
;
3133 DWORD SchedulingClass
;
3134 } JOBOBJECT_BASIC_LIMIT_INFORMATION
,*PJOBOBJECT_BASIC_LIMIT_INFORMATION
;
3135 typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST
{
3136 DWORD NumberOfAssignedProcesses
;
3137 DWORD NumberOfProcessIdsInList
;
3138 ULONG_PTR ProcessIdList
[1];
3139 } JOBOBJECT_BASIC_PROCESS_ID_LIST
, *PJOBOBJECT_BASIC_PROCESS_ID_LIST
;
3140 typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS
{
3141 DWORD UIRestrictionsClass
;
3142 } JOBOBJECT_BASIC_UI_RESTRICTIONS
,*PJOBOBJECT_BASIC_UI_RESTRICTIONS
;
3143 typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION
{
3144 DWORD SecurityLimitFlags
;
3146 PTOKEN_GROUPS SidsToDisable
;
3147 PTOKEN_PRIVILEGES PrivilegesToDelete
;
3148 PTOKEN_GROUPS RestrictedSids
;
3149 } JOBOBJECT_SECURITY_LIMIT_INFORMATION
,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION
;
3150 typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION
{
3151 DWORD EndOfJobTimeAction
;
3152 } JOBOBJECT_END_OF_JOB_TIME_INFORMATION
,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION
;
3153 typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT
{
3154 PVOID CompletionKey
;
3155 HANDLE CompletionPort
;
3156 } JOBOBJECT_ASSOCIATE_COMPLETION_PORT
,*PJOBOBJECT_ASSOCIATE_COMPLETION_PORT
;
3157 typedef struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION
{
3158 JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo
;
3160 } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION
,*PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION
;
3161 typedef struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION
{
3162 JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation
;
3164 SIZE_T ProcessMemoryLimit
;
3165 SIZE_T JobMemoryLimit
;
3166 SIZE_T PeakProcessMemoryUsed
;
3167 SIZE_T PeakJobMemoryUsed
;
3168 } JOBOBJECT_EXTENDED_LIMIT_INFORMATION
,*PJOBOBJECT_EXTENDED_LIMIT_INFORMATION
;
3169 typedef struct _JOBOBJECT_JOBSET_INFORMATION
{
3171 } JOBOBJECT_JOBSET_INFORMATION
,*PJOBOBJECT_JOBSET_INFORMATION
;
3173 /* Fixme: Making these defines conditional on WINVER will break ddk includes */
3174 #if 1 /* (WINVER >= 0x0500) */
3176 #define ES_SYSTEM_REQUIRED 0x00000001
3177 #define ES_DISPLAY_REQUIRED 0x00000002
3178 #define ES_USER_PRESENT 0x00000004
3179 #define ES_CONTINUOUS 0x80000000
3181 typedef enum _LATENCY_TIME
{
3184 } LATENCY_TIME
, *PLATENCY_TIME
;
3186 typedef enum _SYSTEM_POWER_STATE
{
3187 PowerSystemUnspecified
,
3189 PowerSystemSleeping1
,
3190 PowerSystemSleeping2
,
3191 PowerSystemSleeping3
,
3192 PowerSystemHibernate
,
3193 PowerSystemShutdown
,
3195 } SYSTEM_POWER_STATE
, *PSYSTEM_POWER_STATE
;
3196 #define POWER_SYSTEM_MAXIMUM PowerSystemMaximum
3200 PowerActionReserved
,
3202 PowerActionHibernate
,
3203 PowerActionShutdown
,
3204 PowerActionShutdownReset
,
3205 PowerActionShutdownOff
,
3206 PowerActionWarmEject
3207 } POWER_ACTION
, *PPOWER_ACTION
;
3209 typedef enum _DEVICE_POWER_STATE
{
3210 PowerDeviceUnspecified
,
3216 } DEVICE_POWER_STATE
, *PDEVICE_POWER_STATE
;
3221 } BATTERY_REPORTING_SCALE
, *PBATTERY_REPORTING_SCALE
;
3223 typedef struct _POWER_ACTION_POLICY
{
3224 POWER_ACTION Action
;
3227 } POWER_ACTION_POLICY
, *PPOWER_ACTION_POLICY
;
3229 /* POWER_ACTION_POLICY.Flags constants */
3230 #define POWER_ACTION_QUERY_ALLOWED 0x00000001
3231 #define POWER_ACTION_UI_ALLOWED 0x00000002
3232 #define POWER_ACTION_OVERRIDE_APPS 0x00000004
3233 #define POWER_ACTION_LIGHTEST_FIRST 0x10000000
3234 #define POWER_ACTION_LOCK_CONSOLE 0x20000000
3235 #define POWER_ACTION_DISABLE_WAKES 0x40000000
3236 #define POWER_ACTION_CRITICAL 0x80000000
3238 /* POWER_ACTION_POLICY.EventCode constants */
3239 #define POWER_LEVEL_USER_NOTIFY_TEXT 0x00000001
3240 #define POWER_LEVEL_USER_NOTIFY_SOUND 0x00000002
3241 #define POWER_LEVEL_USER_NOTIFY_EXEC 0x00000004
3242 #define POWER_USER_NOTIFY_BUTTON 0x00000008
3243 #define POWER_USER_NOTIFY_SHUTDOWN 0x00000010
3244 #define POWER_FORCE_TRIGGER_RESET 0x80000000
3246 #define DISCHARGE_POLICY_CRITICAL 0
3247 #define DISCHARGE_POLICY_LOW 1
3248 #define NUM_DISCHARGE_POLICIES 4
3250 #define PO_THROTTLE_NONE 0
3251 #define PO_THROTTLE_CONSTANT 1
3252 #define PO_THROTTLE_DEGRADE 2
3253 #define PO_THROTTLE_ADAPTIVE 3
3254 #define PO_THROTTLE_MAXIMUM 4
3256 typedef struct _SYSTEM_POWER_LEVEL
{
3260 POWER_ACTION_POLICY PowerPolicy
;
3261 SYSTEM_POWER_STATE MinSystemState
;
3262 } SYSTEM_POWER_LEVEL
, *PSYSTEM_POWER_LEVEL
;
3264 typedef struct _SYSTEM_POWER_POLICY
{
3266 POWER_ACTION_POLICY PowerButton
;
3267 POWER_ACTION_POLICY SleepButton
;
3268 POWER_ACTION_POLICY LidClose
;
3269 SYSTEM_POWER_STATE LidOpenWake
;
3271 POWER_ACTION_POLICY Idle
;
3273 UCHAR IdleSensitivity
;
3274 UCHAR DynamicThrottle
;
3276 SYSTEM_POWER_STATE MinSleep
;
3277 SYSTEM_POWER_STATE MaxSleep
;
3278 SYSTEM_POWER_STATE ReducedLatencySleep
;
3279 ULONG WinLogonFlags
;
3281 ULONG DozeS4Timeout
;
3282 ULONG BroadcastCapacityResolution
;
3283 SYSTEM_POWER_LEVEL DischargePolicy
[NUM_DISCHARGE_POLICIES
];
3285 BOOLEAN VideoDimDisplay
;
3286 ULONG VideoReserved
[3];
3287 ULONG SpindownTimeout
;
3288 BOOLEAN OptimizeForPower
;
3289 UCHAR FanThrottleTolerance
;
3290 UCHAR ForcedThrottle
;
3292 POWER_ACTION_POLICY OverThrottled
;
3293 } SYSTEM_POWER_POLICY
, *PSYSTEM_POWER_POLICY
;
3295 typedef struct _SYSTEM_POWER_CAPABILITIES
{
3296 BOOLEAN PowerButtonPresent
;
3297 BOOLEAN SleepButtonPresent
;
3304 BOOLEAN HiberFilePresent
;
3306 BOOLEAN VideoDimPresent
;
3309 BOOLEAN ThermalControl
;
3310 BOOLEAN ProcessorThrottle
;
3311 UCHAR ProcessorMinThrottle
;
3312 UCHAR ProcessorMaxThrottle
;
3314 BOOLEAN DiskSpinDown
;
3316 BOOLEAN SystemBatteriesPresent
;
3317 BOOLEAN BatteriesAreShortTerm
;
3318 BATTERY_REPORTING_SCALE BatteryScale
[3];
3319 SYSTEM_POWER_STATE AcOnLineWake
;
3320 SYSTEM_POWER_STATE SoftLidWake
;
3321 SYSTEM_POWER_STATE RtcWake
;
3322 SYSTEM_POWER_STATE MinDeviceWakeState
;
3323 SYSTEM_POWER_STATE DefaultLowLatencyWake
;
3324 } SYSTEM_POWER_CAPABILITIES
, *PSYSTEM_POWER_CAPABILITIES
;
3326 typedef struct _SYSTEM_BATTERY_STATE
{
3328 BOOLEAN BatteryPresent
;
3330 BOOLEAN Discharging
;
3333 ULONG RemainingCapacity
;
3335 ULONG EstimatedTime
;
3336 ULONG DefaultAlert1
;
3337 ULONG DefaultAlert2
;
3338 } SYSTEM_BATTERY_STATE
, *PSYSTEM_BATTERY_STATE
;
3340 typedef enum _POWER_INFORMATION_LEVEL
{
3341 SystemPowerPolicyAc
,
3342 SystemPowerPolicyDc
,
3343 VerifySystemPolicyAc
,
3344 VerifySystemPolicyDc
,
3345 SystemPowerCapabilities
,
3347 SystemPowerStateHandler
,
3348 ProcessorStateHandler
,
3349 SystemPowerPolicyCurrent
,
3350 AdministratorPowerPolicy
,
3351 SystemReserveHiberFile
,
3352 ProcessorInformation
,
3353 SystemPowerInformation
,
3354 ProcessorStateHandler2
,
3357 SystemExecutionState
,
3358 SystemPowerStateNotifyHandler
,
3359 ProcessorPowerPolicyAc
,
3360 ProcessorPowerPolicyDc
,
3361 VerifyProcessorPowerPolicyAc
,
3362 VerifyProcessorPowerPolicyDc
,
3363 ProcessorPowerPolicyCurrent
3364 } POWER_INFORMATION_LEVEL
;
3366 #if (_WIN32_WINNT >= 0x0500)
3367 typedef LONG (WINAPI
*PVECTORED_EXCEPTION_HANDLER
)(PEXCEPTION_POINTERS
);
3369 #if 1 /* (WIN32_WINNT >= 0x0500) */
3370 typedef struct _SYSTEM_POWER_INFORMATION
{
3371 ULONG MaxIdlenessAllowed
;
3373 ULONG TimeRemaining
;
3375 } SYSTEM_POWER_INFORMATION
,*PSYSTEM_POWER_INFORMATION
;
3378 #if (_WIN32_WINNT >= 0x0501)
3379 typedef enum _HEAP_INFORMATION_CLASS
{
3380 HeapCompatibilityInformation
3381 } HEAP_INFORMATION_CLASS
;
3382 typedef enum _ACTIVATION_CONTEXT_INFO_CLASS
{
3383 ActivationContextBasicInformation
= 1,
3384 ActivationContextDetailedInformation
,
3385 AssemblyDetailedInformationInActivationContext
,
3386 FileInformationInAssemblyOfAssemblyInActivationContext
3387 } ACTIVATION_CONTEXT_INFO_CLASS
;
3388 typedef struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
{
3390 DWORD ulEncodedAssemblyIdentityLength
;
3391 DWORD ulManifestPathType
;
3392 DWORD ulManifestPathLength
;
3393 LARGE_INTEGER liManifestLastWriteTime
;
3394 DWORD ulPolicyPathType
;
3395 DWORD ulPolicyPathLength
;
3396 LARGE_INTEGER liPolicyLastWriteTime
;
3397 DWORD ulMetadataSatelliteRosterIndex
;
3398 DWORD ulManifestVersionMajor
;
3399 DWORD ulManifestVersionMinor
;
3400 DWORD ulPolicyVersionMajor
;
3401 DWORD ulPolicyVersionMinor
;
3402 DWORD ulAssemblyDirectoryNameLength
;
3403 PCWSTR lpAssemblyEncodedAssemblyIdentity
;
3404 PCWSTR lpAssemblyManifestPath
;
3405 PCWSTR lpAssemblyPolicyPath
;
3406 PCWSTR lpAssemblyDirectoryName
;
3407 } ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
,*PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
;
3408 typedef const ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
*PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
;
3409 typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION
{
3411 DWORD ulFormatVersion
;
3412 DWORD ulAssemblyCount
;
3413 DWORD ulRootManifestPathType
;
3414 DWORD ulRootManifestPathChars
;
3415 DWORD ulRootConfigurationPathType
;
3416 DWORD ulRootConfigurationPathChars
;
3417 DWORD ulAppDirPathType
;
3418 DWORD ulAppDirPathChars
;
3419 PCWSTR lpRootManifestPath
;
3420 PCWSTR lpRootConfigurationPath
;
3421 PCWSTR lpAppDirPath
;
3422 } ACTIVATION_CONTEXT_DETAILED_INFORMATION
,*PACTIVATION_CONTEXT_DETAILED_INFORMATION
;
3423 typedef const ACTIVATION_CONTEXT_DETAILED_INFORMATION
*PCACTIVATION_CONTEXT_DETAILED_INFORMATION
;
3424 typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX
{
3425 ULONG ulAssemblyIndex
;
3426 ULONG ulFileIndexInAssembly
;
3427 } ACTIVATION_CONTEXT_QUERY_INDEX
,*PACTIVATION_CONTEXT_QUERY_INDEX
;
3428 typedef const ACTIVATION_CONTEXT_QUERY_INDEX
*PCACTIVATION_CONTEXT_QUERY_INDEX
;
3429 typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION
{
3431 DWORD ulFilenameLength
;
3435 } ASSEMBLY_FILE_DETAILED_INFORMATION
,*PASSEMBLY_FILE_DETAILED_INFORMATION
;
3436 typedef const ASSEMBLY_FILE_DETAILED_INFORMATION
*PCASSEMBLY_FILE_DETAILED_INFORMATION
;
3437 #endif /* (WIN32_WINNT >= 0x0501) */
3439 typedef struct _PROCESSOR_POWER_POLICY_INFO
{
3443 UCHAR DemotePercent
;
3444 UCHAR PromotePercent
;
3446 ULONG AllowDemotion
: 1;
3447 ULONG AllowPromotion
: 1;
3448 ULONG Reserved
: 30;
3449 } PROCESSOR_POWER_POLICY_INFO
, *PPROCESSOR_POWER_POLICY_INFO
;
3450 typedef struct _PROCESSOR_POWER_POLICY
{
3452 UCHAR DynamicThrottle
;
3456 PROCESSOR_POWER_POLICY_INFO Policy
[3];
3457 } PROCESSOR_POWER_POLICY
, *PPROCESSOR_POWER_POLICY
;
3458 typedef struct _ADMINISTRATOR_POWER_POLICY
{
3459 SYSTEM_POWER_STATE MinSleep
;
3460 SYSTEM_POWER_STATE MaxSleep
;
3461 ULONG MinVideoTimeout
;
3462 ULONG MaxVideoTimeout
;
3463 ULONG MinSpindownTimeout
;
3464 ULONG MaxSpindownTimeout
;
3465 } ADMINISTRATOR_POWER_POLICY
, *PADMINISTRATOR_POWER_POLICY
;
3466 #endif /* WINVER >= 0x0500 */
3468 typedef VOID (NTAPI
*WAITORTIMERCALLBACKFUNC
)(PVOID
,BOOLEAN
);
3471 typedef OSVERSIONINFOW OSVERSIONINFO
,*POSVERSIONINFO
,*LPOSVERSIONINFO
;
3472 typedef OSVERSIONINFOEXW OSVERSIONINFOEX
,*POSVERSIONINFOEX
,*LPOSVERSIONINFOEX
;
3474 typedef OSVERSIONINFOA OSVERSIONINFO
,*POSVERSIONINFO
,*LPOSVERSIONINFO
;
3475 typedef OSVERSIONINFOEXA OSVERSIONINFOEX
,*POSVERSIONINFOEX
,*LPOSVERSIONINFOEX
;
3478 #if (WIN32_WINNT >= 0x0500)
3479 ULONGLONG WINAPI
VerSetConditionMask(ULONGLONG
,DWORD
,BYTE
);
3485 const VOID
*Source1
,
3486 const VOID
*Source2
,
3490 #define RtlMoveMemory memmove
3491 #define RtlCopyMemory memcpy
3492 #define RtlFillMemory(d,l,f) memset((d), (f), (l))
3493 #define RtlZeroMemory(d,l) RtlFillMemory((d),(l),0)
3495 #if defined(__GNUC__)
3497 static __inline__ PVOID
GetCurrentFiber(void)
3500 __asm__
__volatile__ (
3502 : "=r" (ret
) /* allow use of reg eax,ebx,ecx,edx,esi,edi */
3507 static __inline__
struct _TEB
* NtCurrentTeb(void)
3511 __asm__
__volatile__ (
3512 "movl %%fs:0x18, %0\n"
3520 #elif defined(__WATCOMC__)
3522 extern PVOID
GetCurrentFiber(void);
3523 #pragma aux GetCurrentFiber = \
3524 "mov eax, dword ptr fs:0x10" \
3528 extern struct _TEB
* NtCurrentTeb(void);
3529 #pragma aux NtCurrentTeb = \
3530 "mov eax, dword ptr fs:0x18" \
3534 #elif defined(_MSC_VER)
3536 static __inline PVOID
GetCurrentFiber(void)
3539 __asm mov eax
, fs
:[10h
]
3544 static __inline
struct _TEB
* NtCurrentTeb(void)
3547 __asm mov eax
, fs
:[18h
]
3552 #endif /* __GNUC__/__WATCOMC__/_MSC_VER */
3554 static __inline PVOID
GetFiberData(void)
3556 return *((PVOID
*)GetCurrentFiber());
3559 #endif /* RC_INVOKED */