1 module win32.winnt;
2
3 // Translated from Microsoft Platform SDK August 2001 Edition
4 // by Y.Tomino (demoonlit@inter7.jp)
5
6 import win32.windef;
7 alias void _TEB;
8 alias void _EXCEPTION_REGISTRATION_RECORD;
9 private extern(C) {
10 int memcmp(void*, void*, uint);
11 void* memmove(void*, void*, uint);
12 void* memcpy(void*, void*, uint);
13 void* memset(void*, uint, uint);
14 }
15
16 // #ifndef _WINNT_
17 // #define _WINNT_
18
19 // #ifdef __cplusplus
20 // extern "C" {
21 // #endif
22
23 // #include <ctype.h>
24 enum : uint { ANYSIZE_ARRAY = 1 }
25
26 // #if defined(_M_MRX000) && !(defined(MIDL_PASS) || defined(RC_INVOKED)) && defined(ENABLE_RESTRICTED)
27 // #...
28 // #else
29 // #define RESTRICTED_POINTER
30 // #endif
31
32 // #if defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC) || defined(_M_IA64) || defined(_M_AMD64)
33 // #...
34 // #if defined(_WIN64)
35 // #...
36 // #else
37 // #...
38 // #endif
39 // #else
40 // #define UNALIGNED
41 // #define UNALIGNED64
42 // #endif
43
44 // #if defined(_WIN64) || defined(_M_ALPHA)
45 // #...
46 // #...
47 // #else
48 const uint MAX_NATURAL_ALIGNMENT = DWORD.sizeof;
49 enum : uint { MEMORY_ALLOCATION_ALIGNMENT = 8 }
50 // #endif
51
52 // #ifdef __cplusplus
53 // #if _MSC_VER >= 1300
54 // #define TYPE_ALIGNMENT( t ) __alignof(t)
55 // #endif
56 // #else
57 // #...
58 // ...
59 // #endif
60
61 // #if defined(_WIN64)
62
63 // #...
64 // ...
65
66 // #...
67
68 // #else
69
70 // #define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD )
71
72 // #endif
73
74 // #define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
75
76 // #if !defined(_MAC) && (defined(_M_MRX000) || defined(_M_AMD64) || defined(_M_IA64)) && (_MSC_VER >= 1100) && !(defined(MIDL_PASS) || defined(RC_INVOKED))
77 // #...
78 // ...
79 // #if defined(_WIN64)
80 // #...
81 // #else
82 // #...
83 // #endif
84 // #else
85 // #if defined(_MAC) && defined(_MAC_INT_64)
86 // #...
87 // ...
88 // #else
89 // #define POINTER_64
90 alias uint POINTER_64_INT;
91 // #endif
92 alias void* POINTER_32;
93 // #endif
94
95 // #if defined(_IA64_) || defined(_AMD64_)
96 // #...
97 // #else
98 alias POINTER_32 FIRMWARE_PTR;
99 // #endif
100
101 // #include <basetsd.h>
102
103 // #if (defined(_M_IX86) || defined(_M_IA64) || defined(_M_AMD64)) && !defined(MIDL_PASS)
104 // #define DECLSPEC_IMPORT __declspec(dllimport)
105 // #else
106 // #...
107 // #endif
108
109 // #ifndef DECLSPEC_NORETURN
110 // #if (_MSC_VER >= 1200) && !defined(MIDL_PASS)
111 // #define DECLSPEC_NORETURN __declspec(noreturn)
112 // #else
113 // #...
114 // #endif
115 // #endif
116
117 // #ifndef DECLSPEC_ALIGN
118 // #if (_MSC_VER >= 1300) && !defined(MIDL_PASS)
119 // #define DECLSPEC_ALIGN(x) __declspec(align(x))
120 // #else
121 // #...
122 // #endif
123 // #endif
124
125 // #ifndef DECLSPEC_CACHEALIGN
126 // #define DECLSPEC_CACHEALIGN DECLSPEC_ALIGN(128)
127 // #endif
128
129 // #ifndef DECLSPEC_UUID
130 // #if (_MSC_VER >= 1100) && defined (__cplusplus)
131 // #define DECLSPEC_UUID(x) __declspec(uuid(x))
132 // #else
133 // #...
134 // #endif
135 // #endif
136
137 // #ifndef DECLSPEC_NOVTABLE
138 // #if (_MSC_VER >= 1100) && defined(__cplusplus)
139 // #define DECLSPEC_NOVTABLE __declspec(novtable)
140 // #else
141 // #...
142 // #endif
143 // #endif
144
145 // #ifndef DECLSPEC_SELECTANY
146 // #if (_MSC_VER >= 1100)
147 // #define DECLSPEC_SELECTANY __declspec(selectany)
148 // #else
149 // #...
150 // #endif
151 // #endif
152
153 // #ifndef NOP_FUNCTION
154 // #if (_MSC_VER >= 1210)
155 // #...
156 // #else
157 // #...
158 // #endif
159 // #endif
160
161 // #ifndef DECLSPEC_ADDRSAFE
162 // #if (_MSC_VER >= 1200) && (defined(_M_ALPHA) || defined(_M_AXP64))
163 // #...
164 // #else
165 // #define DECLSPEC_ADDRSAFE
166 // #endif
167 // #endif
168
169 // #ifndef FORCEINLINE
170 // #if (_MSC_VER >= 1200)
171 // #define FORCEINLINE __forceinline
172 // #else
173 // #...
174 // #endif
175 // #endif
176
177 // #ifndef DECLSPEC_DEPRECATED
178 // #if (_MSC_VER >= 1300) && !defined(MIDL_PASS)
179 // #define DECLSPEC_DEPRECATED __declspec(deprecated)
180 // #define DEPRECATE_SUPPORTED
181 // #else
182 // #...
183 // #...
184 // #endif
185 // #endif
186
187 alias void* PVOID;
188 deprecated alias void* PVOID64; /* warning: 64-bit */
189
190 // #if ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)) && !defined(_M_AMD64)
191 // #define NTAPI __stdcall
192 // #else
193 // #...
194 // #...
195 // #endif
196
197 // #if !defined(_NTSYSTEM_)
198 // #define NTSYSAPI DECLSPEC_IMPORT
199 // #define NTSYSCALLAPI DECLSPEC_IMPORT
200 // #else
201 // #...
202 // #if defined(_NTDLLBUILD_)
203 // #...
204 // #else
205 // #...
206 // #endif
207
208 // #endif
209
210 // #ifndef VOID
211 alias void VOID;
212 alias char CHAR;
213 alias short SHORT;
214 alias int LONG;
215 // #endif
216
217 // #ifndef _MAC
218 alias wchar WCHAR;
219 // #else
220
221 // ...
222 // #endif
223
224 alias WCHAR* PWCHAR;
225 alias WCHAR* LPWCH;
226 alias WCHAR* PWCH;
227 alias WCHAR* LPCWCH;
228 alias WCHAR* PCWCH;
229 alias WCHAR* NWPSTR;
230 alias WCHAR* LPWSTR;
231 alias WCHAR* PWSTR;
232 alias WCHAR* LPUWSTR;
233 alias WCHAR* PUWSTR;
234
235 alias WCHAR* LPCWSTR;
236 alias WCHAR* PCWSTR;
237 alias WCHAR* LPCUWSTR;
238 alias WCHAR* PCUWSTR;
239
240 alias CHAR* PCHAR;
241 alias CHAR* LPCH;
242 alias CHAR* PCH;
243
244 alias CHAR* LPCCH;
245 alias CHAR* PCCH;
246 alias CHAR* NPSTR;
247 alias CHAR* LPSTR;
248 alias CHAR* PSTR;
249 alias CHAR* LPCSTR;
250 alias CHAR* PCSTR;
251
252 // #ifdef UNICODE // r_winnt
253
254 // #ifndef _TCHAR_DEFINED
255 alias WCHAR TCHAR;
256 alias WCHAR* PTCHAR;
257 alias WCHAR TBYTE;
258 alias WCHAR* PTBYTE;
259 // #define _TCHAR_DEFINED
260 // #endif /* !_TCHAR_DEFINED */
261
262 alias LPWSTR LPTCH;
263 alias LPWSTR PTCH;
264 alias LPWSTR PTSTR;
265 alias LPWSTR LPTSTR;
266 alias LPCWSTR PCTSTR;
267 alias LPCWSTR LPCTSTR;
268 alias LPUWSTR PUTSTR;
269 alias LPUWSTR LPUTSTR;
270 alias LPCUWSTR PCUTSTR;
271 alias LPCUWSTR LPCUTSTR;
272 alias LPWSTR LP;
273 // #define __TEXT(quote) L##quote
274
275 // #else /* UNICODE */ // r_winnt
276
277 // #ifndef _TCHAR_DEFINED
278 // ...
279 // #...
280 // #endif /* !_TCHAR_DEFINED */
281
282 // ...
283 // #...
284
285 // #endif /* UNICODE */ // r_winnt
286 TCHAR[] TEXT(TCHAR[] quote){ return quote; }
287
288 alias SHORT* PSHORT;
289 alias LONG* PLONG;
290
291 // #ifdef STRICT
292 alias void* HANDLE;
293 // #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
294 // #else
295 // ...
296 // #...
297 // #endif
298 alias HANDLE* PHANDLE;
299
300 alias BYTE FCHAR;
301 alias WORD FSHORT;
302 alias DWORD FLONG;
303
304 // #ifndef _HRESULT_DEFINED
305 // #define _HRESULT_DEFINED
306 alias LONG HRESULT;
307
308 // #endif // !_HRESULT_DEFINED
309
310 // #ifdef __cplusplus
311 // #define EXTERN_C extern "C"
312 // #else
313 // #...
314 // #endif
315
316 // #if defined(_WIN32) || defined(_MPPC_)
317
318 // #ifdef _68K_
319 // #...
320 // #else
321 // #define STDMETHODCALLTYPE __stdcall
322 // #endif
323 // #define STDMETHODVCALLTYPE __cdecl
324
325 // #define STDAPICALLTYPE __stdcall
326 // #define STDAPIVCALLTYPE __cdecl
327
328 // #else
329
330 // #...
331 // #...
332
333 // #...
334 // #...
335
336 // #endif
337
338 // #define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
339 // #define STDAPI_(type) EXTERN_C type STDAPICALLTYPE
340
341 // #define STDMETHODIMP HRESULT STDMETHODCALLTYPE
342 // #define STDMETHODIMP_(type) type STDMETHODCALLTYPE
343
344 // #define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE
345 // #define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE
346
347 // #define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE
348 // #define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE
349
350 alias char CCHAR;
351 alias DWORD LCID;
352 alias PDWORD PLCID;
353 alias WORD LANGID;
354 enum : uint { APPLICATION_ERROR_MASK = 0x20000000 }
355 enum : uint { ERROR_SEVERITY_SUCCESS = 0x00000000 }
356 enum : uint { ERROR_SEVERITY_INFORMATIONAL = 0x40000000 }
357 enum : uint { ERROR_SEVERITY_WARNING = 0x80000000 }
358 enum : uint { ERROR_SEVERITY_ERROR = 0xC0000000 }
359
360 // #if defined(_M_IA64) && !defined(MIDL_PASS)
361 // ...
362 // #endif
363 struct _FLOAT128 {
364 __int64 LowPart;
365 __int64 HighPart;
366 }
367 alias _FLOAT128 FLOAT128;
368
369 alias FLOAT128* PFLOAT128;
370
371 // #define _ULONGLONG_
372 // #if (!defined (_MAC) && (!defined(MIDL_PASS) || defined(__midl)) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64)))
373 // ...
374
375 // #...
376 // #else
377
378 // #if defined(_MAC) && defined(_MAC_INT_64)
379 // ...
380
381 // #...
382 // #else
383 alias double LONGLONG;
384 alias double ULONGLONG;
385 // #endif //_MAC and int64
386
387 // #endif
388
389 alias LONGLONG* PLONGLONG;
390 alias ULONGLONG* PULONGLONG;
391
392 alias LONGLONG USN;
393
394 // #if defined(MIDL_PASS)
395 // ...
396 // #else // MIDL_PASS
397 union _LARGE_INTEGER {
398 struct _0 {
399 DWORD LowPart;
400 LONG HighPart;
401 }
402 _0 _;
403
404 struct _1 {
405 DWORD LowPart;
406 LONG HighPart;
407 }
408 _1 u;
409
410 // #endif //MIDL_PASS
411 LONGLONG QuadPart;
412 }
413 alias _LARGE_INTEGER LARGE_INTEGER;
414
415 alias LARGE_INTEGER* PLARGE_INTEGER;
416
417 // #if defined(MIDL_PASS)
418 // ...
419 // #else // MIDL_PASS
420 union _ULARGE_INTEGER {
421 struct _2 {
422 DWORD LowPart;
423 DWORD HighPart;
424 }
425 _2 _;
426
427 struct _3 {
428 DWORD LowPart;
429 DWORD HighPart;
430 }
431 _3 u;
432
433 // #endif //MIDL_PASS
434 ULONGLONG QuadPart;
435 }
436 alias _ULARGE_INTEGER ULARGE_INTEGER;
437
438 alias ULARGE_INTEGER* PULARGE_INTEGER;
439
440 struct _LUID {
441 DWORD LowPart;
442 LONG HighPart;
443 }
444 alias _LUID LUID;
445 alias _LUID* PLUID;
446
447 // #define _DWORDLONG_
448 alias ULONGLONG DWORDLONG;
449 alias DWORDLONG* PDWORDLONG;
450
451 // #if defined(MIDL_PASS) || defined(RC_INVOKED)
452
453 // #...
454 // #...
455
456 // #...
457 // #...
458 // #...
459
460 // #elif defined(_M_MRX000)
461
462 // #...
463 // #...
464
465 // #...
466 // #...
467 // #...
468
469 // #if defined (__cplusplus)
470 // ...
471 // #endif
472
473 // ...
474
475 // ...
476
477 // ...
478
479 // ...
480
481 // ...
482
483 // #if defined (__cplusplus)
484 // ...
485 // #endif
486
487 // #...
488 // #...
489
490 // #...
491 // #...
492 // #...
493
494 // #elif defined(_M_IX86)
495
496 long Int32x32To64(int a, int b) { return (cast(long)a) * b; }
497 ulong UInt32x32To64(uint a, uint b) { return (cast(ulong)a) * b; }
498
499 extern(Windows) export ULONGLONG Int64ShllMod32(
500 ULONGLONG Value,
501 DWORD ShiftCount);
502
503 extern(Windows) export LONGLONG Int64ShraMod32(
504 LONGLONG Value,
505 DWORD ShiftCount);
506
507 extern(Windows) export ULONGLONG Int64ShrlMod32(
508 ULONGLONG Value,
509 DWORD ShiftCount);
510
511 // #if _MSC_VER >= 1200
512 // #pragma warning(push)
513 // #endif
514 // #pragma warning(disable:4035) // re-enable below
515
516 // __inline ULONGLONG Int64ShllMod32( ULONGLONG Value, DWORD ShiftCount );
517
518 // __inline LONGLONG Int64ShraMod32( LONGLONG Value, DWORD ShiftCount );
519
520 // __inline ULONGLONG Int64ShrlMod32( ULONGLONG Value, DWORD ShiftCount );
521
522 // #if _MSC_VER >= 1200
523 // #pragma warning(pop)
524 // #else
525 // #...
526 // #endif
527
528 // #elif defined(_M_ALPHA)
529
530 // #...
531 // #...
532
533 // #...
534 // #...
535 // #...
536
537 // #elif defined(_M_PPC)
538
539 // #...
540 // #...
541
542 // #...
543 // #...
544 // #...
545
546 // #elif defined(_68K_) || defined(_MPPC_)
547
548 // #...
549 // #...
550
551 // #...
552 // #...
553 // #...
554
555 // #elif defined(_M_IA64) || defined(_M_AMD64)
556
557 // #...
558 // #...
559
560 // #...
561 // #...
562 // #...
563
564 // #else
565
566 // #...
567
568 // #endif
569
570 enum : CHAR { ANSI_NULL = 0 }
571 enum : WCHAR { UNICODE_NULL = 0 }
572 enum : WORD { UNICODE_STRING_MAX_BYTES = 65534 }
573 enum : uint { UNICODE_STRING_MAX_CHARS = 32767 }
574 alias BYTE BOOLEAN;
575 alias BOOLEAN* PBOOLEAN;
576
577 struct _LIST_ENTRY {
578 _LIST_ENTRY *Flink;
579 _LIST_ENTRY *Blink;
580 }
581 alias _LIST_ENTRY LIST_ENTRY;
582 alias _LIST_ENTRY* PLIST_ENTRY;
583 alias _LIST_ENTRY* RESTRICTED_POINTERPRLIST_ENTRY;
584
585 struct _SINGLE_LIST_ENTRY {
586 _SINGLE_LIST_ENTRY *Next;
587 }
588 alias _SINGLE_LIST_ENTRY SINGLE_LIST_ENTRY;
589 alias _SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY;
590
591 struct LIST_ENTRY32 {
592 DWORD Flink;
593 DWORD Blink;
594 }
595
596 alias LIST_ENTRY32* PLIST_ENTRY32;
597
598 struct LIST_ENTRY64 {
599 ULONGLONG Flink;
600 ULONGLONG Blink;
601 }
602
603 alias LIST_ENTRY64* PLIST_ENTRY64;
604
605 import win32.guiddef;
606
607 // #ifndef __OBJECTID_DEFINED
608 // #define __OBJECTID_DEFINED
609
610 struct _OBJECTID {
611 GUID Lineage;
612 DWORD Uniquifier;
613 }
614 alias _OBJECTID OBJECTID;
615
616 // #endif // !_OBJECTID_DEFINED
617
618 enum : uint { MINCHAR = 0x80 }
619 enum : uint { MAXCHAR = 0x7f }
620 enum : uint { MINSHORT = 0x8000 }
621 enum : uint { MAXSHORT = 0x7fff }
622 enum : uint { MINLONG = 0x80000000 }
623 enum : uint { MAXLONG = 0x7fffffff }
624 enum : uint { MAXBYTE = 0xff }
625 enum : uint { MAXWORD = 0xffff }
626 enum : uint { MAXDWORD = 0xffffffff }
627
628 // #define FIELD_OFFSET(type, field) ((LONG)(LONG_PTR)&(((type *)0)->field))
629
630 // #if(_WIN32_WINNT > 0x0500)
631
632 // #define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field))
633
634 // #define RTL_SIZEOF_THROUGH_FIELD(type, field) (FIELD_OFFSET(type, field) + RTL_FIELD_SIZE(type, field))
635
636 // #define RTL_CONTAINS_FIELD(Struct, Size, Field) ( (((PCHAR)(&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR)(Struct))+(Size)) )
637
638 // #define RTL_NUMBER_OF(A) (sizeof(A)/sizeof((A)[0]))
639
640 // #define RTL_FIELD_TYPE(type, field) (((type*)0)->field)
641
642 // #define RTL_NUMBER_OF_FIELD(type, field) (RTL_NUMBER_OF(RTL_FIELD_TYPE(type, field)))
643
644 // #define RTL_PADDING_BETWEEN_FIELDS(T, F1, F2) ((FIELD_OFFSET(T, F2) > FIELD_OFFSET(T, F1)) ? (FIELD_OFFSET(T, F2) - FIELD_OFFSET(T, F1) - RTL_FIELD_SIZE(T, F1)) : (FIELD_OFFSET(T, F1) - FIELD_OFFSET(T, F2) - RTL_FIELD_SIZE(T, F2)))
645
646 // #if defined(__cplusplus)
647 // #define RTL_CONST_CAST(type) const_cast<type>
648 // #else
649 // #...
650 // #endif
651
652 // #define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8)
653
654 // #define RTL_BITS_OF_FIELD(type, field) (RTL_BITS_OF(RTL_FIELD_TYPE(type, field)))
655
656 // #endif /* _WIN32_WINNT > 0x0500 */
657
658 // #define CONTAINING_RECORD(address, type, field) ((type *)( (PCHAR)(address) - (ULONG_PTR)(&((type *)0)->field)))
659
660 enum : uint { VER_SERVER_NT = 0x80000000 }
661 enum : uint { VER_WORKSTATION_NT = 0x40000000 }
662 enum : uint { VER_SUITE_SMALLBUSINESS = 0x00000001 }
663 enum : uint { VER_SUITE_ENTERPRISE = 0x00000002 }
664 enum : uint { VER_SUITE_BACKOFFICE = 0x00000004 }
665 enum : uint { VER_SUITE_COMMUNICATIONS = 0x00000008 }
666 enum : uint { VER_SUITE_TERMINAL = 0x00000010 }
667 enum : uint { VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x00000020 }
668 enum : uint { VER_SUITE_EMBEDDEDNT = 0x00000040 }
669 enum : uint { VER_SUITE_DATACENTER = 0x00000080 }
670 enum : uint { VER_SUITE_SINGLEUSERTS = 0x00000100 }
671 enum : uint { VER_SUITE_PERSONAL = 0x00000200 }
672 enum : uint { VER_SUITE_BLADE = 0x00000400 }
673
674 enum : uint { LANG_NEUTRAL = 0x00 }
675 enum : uint { LANG_INVARIANT = 0x7f }
676
677 enum : uint { LANG_AFRIKAANS = 0x36 }
678 enum : uint { LANG_ALBANIAN = 0x1c }
679 enum : uint { LANG_ARABIC = 0x01 }
680 enum : uint { LANG_ARMENIAN = 0x2b }
681 enum : uint { LANG_ASSAMESE = 0x4d }
682 enum : uint { LANG_AZERI = 0x2c }
683 enum : uint { LANG_BASQUE = 0x2d }
684 enum : uint { LANG_BELARUSIAN = 0x23 }
685 enum : uint { LANG_BENGALI = 0x45 }
686 enum : uint { LANG_BULGARIAN = 0x02 }
687 enum : uint { LANG_CATALAN = 0x03 }
688 enum : uint { LANG_CHINESE = 0x04 }
689 enum : uint { LANG_CROATIAN = 0x1a }
690 enum : uint { LANG_CZECH = 0x05 }
691 enum : uint { LANG_DANISH = 0x06 }
692 enum : uint { LANG_DIVEHI = 0x65 }
693 enum : uint { LANG_DUTCH = 0x13 }
694 enum : uint { LANG_ENGLISH = 0x09 }
695 enum : uint { LANG_ESTONIAN = 0x25 }
696 enum : uint { LANG_FAEROESE = 0x38 }
697 enum : uint { LANG_FARSI = 0x29 }
698 enum : uint { LANG_FINNISH = 0x0b }
699 enum : uint { LANG_FRENCH = 0x0c }
700 enum : uint { LANG_GALICIAN = 0x56 }
701 enum : uint { LANG_GEORGIAN = 0x37 }
702 enum : uint { LANG_GERMAN = 0x07 }
703 enum : uint { LANG_GREEK = 0x08 }
704 enum : uint { LANG_GUJARATI = 0x47 }
705 enum : uint { LANG_HEBREW = 0x0d }
706 enum : uint { LANG_HINDI = 0x39 }
707 enum : uint { LANG_HUNGARIAN = 0x0e }
708 enum : uint { LANG_ICELANDIC = 0x0f }
709 enum : uint { LANG_INDONESIAN = 0x21 }
710 enum : uint { LANG_ITALIAN = 0x10 }
711 enum : uint { LANG_JAPANESE = 0x11 }
712 enum : uint { LANG_KANNADA = 0x4b }
713 enum : uint { LANG_KASHMIRI = 0x60 }
714 enum : uint { LANG_KAZAK = 0x3f }
715 enum : uint { LANG_KONKANI = 0x57 }
716 enum : uint { LANG_KOREAN = 0x12 }
717 enum : uint { LANG_KYRGYZ = 0x40 }
718 enum : uint { LANG_LATVIAN = 0x26 }
719 enum : uint { LANG_LITHUANIAN = 0x27 }
720 enum : uint { LANG_MACEDONIAN = 0x2f }
721 enum : uint { LANG_MALAY = 0x3e }
722 enum : uint { LANG_MALAYALAM = 0x4c }
723 enum : uint { LANG_MANIPURI = 0x58 }
724 enum : uint { LANG_MARATHI = 0x4e }
725 enum : uint { LANG_MONGOLIAN = 0x50 }
726 enum : uint { LANG_NEPALI = 0x61 }
727 enum : uint { LANG_NORWEGIAN = 0x14 }
728 enum : uint { LANG_ORIYA = 0x48 }
729 enum : uint { LANG_POLISH = 0x15 }
730 enum : uint { LANG_PORTUGUESE = 0x16 }
731 enum : uint { LANG_PUNJABI = 0x46 }
732 enum : uint { LANG_ROMANIAN = 0x18 }
733 enum : uint { LANG_RUSSIAN = 0x19 }
734 enum : uint { LANG_SANSKRIT = 0x4f }
735 enum : uint { LANG_SERBIAN = 0x1a }
736 enum : uint { LANG_SINDHI = 0x59 }
737 enum : uint { LANG_SLOVAK = 0x1b }
738 enum : uint { LANG_SLOVENIAN = 0x24 }
739 enum : uint { LANG_SPANISH = 0x0a }
740 enum : uint { LANG_SWAHILI = 0x41 }
741 enum : uint { LANG_SWEDISH = 0x1d }
742 enum : uint { LANG_SYRIAC = 0x5a }
743 enum : uint { LANG_TAMIL = 0x49 }
744 enum : uint { LANG_TATAR = 0x44 }
745 enum : uint { LANG_TELUGU = 0x4a }
746 enum : uint { LANG_THAI = 0x1e }
747 enum : uint { LANG_TURKISH = 0x1f }
748 enum : uint { LANG_UKRAINIAN = 0x22 }
749 enum : uint { LANG_URDU = 0x20 }
750 enum : uint { LANG_UZBEK = 0x43 }
751 enum : uint { LANG_VIETNAMESE = 0x2a }
752
753 enum : uint { SUBLANG_NEUTRAL = 0x00 }
754 enum : uint { SUBLANG_DEFAULT = 0x01 }
755 enum : uint { SUBLANG_SYS_DEFAULT = 0x02 }
756
757 enum : uint { SUBLANG_ARABIC_SAUDI_ARABIA = 0x01 }
758 enum : uint { SUBLANG_ARABIC_IRAQ = 0x02 }
759 enum : uint { SUBLANG_ARABIC_EGYPT = 0x03 }
760 enum : uint { SUBLANG_ARABIC_LIBYA = 0x04 }
761 enum : uint { SUBLANG_ARABIC_ALGERIA = 0x05 }
762 enum : uint { SUBLANG_ARABIC_MOROCCO = 0x06 }
763 enum : uint { SUBLANG_ARABIC_TUNISIA = 0x07 }
764 enum : uint { SUBLANG_ARABIC_OMAN = 0x08 }
765 enum : uint { SUBLANG_ARABIC_YEMEN = 0x09 }
766 enum : uint { SUBLANG_ARABIC_SYRIA = 0x0a }
767 enum : uint { SUBLANG_ARABIC_JORDAN = 0x0b }
768 enum : uint { SUBLANG_ARABIC_LEBANON = 0x0c }
769 enum : uint { SUBLANG_ARABIC_KUWAIT = 0x0d }
770 enum : uint { SUBLANG_ARABIC_UAE = 0x0e }
771 enum : uint { SUBLANG_ARABIC_BAHRAIN = 0x0f }
772 enum : uint { SUBLANG_ARABIC_QATAR = 0x10 }
773 enum : uint { SUBLANG_AZERI_LATIN = 0x01 }
774 enum : uint { SUBLANG_AZERI_CYRILLIC = 0x02 }
775 enum : uint { SUBLANG_CHINESE_TRADITIONAL = 0x01 }
776 enum : uint { SUBLANG_CHINESE_SIMPLIFIED = 0x02 }
777 enum : uint { SUBLANG_CHINESE_HONGKONG = 0x03 }
778 enum : uint { SUBLANG_CHINESE_SINGAPORE = 0x04 }
779 enum : uint { SUBLANG_CHINESE_MACAU = 0x05 }
780 enum : uint { SUBLANG_DUTCH = 0x01 }
781 enum : uint { SUBLANG_DUTCH_BELGIAN = 0x02 }
782 enum : uint { SUBLANG_ENGLISH_US = 0x01 }
783 enum : uint { SUBLANG_ENGLISH_UK = 0x02 }
784 enum : uint { SUBLANG_ENGLISH_AUS = 0x03 }
785 enum : uint { SUBLANG_ENGLISH_CAN = 0x04 }
786 enum : uint { SUBLANG_ENGLISH_NZ = 0x05 }
787 enum : uint { SUBLANG_ENGLISH_EIRE = 0x06 }
788 enum : uint { SUBLANG_ENGLISH_SOUTH_AFRICA = 0x07 }
789 enum : uint { SUBLANG_ENGLISH_JAMAICA = 0x08 }
790 enum : uint { SUBLANG_ENGLISH_CARIBBEAN = 0x09 }
791 enum : uint { SUBLANG_ENGLISH_BELIZE = 0x0a }
792 enum : uint { SUBLANG_ENGLISH_TRINIDAD = 0x0b }
793 enum : uint { SUBLANG_ENGLISH_ZIMBABWE = 0x0c }
794 enum : uint { SUBLANG_ENGLISH_PHILIPPINES = 0x0d }
795 enum : uint { SUBLANG_FRENCH = 0x01 }
796 enum : uint { SUBLANG_FRENCH_BELGIAN = 0x02 }
797 enum : uint { SUBLANG_FRENCH_CANADIAN = 0x03 }
798 enum : uint { SUBLANG_FRENCH_SWISS = 0x04 }
799 enum : uint { SUBLANG_FRENCH_LUXEMBOURG = 0x05 }
800 enum : uint { SUBLANG_FRENCH_MONACO = 0x06 }
801 enum : uint { SUBLANG_GERMAN = 0x01 }
802 enum : uint { SUBLANG_GERMAN_SWISS = 0x02 }
803 enum : uint { SUBLANG_GERMAN_AUSTRIAN = 0x03 }
804 enum : uint { SUBLANG_GERMAN_LUXEMBOURG = 0x04 }
805 enum : uint { SUBLANG_GERMAN_LIECHTENSTEIN = 0x05 }
806 enum : uint { SUBLANG_ITALIAN = 0x01 }
807 enum : uint { SUBLANG_ITALIAN_SWISS = 0x02 }
808 // #if _WIN32_WINNT >= 0x0501
809 enum : uint { SUBLANG_KASHMIRI_SASIA = 0x02 }
810 // #endif
811 enum : uint { SUBLANG_KASHMIRI_INDIA = 0x02 }
812 enum : uint { SUBLANG_KOREAN = 0x01 }
813 enum : uint { SUBLANG_LITHUANIAN = 0x01 }
814 enum : uint { SUBLANG_MALAY_MALAYSIA = 0x01 }
815 enum : uint { SUBLANG_MALAY_BRUNEI_DARUSSALAM = 0x02 }
816 enum : uint { SUBLANG_NEPALI_INDIA = 0x02 }
817 enum : uint { SUBLANG_NORWEGIAN_BOKMAL = 0x01 }
818 enum : uint { SUBLANG_NORWEGIAN_NYNORSK = 0x02 }
819 enum : uint { SUBLANG_PORTUGUESE = 0x02 }
820 enum : uint { SUBLANG_PORTUGUESE_BRAZILIAN = 0x01 }
821 enum : uint { SUBLANG_SERBIAN_LATIN = 0x02 }
822 enum : uint { SUBLANG_SERBIAN_CYRILLIC = 0x03 }
823 enum : uint { SUBLANG_SPANISH = 0x01 }
824 enum : uint { SUBLANG_SPANISH_MEXICAN = 0x02 }
825 enum : uint { SUBLANG_SPANISH_MODERN = 0x03 }
826 enum : uint { SUBLANG_SPANISH_GUATEMALA = 0x04 }
827 enum : uint { SUBLANG_SPANISH_COSTA_RICA = 0x05 }
828 enum : uint { SUBLANG_SPANISH_PANAMA = 0x06 }
829 enum : uint { SUBLANG_SPANISH_DOMINICAN_REPUBLIC = 0x07 }
830 enum : uint { SUBLANG_SPANISH_VENEZUELA = 0x08 }
831 enum : uint { SUBLANG_SPANISH_COLOMBIA = 0x09 }
832 enum : uint { SUBLANG_SPANISH_PERU = 0x0a }
833 enum : uint { SUBLANG_SPANISH_ARGENTINA = 0x0b }
834 enum : uint { SUBLANG_SPANISH_ECUADOR = 0x0c }
835 enum : uint { SUBLANG_SPANISH_CHILE = 0x0d }
836 enum : uint { SUBLANG_SPANISH_URUGUAY = 0x0e }
837 enum : uint { SUBLANG_SPANISH_PARAGUAY = 0x0f }
838 enum : uint { SUBLANG_SPANISH_BOLIVIA = 0x10 }
839 enum : uint { SUBLANG_SPANISH_EL_SALVADOR = 0x11 }
840 enum : uint { SUBLANG_SPANISH_HONDURAS = 0x12 }
841 enum : uint { SUBLANG_SPANISH_NICARAGUA = 0x13 }
842 enum : uint { SUBLANG_SPANISH_PUERTO_RICO = 0x14 }
843 enum : uint { SUBLANG_SWEDISH = 0x01 }
844 enum : uint { SUBLANG_SWEDISH_FINLAND = 0x02 }
845 enum : uint { SUBLANG_URDU_PAKISTAN = 0x01 }
846 enum : uint { SUBLANG_URDU_INDIA = 0x02 }
847 enum : uint { SUBLANG_UZBEK_LATIN = 0x01 }
848 enum : uint { SUBLANG_UZBEK_CYRILLIC = 0x02 }
849
850 enum : uint { SORT_DEFAULT = 0x0 }
851
852 enum : uint { SORT_JAPANESE_XJIS = 0x0 }
853 enum : uint { SORT_JAPANESE_UNICODE = 0x1 }
854
855 enum : uint { SORT_CHINESE_BIG5 = 0x0 }
856 enum : uint { SORT_CHINESE_PRCP = 0x0 }
857 enum : uint { SORT_CHINESE_UNICODE = 0x1 }
858 enum : uint { SORT_CHINESE_PRC = 0x2 }
859 enum : uint { SORT_CHINESE_BOPOMOFO = 0x3 }
860
861 enum : uint { SORT_KOREAN_KSC = 0x0 }
862 enum : uint { SORT_KOREAN_UNICODE = 0x1 }
863
864 enum : uint { SORT_GERMAN_PHONE_BOOK = 0x1 }
865
866 enum : uint { SORT_HUNGARIAN_DEFAULT = 0x0 }
867 enum : uint { SORT_HUNGARIAN_TECHNICAL = 0x1 }
868
869 enum : uint { SORT_GEORGIAN_TRADITIONAL = 0x0 }
870 enum : uint { SORT_GEORGIAN_MODERN = 0x1 }
871
872 WORD MAKELANGID(USHORT p, USHORT s) { return (((cast(WORD)(s)) << 10) | cast(WORD)(p)); }
873 WORD PRIMARYLANGID(WORD lgid) { return lgid & 0x3ff; }
874 WORD SUBLANGID(WORD lgid) { return lgid >>> 10; }
875
876 enum : uint { NLS_VALID_LOCALE_MASK = 0x000fffff }
877
878 DWORD MAKELCID(WORD lgid, WORD srtid) { return ((cast(DWORD)srtid) << 16) | (cast(DWORD)lgid); }
879 DWORD MAKESORTLCID(WORD lgid, WORD srtid, WORD ver) { return (MAKELCID(lgid, srtid)) | ((cast(DWORD)ver) << 20); }
880 WORD LANGIDFROMLCID(LCID lcid) { return lcid; }
881 WORD SORTIDFROMLCID(LCID lcid) { return (cast(DWORD)lcid >>> 16) & 0xf; }
882 WORD SORTVERSIONFROMLCID(LCID lcid) { return (cast(DWORD)lcid >>> 20) & 0xf; }
883
884 enum : uint { LANG_SYSTEM_DEFAULT = (SUBLANG_SYS_DEFAULT << 10) | LANG_NEUTRAL }
885 enum : uint { LANG_USER_DEFAULT = (SUBLANG_DEFAULT << 10) | LANG_NEUTRAL }
886
887 enum : uint { LOCALE_SYSTEM_DEFAULT = (SORT_DEFAULT << 16) | LANG_SYSTEM_DEFAULT }
888 enum : uint { LOCALE_USER_DEFAULT = (SORT_DEFAULT << 16) | LANG_USER_DEFAULT }
889
890 enum : uint { LOCALE_NEUTRAL = (SORT_DEFAULT << 16) | (SUBLANG_NEUTRAL << 10) | LANG_NEUTRAL }
891
892 enum : uint { LOCALE_INVARIANT = (SORT_DEFAULT << 16) | (SUBLANG_NEUTRAL << 10) | LANG_INVARIANT }
893
894 // #if ! defined(lint)
895 // #...
896 // #...
897 // #...
898
899 // #else // lint
900
901 // #define UNREFERENCED_PARAMETER(P) { (P) = (P); }
902 // #define DBG_UNREFERENCED_PARAMETER(P) { (P) = (P); }
903 // #define DBG_UNREFERENCED_LOCAL_VARIABLE(V) { (V) = (V); }
904
905 // #endif // lint
906
907 // #if (_MSC_VER > 1200)
908 // #define DEFAULT_UNREACHABLE default: __assume(0)
909 // #else
910
911 // #...
912
913 // #endif
914
915 // #ifndef WIN32_NO_STATUS
916
917 enum : DWORD { STATUS_WAIT_0 = 0x00000000 }
918 enum : DWORD { STATUS_ABANDONED_WAIT_0 = 0x00000080 }
919 enum : DWORD { STATUS_USER_APC = 0x000000C0 }
920 enum : DWORD { STATUS_TIMEOUT = 0x00000102 }
921 enum : DWORD { STATUS_PENDING = 0x00000103 }
922 enum : DWORD { DBG_EXCEPTION_HANDLED = 0x00010001 }
923 enum : DWORD { DBG_CONTINUE = 0x00010002 }
924 enum : DWORD { STATUS_SEGMENT_NOTIFICATION = 0x40000005 }
925 enum : DWORD { DBG_TERMINATE_THREAD = 0x40010003 }
926 enum : DWORD { DBG_TERMINATE_PROCESS = 0x40010004 }
927 enum : DWORD { DBG_CONTROL_C = 0x40010005 }
928 enum : DWORD { DBG_CONTROL_BREAK = 0x40010008 }
929 enum : DWORD { STATUS_GUARD_PAGE_VIOLATION = 0x80000001 }
930 enum : DWORD { STATUS_DATATYPE_MISALIGNMENT = 0x80000002 }
931 enum : DWORD { STATUS_BREAKPOINT = 0x80000003 }
932 enum : DWORD { STATUS_SINGLE_STEP = 0x80000004 }
933 enum : DWORD { DBG_EXCEPTION_NOT_HANDLED = 0x80010001 }
934 enum : DWORD { STATUS_ACCESS_VIOLATION = 0xC0000005 }
935 enum : DWORD { STATUS_IN_PAGE_ERROR = 0xC0000006 }
936 enum : DWORD { STATUS_INVALID_HANDLE = 0xC0000008 }
937 enum : DWORD { STATUS_NO_MEMORY = 0xC0000017 }
938 enum : DWORD { STATUS_ILLEGAL_INSTRUCTION = 0xC000001D }
939 enum : DWORD { STATUS_NONCONTINUABLE_EXCEPTION = 0xC0000025 }
940 enum : DWORD { STATUS_INVALID_DISPOSITION = 0xC0000026 }
941 enum : DWORD { STATUS_ARRAY_BOUNDS_EXCEEDED = 0xC000008C }
942 enum : DWORD { STATUS_FLOAT_DENORMAL_OPERAND = 0xC000008D }
943 enum : DWORD { STATUS_FLOAT_DIVIDE_BY_ZERO = 0xC000008E }
944 enum : DWORD { STATUS_FLOAT_INEXACT_RESULT = 0xC000008F }
945 enum : DWORD { STATUS_FLOAT_INVALID_OPERATION = 0xC0000090 }
946 enum : DWORD { STATUS_FLOAT_OVERFLOW = 0xC0000091 }
947 enum : DWORD { STATUS_FLOAT_STACK_CHECK = 0xC0000092 }
948 enum : DWORD { STATUS_FLOAT_UNDERFLOW = 0xC0000093 }
949 enum : DWORD { STATUS_INTEGER_DIVIDE_BY_ZERO = 0xC0000094 }
950 enum : DWORD { STATUS_INTEGER_OVERFLOW = 0xC0000095 }
951 enum : DWORD { STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096 }
952 enum : DWORD { STATUS_STACK_OVERFLOW = 0xC00000FD }
953 enum : DWORD { STATUS_CONTROL_C_EXIT = 0xC000013A }
954 enum : DWORD { STATUS_FLOAT_MULTIPLE_FAULTS = 0xC00002B4 }
955 enum : DWORD { STATUS_FLOAT_MULTIPLE_TRAPS = 0xC00002B5 }
956 enum : DWORD { STATUS_REG_NAT_CONSUMPTION = 0xC00002C9 }
957 // #if defined(STATUS_SUCCESS) || (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100)
958 enum : DWORD { STATUS_SXS_EARLY_DEACTIVATION = 0xC015000F }
959 enum : DWORD { STATUS_SXS_INVALID_DEACTIVATION = 0xC0150010 }
960 // #endif
961
962 // #endif
963 enum : uint { MAXIMUM_WAIT_OBJECTS = 64 }
964
965 alias MAXCHAR MAXIMUM_SUSPEND_COUNT;
966
967 alias ULONG_PTR KSPIN_LOCK;
968 alias KSPIN_LOCK* PKSPIN_LOCK;
969
970 // #if defined(_AMD64_)
971
972 // #if defined(_M_AMD64) && !defined(RC_INVOKED) && !defined(MIDL_PASS)
973
974 // #...
975
976 // ...
977
978 // #...
979
980 // #...
981
982 // ...
983
984 // #...
985
986 // ...
987
988 // ...
989
990 // ...
991
992 // ...
993
994 // #...
995 // #...
996 // #...
997 // #...
998
999 // #...
1000 // #...
1001
1002 // ...
1003
1004 // ...
1005
1006 // #...
1007 // #...
1008
1009 // ...
1010
1011 // ...
1012
1013 // ...
1014
1015 // ...
1016
1017 // ...
1018
1019 // ...
1020
1021 // ...
1022
1023 // ...
1024
1025 // #...
1026 // #...
1027 // #...
1028 // #...
1029 // #...
1030 // #...
1031 // #...
1032 // #...
1033
1034 // #endif // defined(_M_AMD64) && !defined(RC_INVOKED) && !defined(MIDL_PASS)
1035
1036 // #if !defined(RC_INVOKED)
1037
1038 // #...
1039
1040 // #...
1041 // #...
1042 // #...
1043 // #...
1044 // #...
1045
1046 // #...
1047
1048 // #endif // !defined(RC_INVOKED)
1049
1050 // ...
1051
1052 // ...
1053
1054 // #...
1055
1056 // ...
1057
1058 // ...
1059
1060 // ...
1061
1062 // ...
1063
1064 // ...
1065
1066 // ...
1067
1068 // ...
1069
1070 // ...
1071
1072 // ...
1073
1074 // #endif // _AMD64_
1075
1076 // #ifdef _ALPHA_ // winnt
1077 // ...
1078 // #if defined(_M_ALPHA) // winnt
1079 // #...
1080 // #endif // winnt
1081 // #endif // winnt
1082
1083 // #if defined(_M_ALPHA)
1084 // #...
1085 // #else
1086 extern(Windows) export _TEB NtCurrentTeb();
1087 // #endif
1088
1089 // #ifdef _ALPHA_
1090
1091 // #...
1092 // #...
1093
1094 // #if !defined(RC_INVOKED)
1095
1096 // #...
1097
1098 // #...
1099 // #...
1100 // #...
1101
1102 // #...
1103
1104 // #endif
1105
1106 // #ifndef _PORTABLE_32BIT_CONTEXT
1107
1108 // ...
1109
1110 // ...
1111
1112 // ...
1113
1114 // ...
1115
1116 // ...
1117
1118 // ...
1119
1120 // ...
1121
1122 // #else
1123
1124 // #...
1125
1126 // #endif // _PORTABLE_32BIT_CONTEXT
1127
1128 // #endif // _ALPHA_
1129
1130 // #ifdef _ALPHA_
1131
1132 // ...
1133
1134 // #endif // _ALPHA_
1135
1136 // #ifdef _X86_
1137
1138 // #if !defined(MIDL_PASS)
1139 // #if !defined(RC_INVOKED)
1140
1141 // #if _MSC_VER >= 1200
1142 // #pragma warning(push)
1143 // #endif
1144 // #pragma warning(disable:4164) // disable C4164 warning so that apps that
1145
1146 // #ifdef _M_IX86
1147 // #pragma function(_enable)
1148 // #pragma function(_disable)
1149 // #endif
1150
1151 // #if _MSC_VER >= 1200
1152 // #pragma warning(pop)
1153 // #else
1154 // #...
1155 // #endif
1156
1157 // #endif
1158 // #endif
1159
1160 // #if !defined(MIDL_PASS) && defined(_M_IX86)
1161 // #if _MSC_VER >= 1200
1162 // #pragma warning(push)
1163 // #endif
1164 // #pragma warning (disable:4035) // disable 4035 (function must return something)
1165 PVOID GetFiberData() { asm { mov EAX, FS:[0x10]; mov EAX, [EAX]; } }
1166 PVOID GetCurrentFiber() { asm { mov EAX, FS:[0x10]; } }
1167
1168 // #if _MSC_VER >= 1200
1169 // #pragma warning(pop)
1170 // #else
1171 // #...
1172 // #endif
1173 // #endif
1174
1175 enum : uint { SIZE_OF_80387_REGISTERS = 80 }
1176
1177 // #if !defined(RC_INVOKED)
1178
1179 enum : uint { CONTEXT_i386 = 0x00010000 }
1180 enum : uint { CONTEXT_i486 = 0x00010000 }
1181
1182 enum : uint { CONTEXT_CONTROL = CONTEXT_i386 | 0x00000001L }
1183 enum : uint { CONTEXT_INTEGER = CONTEXT_i386 | 0x00000002L }
1184 enum : uint { CONTEXT_SEGMENTS = CONTEXT_i386 | 0x00000004L }
1185 enum : uint { CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x00000008L }
1186 enum : uint { CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x00000010L }
1187 enum : uint { CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x00000020L }
1188
1189 enum : uint { CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS }
1190
1191 // #endif
1192
1193 enum : uint { MAXIMUM_SUPPORTED_EXTENSION = 512 }
1194
1195 struct _FLOATING_SAVE_AREA {
1196 DWORD ControlWord;
1197 DWORD StatusWord;
1198 DWORD TagWord;
1199 DWORD ErrorOffset;
1200 DWORD ErrorSelector;
1201 DWORD DataOffset;
1202 DWORD DataSelector;
1203 BYTE RegisterArea[SIZE_OF_80387_REGISTERS];
1204 DWORD Cr0NpxState;
1205 }
1206 alias _FLOATING_SAVE_AREA FLOATING_SAVE_AREA;
1207
1208 alias FLOATING_SAVE_AREA* PFLOATING_SAVE_AREA;
1209
1210 struct _CONTEXT {
1211
1212 DWORD ContextFlags;
1213
1214 DWORD Dr0;
1215 DWORD Dr1;
1216 DWORD Dr2;
1217 DWORD Dr3;
1218 DWORD Dr6;
1219 DWORD Dr7;
1220
1221 FLOATING_SAVE_AREA FloatSave;
1222
1223 DWORD SegGs;
1224 DWORD SegFs;
1225 DWORD SegEs;
1226 DWORD SegDs;
1227
1228 DWORD Edi;
1229 DWORD Esi;
1230 DWORD Ebx;
1231 DWORD Edx;
1232 DWORD Ecx;
1233 DWORD Eax;
1234
1235 DWORD Ebp;
1236 DWORD Eip;
1237 DWORD SegCs;
1238 DWORD EFlags;
1239 DWORD Esp;
1240 DWORD SegSs;
1241
1242 BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
1243 }
1244 alias _CONTEXT CONTEXT;
1245
1246 alias CONTEXT* PCONTEXT;
1247
1248 // #endif //_X86_
1249
1250 // #ifndef _LDT_ENTRY_DEFINED
1251 // #define _LDT_ENTRY_DEFINED
1252
1253 struct _LDT_ENTRY {
1254 WORD LimitLow;
1255 WORD BaseLow;
1256 union {
1257 struct {
1258 BYTE BaseMid;
1259 BYTE Flags1;
1260 BYTE Flags2;
1261 BYTE BaseHi;
1262 }
1263
1264 struct {
1265 // DWORD BaseMid : 8;
1266 // DWORD Type : 5;
1267 // DWORD Dpl : 2;
1268 // DWORD Pres : 1;
1269 // DWORD LimitHi : 4;
1270 // DWORD Sys : 1;
1271 // DWORD Reserved_0 : 1;
1272 // DWORD Default_Big : 1;
1273 // DWORD Granularity : 1;
1274 // DWORD BaseHi : 8;
1275 }
1276
1277 }
1278
1279 }
1280 alias _LDT_ENTRY LDT_ENTRY;
1281 alias _LDT_ENTRY* PLDT_ENTRY;
1282
1283 // #endif
1284
1285 // #if defined(_MIPS_)
1286
1287 // #...
1288 // #...
1289
1290 // #if !defined(RC_INVOKED)
1291
1292 // #...
1293
1294 // #...
1295 // #...
1296 // #...
1297 // #...
1298 // #...
1299
1300 // #...
1301 // ...
1302
1303 // #endif
1304
1305 // ...
1306
1307 // ...
1308
1309 // ...
1310
1311 // ...
1312
1313 // ...
1314
1315 // ...
1316
1317 // ...
1318
1319 // ...
1320
1321 // ...
1322
1323 // ...
1324
1325 // ...
1326
1327 // ...
1328
1329 // ...
1330
1331 // ...
1332
1333 // ...
1334
1335 // ...
1336
1337 // #...
1338
1339 // #endif // MIPS
1340
1341 // #if defined(_MIPS_)
1342
1343 // ...
1344
1345 // #endif // MIPS
1346
1347 // #if defined(_PPC_)
1348
1349 // #if defined(_M_PPC) && defined(_MSC_VER) && (_MSC_VER>=1000)
1350 // ...
1351 // #...
1352 // #elif defined(_M_PPC)
1353 // ...
1354 // #...
1355 // #endif
1356
1357 // #...
1358 // #...
1359
1360 // #if !defined(RC_INVOKED)
1361
1362 // #...
1363 // #...
1364 // #...
1365 // #...
1366
1367 // #...
1368
1369 // #endif
1370
1371 // ...
1372
1373 // ...
1374
1375 // ...
1376
1377 // ...
1378
1379 // ...
1380
1381 // ...
1382
1383 // ...
1384
1385 // ...
1386
1387 // ...
1388
1389 // ...
1390
1391 // ...
1392
1393 // ...
1394
1395 // ...
1396
1397 // #endif // defined(_PPC_)
1398
1399 // #if defined(_MPPC_)
1400
1401 // #if defined(_M_PPC) && defined(_MSC_VER) && (_MSC_VER>=1000)
1402 // ...
1403 // #...
1404 // #elif defined(_M_PPC)
1405 // ...
1406 // #...
1407 // #endif
1408
1409 // #...
1410 // #...
1411
1412 // #if !defined(RC_INVOKED)
1413
1414 // #...
1415 // #...
1416 // #...
1417 // #...
1418
1419 // #...
1420
1421 // #endif
1422
1423 // ...
1424
1425 // ...
1426
1427 // ...
1428
1429 // ...
1430
1431 // ...
1432
1433 // ...
1434
1435 // ...
1436
1437 // ...
1438
1439 // ...
1440
1441 // ...
1442
1443 // ...
1444
1445 // ...
1446
1447 // ...
1448
1449 // #endif // defined(_MPPC_)
1450
1451 // #if !defined(__midl) && !defined(GENUTIL) && !defined(_GENIA64_) && defined(_IA64_)
1452
1453 // ...
1454 // #if defined(_M_IA64) // winnt
1455 // #...
1456 // #endif // winnt
1457
1458 // #if defined(_M_IA64)
1459 // #...
1460 // #else
1461 // ...
1462 // #endif
1463
1464 // #...
1465 // #...
1466
1467 // #endif // !defined(__midl) && !defined(GENUTIL) && !defined(_GENIA64_) && defined(_M_IA64)
1468
1469 // #ifdef _IA64_
1470
1471 // #if !defined(RC_INVOKED)
1472
1473 // #...
1474
1475 // #...
1476 // #...
1477 // #...
1478 // #...
1479 // #...
1480 // #...
1481
1482 // #...
1483 // #...
1484
1485 // #endif // !defined(RC_INVOKED)
1486
1487 // ...
1488
1489 // ...
1490
1491 // ...
1492
1493 // ...
1494
1495 // ...
1496
1497 // ...
1498
1499 // ...
1500
1501 // ...
1502
1503 // ...
1504
1505 // ...
1506
1507 // ...
1508
1509 // ...
1510
1511 // ...
1512
1513 // ...
1514
1515 // ...
1516
1517 // ...
1518
1519 // ...
1520
1521 // ...
1522
1523 // ...
1524
1525 // ...
1526
1527 // ...
1528
1529 // ...
1530
1531 // ...
1532
1533 // ...
1534
1535 // ...
1536
1537 // ...
1538
1539 // ...
1540
1541 // #endif // _IA64_
1542
1543 // #ifdef _IA64_
1544
1545 // ...
1546
1547 // #endif // _IA64_
1548
1549 enum : uint { EXCEPTION_NONCONTINUABLE = 0x1 }
1550 enum : uint { EXCEPTION_MAXIMUM_PARAMETERS = 15 }
1551
1552 struct _EXCEPTION_RECORD {
1553 DWORD ExceptionCode;
1554 DWORD ExceptionFlags;
1555 _EXCEPTION_RECORD *ExceptionRecord;
1556 PVOID ExceptionAddress;
1557 DWORD NumberParameters;
1558 ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
1559 }
1560 alias _EXCEPTION_RECORD EXCEPTION_RECORD;
1561
1562 alias EXCEPTION_RECORD* PEXCEPTION_RECORD;
1563
1564 struct _EXCEPTION_RECORD32 {
1565 DWORD ExceptionCode;
1566 DWORD ExceptionFlags;
1567 DWORD ExceptionRecord;
1568 DWORD ExceptionAddress;
1569 DWORD NumberParameters;
1570 DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
1571 }
1572 alias _EXCEPTION_RECORD32 EXCEPTION_RECORD32;
1573 alias _EXCEPTION_RECORD32* PEXCEPTION_RECORD32;
1574
1575 struct _EXCEPTION_RECORD64 {
1576 DWORD ExceptionCode;
1577 DWORD ExceptionFlags;
1578 DWORD64 ExceptionRecord;
1579 DWORD64 ExceptionAddress;
1580 DWORD NumberParameters;
1581 DWORD __unusedAlignment;
1582 DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
1583 }
1584 alias _EXCEPTION_RECORD64 EXCEPTION_RECORD64;
1585 alias _EXCEPTION_RECORD64* PEXCEPTION_RECORD64;
1586
1587 struct _EXCEPTION_POINTERS {
1588 PEXCEPTION_RECORD ExceptionRecord;
1589 PCONTEXT ContextRecord;
1590 }
1591 alias _EXCEPTION_POINTERS EXCEPTION_POINTERS;
1592 alias _EXCEPTION_POINTERS* PEXCEPTION_POINTERS;
1593
1594 alias PVOID PACCESS_TOKEN;
1595 alias PVOID PSECURITY_DESCRIPTOR;
1596 alias PVOID PSID;
1597
1598 alias DWORD ACCESS_MASK;
1599 alias ACCESS_MASK* PACCESS_MASK;
1600
1601 enum : uint { DELETE = 0x00010000 }
1602 enum : uint { READ_CONTROL = 0x00020000 }
1603 enum : uint { WRITE_DAC = 0x00040000 }
1604 enum : uint { WRITE_OWNER = 0x00080000 }
1605 enum : uint { SYNCHRONIZE = 0x00100000 }
1606
1607 enum : uint { STANDARD_RIGHTS_REQUIRED = 0x000F0000 }
1608
1609 enum : uint { STANDARD_RIGHTS_READ = READ_CONTROL }
1610 enum : uint { STANDARD_RIGHTS_WRITE = READ_CONTROL }
1611 enum : uint { STANDARD_RIGHTS_EXECUTE = READ_CONTROL }
1612
1613 enum : uint { STANDARD_RIGHTS_ALL = 0x001F0000 }
1614
1615 enum : uint { SPECIFIC_RIGHTS_ALL = 0x0000FFFF }
1616
1617 enum : uint { ACCESS_SYSTEM_SECURITY = 0x01000000 }
1618
1619 enum : uint { MAXIMUM_ALLOWED = 0x02000000 }
1620
1621 enum : uint { GENERIC_READ = 0x80000000 }
1622 enum : uint { GENERIC_WRITE = 0x40000000 }
1623 enum : uint { GENERIC_EXECUTE = 0x20000000 }
1624 enum : uint { GENERIC_ALL = 0x10000000 }
1625
1626 struct _GENERIC_MAPPING {
1627 ACCESS_MASK GenericRead;
1628 ACCESS_MASK GenericWrite;
1629 ACCESS_MASK GenericExecute;
1630 ACCESS_MASK GenericAll;
1631 }
1632 alias _GENERIC_MAPPING GENERIC_MAPPING;
1633
1634 alias GENERIC_MAPPING* PGENERIC_MAPPING;
1635
1636 align(4):
1637
1638 struct _LUID_AND_ATTRIBUTES {
1639 LUID Luid;
1640 DWORD Attributes;
1641 }
1642 alias _LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES;
1643 alias _LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES;
1644
1645 alias LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
1646 alias LUID_AND_ATTRIBUTES_ARRAY* PLUID_AND_ATTRIBUTES_ARRAY;
1647
1648 align:
1649
1650 // #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
1651 // #define SID_IDENTIFIER_AUTHORITY_DEFINED
1652 struct _SID_IDENTIFIER_AUTHORITY {
1653 BYTE Value[6];
1654 }
1655 alias _SID_IDENTIFIER_AUTHORITY SID_IDENTIFIER_AUTHORITY;
1656 alias _SID_IDENTIFIER_AUTHORITY* PSID_IDENTIFIER_AUTHORITY;
1657
1658 // #endif
1659
1660 // #ifndef SID_DEFINED
1661 // #define SID_DEFINED
1662 struct _SID {
1663 BYTE Revision;
1664 BYTE SubAuthorityCount;
1665 SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
1666 // #ifdef MIDL_PASS
1667 // ...
1668 // #else // MIDL_PASS
1669 DWORD SubAuthority[ANYSIZE_ARRAY];
1670 // #endif // MIDL_PASS
1671 }
1672 alias _SID SID;
1673 alias _SID* PISID;
1674
1675 // #endif
1676
1677 enum : uint { SID_REVISION = 1 }
1678 enum : uint { SID_MAX_SUB_AUTHORITIES = 15 }
1679 enum : uint { SID_RECOMMENDED_SUB_AUTHORITIES = 1 }
1680
1681 // #ifndef MIDL_PASS
1682 const uint SECURITY_MAX_SID_SIZE = SID.sizeof - DWORD.sizeof + (SID_MAX_SUB_AUTHORITIES * DWORD.sizeof);
1683 // #endif // MIDL_PASS
1684
1685 alias int _SID_NAME_USE;
1686 enum {
1687 SidTypeUser = 1,
1688 SidTypeGroup,
1689 SidTypeDomain,
1690 SidTypeAlias,
1691 SidTypeWellKnownGroup,
1692 SidTypeDeletedAccount,
1693 SidTypeInvalid,
1694 SidTypeUnknown,
1695 SidTypeComputer,
1696 }
1697 alias _SID_NAME_USE SID_NAME_USE;
1698 alias _SID_NAME_USE* PSID_NAME_USE;
1699
1700 struct _SID_AND_ATTRIBUTES {
1701 PSID Sid;
1702 DWORD Attributes;
1703 }
1704 alias _SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES;
1705 alias _SID_AND_ATTRIBUTES* PSID_AND_ATTRIBUTES;
1706
1707 alias SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
1708 alias SID_AND_ATTRIBUTES_ARRAY* PSID_AND_ATTRIBUTES_ARRAY;
1709
1710 // #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
1711 // #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
1712 // #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
1713 // #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
1714 // #define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
1715 // #define SECURITY_RESOURCE_MANAGER_AUTHORITY {0,0,0,0,0,9}
1716
1717 enum : uint { SECURITY_NULL_RID = 0x00000000 }
1718 enum : uint { SECURITY_WORLD_RID = 0x00000000 }
1719 enum : uint { SECURITY_LOCAL_RID = 0x00000000 }
1720
1721 enum : uint { SECURITY_CREATOR_OWNER_RID = 0x00000000 }
1722 enum : uint { SECURITY_CREATOR_GROUP_RID = 0x00000001 }
1723
1724 enum : uint { SECURITY_CREATOR_OWNER_SERVER_RID = 0x00000002 }
1725 enum : uint { SECURITY_CREATOR_GROUP_SERVER_RID = 0x00000003 }
1726
1727 // #define SECURITY_NT_AUTHORITY {0,0,0,0,0,5}
1728
1729 enum : uint { SECURITY_DIALUP_RID = 0x00000001 }
1730 enum : uint { SECURITY_NETWORK_RID = 0x00000002 }
1731 enum : uint { SECURITY_BATCH_RID = 0x00000003 }
1732 enum : uint { SECURITY_INTERACTIVE_RID = 0x00000004 }
1733 enum : uint { SECURITY_SERVICE_RID = 0x00000006 }
1734 enum : uint { SECURITY_ANONYMOUS_LOGON_RID = 0x00000007 }
1735 enum : uint { SECURITY_PROXY_RID = 0x00000008 }
1736 enum : uint { SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x00000009 }
1737 alias SECURITY_ENTERPRISE_CONTROLLERS_RID SECURITY_SERVER_LOGON_RID;
1738 enum : uint { SECURITY_PRINCIPAL_SELF_RID = 0x0000000A }
1739 enum : uint { SECURITY_AUTHENTICATED_USER_RID = 0x0000000B }
1740 enum : uint { SECURITY_RESTRICTED_CODE_RID = 0x0000000C }
1741 enum : uint { SECURITY_TERMINAL_SERVER_RID = 0x0000000D }
1742 enum : uint { SECURITY_REMOTE_LOGON_RID = 0x0000000E }
1743
1744 enum : uint { SECURITY_LOGON_IDS_RID = 0x00000005 }
1745 enum : uint { SECURITY_LOGON_IDS_RID_COUNT = 3 }
1746
1747 enum : uint { SECURITY_LOCAL_SYSTEM_RID = 0x00000012 }
1748 enum : uint { SECURITY_LOCAL_SERVICE_RID = 0x00000013 }
1749 enum : uint { SECURITY_NETWORK_SERVICE_RID = 0x00000014 }
1750
1751 enum : uint { SECURITY_NT_NON_UNIQUE = 0x00000015 }
1752 enum : uint { SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT = 3 }
1753
1754 enum : uint { SECURITY_BUILTIN_DOMAIN_RID = 0x00000020 }
1755
1756 enum : uint { DOMAIN_USER_RID_ADMIN = 0x000001F4 }
1757 enum : uint { DOMAIN_USER_RID_GUEST = 0x000001F5 }
1758 enum : uint { DOMAIN_USER_RID_KRBTGT = 0x000001F6 }
1759
1760 enum : uint { DOMAIN_GROUP_RID_ADMINS = 0x00000200 }
1761 enum : uint { DOMAIN_GROUP_RID_USERS = 0x00000201 }
1762 enum : uint { DOMAIN_GROUP_RID_GUESTS = 0x00000202 }
1763 enum : uint { DOMAIN_GROUP_RID_COMPUTERS = 0x00000203 }
1764 enum : uint { DOMAIN_GROUP_RID_CONTROLLERS = 0x00000204 }
1765 enum : uint { DOMAIN_GROUP_RID_CERT_ADMINS = 0x00000205 }
1766 enum : uint { DOMAIN_GROUP_RID_SCHEMA_ADMINS = 0x00000206 }
1767 enum : uint { DOMAIN_GROUP_RID_ENTERPRISE_ADMINS = 0x00000207 }
1768 enum : uint { DOMAIN_GROUP_RID_POLICY_ADMINS = 0x00000208 }
1769
1770 enum : uint { DOMAIN_ALIAS_RID_ADMINS = 0x00000220 }
1771 enum : uint { DOMAIN_ALIAS_RID_USERS = 0x00000221 }
1772 enum : uint { DOMAIN_ALIAS_RID_GUESTS = 0x00000222 }
1773 enum : uint { DOMAIN_ALIAS_RID_POWER_USERS = 0x00000223 }
1774
1775 enum : uint { DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x00000224 }
1776 enum : uint { DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x00000225 }
1777 enum : uint { DOMAIN_ALIAS_RID_PRINT_OPS = 0x00000226 }
1778 enum : uint { DOMAIN_ALIAS_RID_BACKUP_OPS = 0x00000227 }
1779
1780 enum : uint { DOMAIN_ALIAS_RID_REPLICATOR = 0x00000228 }
1781 enum : uint { DOMAIN_ALIAS_RID_RAS_SERVERS = 0x00000229 }
1782 enum : uint { DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x0000022A }
1783 enum : uint { DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = 0x0000022B }
1784 enum : uint { DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = 0x0000022C }
1785
1786 const LUID SYSTEM_LUID = {LowPart: 0x3e7, HighPart: 0x0};
1787 const LUID ANONYMOUS_LOGON_LUID = {LowPart: 0x3e6, HighPart: 0x0};
1788 const LUID LOCALSERVICE_LUID = {LowPart: 0x3e5, HighPart: 0x0};
1789 const LUID NETWORKSERVICE_LUID = {LowPart: 0x3e4, HighPart: 0x0};
1790
1791 enum : uint { SE_GROUP_MANDATORY = 0x00000001 }
1792 enum : uint { SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002 }
1793 enum : uint { SE_GROUP_ENABLED = 0x00000004 }
1794 enum : uint { SE_GROUP_OWNER = 0x00000008 }
1795 enum : uint { SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010 }
1796 enum : uint { SE_GROUP_LOGON_ID = 0xC0000000 }
1797 enum : uint { SE_GROUP_RESOURCE = 0x20000000 }
1798
1799 enum : uint { ACL_REVISION = 2 }
1800 enum : uint { ACL_REVISION_DS = 4 }
1801
1802 enum : uint { ACL_REVISION1 = 1 }
1803 enum { MIN_ACL_REVISION = 2 }
1804 enum : uint { ACL_REVISION2 = 2 }
1805 enum : uint { ACL_REVISION3 = 3 }
1806 enum : uint { ACL_REVISION4 = 4 }
1807 alias ACL_REVISION4 MAX_ACL_REVISION;
1808
1809 struct _ACL {
1810 BYTE AclRevision;
1811 BYTE Sbz1;
1812 WORD AclSize;
1813 WORD AceCount;
1814 WORD Sbz2;
1815 }
1816 alias _ACL ACL;
1817
1818 alias ACL* PACL;
1819
1820 struct _ACE_HEADER {
1821 BYTE AceType;
1822 BYTE AceFlags;
1823 WORD AceSize;
1824 }
1825 alias _ACE_HEADER ACE_HEADER;
1826
1827 alias ACE_HEADER* PACE_HEADER;
1828
1829 enum : uint { ACCESS_MIN_MS_ACE_TYPE = 0x0 }
1830 enum : uint { ACCESS_ALLOWED_ACE_TYPE = 0x0 }
1831 enum : uint { ACCESS_DENIED_ACE_TYPE = 0x1 }
1832 enum : uint { SYSTEM_AUDIT_ACE_TYPE = 0x2 }
1833 enum : uint { SYSTEM_ALARM_ACE_TYPE = 0x3 }
1834 enum : uint { ACCESS_MAX_MS_V2_ACE_TYPE = 0x3 }
1835
1836 enum : uint { ACCESS_ALLOWED_COMPOUND_ACE_TYPE = 0x4 }
1837 enum : uint { ACCESS_MAX_MS_V3_ACE_TYPE = 0x4 }
1838
1839 enum : uint { ACCESS_MIN_MS_OBJECT_ACE_TYPE = 0x5 }
1840 enum : uint { ACCESS_ALLOWED_OBJECT_ACE_TYPE = 0x5 }
1841 enum : uint { ACCESS_DENIED_OBJECT_ACE_TYPE = 0x6 }
1842 enum : uint { SYSTEM_AUDIT_OBJECT_ACE_TYPE = 0x7 }
1843 enum : uint { SYSTEM_ALARM_OBJECT_ACE_TYPE = 0x8 }
1844 enum : uint { ACCESS_MAX_MS_OBJECT_ACE_TYPE = 0x8 }
1845
1846 enum : uint { ACCESS_MAX_MS_V4_ACE_TYPE = 0x8 }
1847 enum : uint { ACCESS_MAX_MS_ACE_TYPE = 0x8 }
1848
1849 enum : uint { ACCESS_ALLOWED_CALLBACK_ACE_TYPE = 0x9 }
1850 enum : uint { ACCESS_DENIED_CALLBACK_ACE_TYPE = 0xA }
1851 enum : uint { ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE = 0xB }
1852 enum : uint { ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE = 0xC }
1853 enum : uint { SYSTEM_AUDIT_CALLBACK_ACE_TYPE = 0xD }
1854 enum : uint { SYSTEM_ALARM_CALLBACK_ACE_TYPE = 0xE }
1855 enum : uint { SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE = 0xF }
1856 enum : uint { SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE = 0x10 }
1857
1858 enum : uint { ACCESS_MAX_MS_V5_ACE_TYPE = 0x10 }
1859
1860 enum : uint { OBJECT_INHERIT_ACE = 0x1 }
1861 enum : uint { CONTAINER_INHERIT_ACE = 0x2 }
1862 enum : uint { NO_PROPAGATE_INHERIT_ACE = 0x4 }
1863 enum : uint { INHERIT_ONLY_ACE = 0x8 }
1864 enum : uint { INHERITED_ACE = 0x10 }
1865 enum : uint { VALID_INHERIT_FLAGS = 0x1F }
1866
1867 enum : uint { SUCCESSFUL_ACCESS_ACE_FLAG = 0x40 }
1868 enum : uint { FAILED_ACCESS_ACE_FLAG = 0x80 }
1869
1870 struct _ACCESS_ALLOWED_ACE {
1871 ACE_HEADER Header;
1872 ACCESS_MASK Mask;
1873 DWORD SidStart;
1874 }
1875 alias _ACCESS_ALLOWED_ACE ACCESS_ALLOWED_ACE;
1876
1877 alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE;
1878
1879 struct _ACCESS_DENIED_ACE {
1880 ACE_HEADER Header;
1881 ACCESS_MASK Mask;
1882 DWORD SidStart;
1883 }
1884 alias _ACCESS_DENIED_ACE ACCESS_DENIED_ACE;
1885
1886 alias ACCESS_DENIED_ACE* PACCESS_DENIED_ACE;
1887
1888 struct _SYSTEM_AUDIT_ACE {
1889 ACE_HEADER Header;
1890 ACCESS_MASK Mask;
1891 DWORD SidStart;
1892 }
1893 alias _SYSTEM_AUDIT_ACE SYSTEM_AUDIT_ACE;
1894
1895 alias SYSTEM_AUDIT_ACE* PSYSTEM_AUDIT_ACE;
1896
1897 struct _SYSTEM_ALARM_ACE {
1898 ACE_HEADER Header;
1899 ACCESS_MASK Mask;
1900 DWORD SidStart;
1901 }
1902 alias _SYSTEM_ALARM_ACE SYSTEM_ALARM_ACE;
1903
1904 alias SYSTEM_ALARM_ACE* PSYSTEM_ALARM_ACE;
1905
1906 struct _ACCESS_ALLOWED_OBJECT_ACE {
1907 ACE_HEADER Header;
1908 ACCESS_MASK Mask;
1909 DWORD Flags;
1910 GUID ObjectType;
1911 GUID InheritedObjectType;
1912 DWORD SidStart;
1913 }
1914 alias _ACCESS_ALLOWED_OBJECT_ACE ACCESS_ALLOWED_OBJECT_ACE;
1915 alias _ACCESS_ALLOWED_OBJECT_ACE* PACCESS_ALLOWED_OBJECT_ACE;
1916
1917 struct _ACCESS_DENIED_OBJECT_ACE {
1918 ACE_HEADER Header;
1919 ACCESS_MASK Mask;
1920 DWORD Flags;
1921 GUID ObjectType;
1922 GUID InheritedObjectType;
1923 DWORD SidStart;
1924 }
1925 alias _ACCESS_DENIED_OBJECT_ACE ACCESS_DENIED_OBJECT_ACE;
1926 alias _ACCESS_DENIED_OBJECT_ACE* PACCESS_DENIED_OBJECT_ACE;
1927
1928 struct _SYSTEM_AUDIT_OBJECT_ACE {
1929 ACE_HEADER Header;
1930 ACCESS_MASK Mask;
1931 DWORD Flags;
1932 GUID ObjectType;
1933 GUID InheritedObjectType;
1934 DWORD SidStart;
1935 }
1936 alias _SYSTEM_AUDIT_OBJECT_ACE SYSTEM_AUDIT_OBJECT_ACE;
1937 alias _SYSTEM_AUDIT_OBJECT_ACE* PSYSTEM_AUDIT_OBJECT_ACE;
1938
1939 struct _SYSTEM_ALARM_OBJECT_ACE {
1940 ACE_HEADER Header;
1941 ACCESS_MASK Mask;
1942 DWORD Flags;
1943 GUID ObjectType;
1944 GUID InheritedObjectType;
1945 DWORD SidStart;
1946 }
1947 alias _SYSTEM_ALARM_OBJECT_ACE SYSTEM_ALARM_OBJECT_ACE;
1948 alias _SYSTEM_ALARM_OBJECT_ACE* PSYSTEM_ALARM_OBJECT_ACE;
1949
1950 struct _ACCESS_ALLOWED_CALLBACK_ACE {
1951 ACE_HEADER Header;
1952 ACCESS_MASK Mask;
1953 DWORD SidStart;
1954 }
1955 alias _ACCESS_ALLOWED_CALLBACK_ACE ACCESS_ALLOWED_CALLBACK_ACE;
1956 alias _ACCESS_ALLOWED_CALLBACK_ACE* PACCESS_ALLOWED_CALLBACK_ACE;
1957
1958 struct _ACCESS_DENIED_CALLBACK_ACE {
1959 ACE_HEADER Header;
1960 ACCESS_MASK Mask;
1961 DWORD SidStart;
1962 }
1963 alias _ACCESS_DENIED_CALLBACK_ACE ACCESS_DENIED_CALLBACK_ACE;
1964 alias _ACCESS_DENIED_CALLBACK_ACE* PACCESS_DENIED_CALLBACK_ACE;
1965
1966 struct _SYSTEM_AUDIT_CALLBACK_ACE {
1967 ACE_HEADER Header;
1968 ACCESS_MASK Mask;
1969 DWORD SidStart;
1970 }
1971 alias _SYSTEM_AUDIT_CALLBACK_ACE SYSTEM_AUDIT_CALLBACK_ACE;
1972 alias _SYSTEM_AUDIT_CALLBACK_ACE* PSYSTEM_AUDIT_CALLBACK_ACE;
1973
1974 struct _SYSTEM_ALARM_CALLBACK_ACE {
1975 ACE_HEADER Header;
1976 ACCESS_MASK Mask;
1977 DWORD SidStart;
1978 }
1979 alias _SYSTEM_ALARM_CALLBACK_ACE SYSTEM_ALARM_CALLBACK_ACE;
1980 alias _SYSTEM_ALARM_CALLBACK_ACE* PSYSTEM_ALARM_CALLBACK_ACE;
1981
1982 struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE {
1983 ACE_HEADER Header;
1984 ACCESS_MASK Mask;
1985 DWORD Flags;
1986 GUID ObjectType;
1987 GUID InheritedObjectType;
1988 DWORD SidStart;
1989 }
1990 alias _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE ACCESS_ALLOWED_CALLBACK_OBJECT_ACE;
1991 alias _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE* PACCESS_ALLOWED_CALLBACK_OBJECT_ACE;
1992
1993 struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE {
1994 ACE_HEADER Header;
1995 ACCESS_MASK Mask;
1996 DWORD Flags;
1997 GUID ObjectType;
1998 GUID InheritedObjectType;
1999 DWORD SidStart;
2000 }
2001 alias _ACCESS_DENIED_CALLBACK_OBJECT_ACE ACCESS_DENIED_CALLBACK_OBJECT_ACE;
2002 alias _ACCESS_DENIED_CALLBACK_OBJECT_ACE* PACCESS_DENIED_CALLBACK_OBJECT_ACE;
2003
2004 struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE {
2005 ACE_HEADER Header;
2006 ACCESS_MASK Mask;
2007 DWORD Flags;
2008 GUID ObjectType;
2009 GUID InheritedObjectType;
2010 DWORD SidStart;
2011 }
2012 alias _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE SYSTEM_AUDIT_CALLBACK_OBJECT_ACE;
2013 alias _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE* PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE;
2014
2015 struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE {
2016 ACE_HEADER Header;
2017 ACCESS_MASK Mask;
2018 DWORD Flags;
2019 GUID ObjectType;
2020 GUID InheritedObjectType;
2021 DWORD SidStart;
2022 }
2023 alias _SYSTEM_ALARM_CALLBACK_OBJECT_ACE SYSTEM_ALARM_CALLBACK_OBJECT_ACE;
2024 alias _SYSTEM_ALARM_CALLBACK_OBJECT_ACE* PSYSTEM_ALARM_CALLBACK_OBJECT_ACE;
2025
2026 enum : uint { ACE_OBJECT_TYPE_PRESENT = 0x1 }
2027 enum : uint { ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x2 }
2028
2029 alias int _ACL_INFORMATION_CLASS;
2030 enum {
2031 AclRevisionInformation = 1,
2032 AclSizeInformation,
2033 }
2034 alias _ACL_INFORMATION_CLASS ACL_INFORMATION_CLASS;
2035
2036 struct _ACL_REVISION_INFORMATION {
2037 DWORD AclRevision;
2038 }
2039 alias _ACL_REVISION_INFORMATION ACL_REVISION_INFORMATION;
2040
2041 alias ACL_REVISION_INFORMATION* PACL_REVISION_INFORMATION;
2042
2043 struct _ACL_SIZE_INFORMATION {
2044 DWORD AceCount;
2045 DWORD AclBytesInUse;
2046 DWORD AclBytesFree;
2047 }
2048 alias _ACL_SIZE_INFORMATION ACL_SIZE_INFORMATION;
2049
2050 alias ACL_SIZE_INFORMATION* PACL_SIZE_INFORMATION;
2051
2052 enum : uint { SECURITY_DESCRIPTOR_REVISION = 1 }
2053 enum : uint { SECURITY_DESCRIPTOR_REVISION1 = 1 }
2054
2055 const uint SECURITY_DESCRIPTOR_MIN_LENGTH = SECURITY_DESCRIPTOR.sizeof;
2056
2057 alias WORD SECURITY_DESCRIPTOR_CONTROL;
2058 alias WORD* PSECURITY_DESCRIPTOR_CONTROL;
2059
2060 enum : uint { SE_OWNER_DEFAULTED = 0x0001 }
2061 enum : uint { SE_GROUP_DEFAULTED = 0x0002 }
2062 enum : uint { SE_DACL_PRESENT = 0x0004 }
2063 enum : uint { SE_DACL_DEFAULTED = 0x0008 }
2064 enum : uint { SE_SACL_PRESENT = 0x0010 }
2065 enum : uint { SE_SACL_DEFAULTED = 0x0020 }
2066 enum : uint { SE_DACL_AUTO_INHERIT_REQ = 0x0100 }
2067 enum : uint { SE_SACL_AUTO_INHERIT_REQ = 0x0200 }
2068 enum : uint { SE_DACL_AUTO_INHERITED = 0x0400 }
2069 enum : uint { SE_SACL_AUTO_INHERITED = 0x0800 }
2070 enum : uint { SE_DACL_PROTECTED = 0x1000 }
2071 enum : uint { SE_SACL_PROTECTED = 0x2000 }
2072 enum : uint { SE_RM_CONTROL_VALID = 0x4000 }
2073 enum : uint { SE_SELF_RELATIVE = 0x8000 }
2074
2075 struct _SECURITY_DESCRIPTOR_RELATIVE {
2076 BYTE Revision;
2077 BYTE Sbz1;
2078 SECURITY_DESCRIPTOR_CONTROL Control;
2079 DWORD Owner;
2080 DWORD Group;
2081 DWORD Sacl;
2082 DWORD Dacl;
2083 }
2084 alias _SECURITY_DESCRIPTOR_RELATIVE SECURITY_DESCRIPTOR_RELATIVE;
2085 alias _SECURITY_DESCRIPTOR_RELATIVE* PISECURITY_DESCRIPTOR_RELATIVE;
2086
2087 struct _SECURITY_DESCRIPTOR {
2088 BYTE Revision;
2089 BYTE Sbz1;
2090 SECURITY_DESCRIPTOR_CONTROL Control;
2091 PSID Owner;
2092 PSID Group;
2093 PACL Sacl;
2094 PACL Dacl;
2095 }
2096 alias _SECURITY_DESCRIPTOR SECURITY_DESCRIPTOR;
2097 alias _SECURITY_DESCRIPTOR* PISECURITY_DESCRIPTOR;
2098
2099 struct _OBJECT_TYPE_LIST {
2100 WORD Level;
2101 WORD Sbz;
2102 GUID *ObjectType;
2103 }
2104 alias _OBJECT_TYPE_LIST OBJECT_TYPE_LIST;
2105 alias _OBJECT_TYPE_LIST* POBJECT_TYPE_LIST;
2106
2107 enum : uint { ACCESS_OBJECT_GUID = 0 }
2108 enum : uint { ACCESS_PROPERTY_SET_GUID = 1 }
2109 enum : uint { ACCESS_PROPERTY_GUID = 2 }
2110
2111 enum : uint { ACCESS_MAX_LEVEL = 4 }
2112
2113 alias int _AUDIT_EVENT_TYPE;
2114 enum {
2115 AuditEventObjectAccess,
2116 AuditEventDirectoryServiceAccess,
2117 }
2118 alias _AUDIT_EVENT_TYPE AUDIT_EVENT_TYPE;
2119 alias _AUDIT_EVENT_TYPE* PAUDIT_EVENT_TYPE;
2120
2121 enum : uint { AUDIT_ALLOW_NO_PRIVILEGE = 0x1 }
2122
2123 const char[] ACCESS_DS_SOURCE_A = "DS";
2124 const wchar[] ACCESS_DS_SOURCE_W = "DS";
2125 const char[] ACCESS_DS_OBJECT_TYPE_NAME_A = "Directory Service Object";
2126 const wchar[] ACCESS_DS_OBJECT_TYPE_NAME_W = "Directory Service Object";
2127
2128 enum : uint { SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001 }
2129 enum : uint { SE_PRIVILEGE_ENABLED = 0x00000002 }
2130 enum : uint { SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000 }
2131
2132 enum : uint { PRIVILEGE_SET_ALL_NECESSARY = 1 }
2133
2134 struct _PRIVILEGE_SET {
2135 DWORD PrivilegeCount;
2136 DWORD Control;
2137 LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
2138 }
2139 alias _PRIVILEGE_SET PRIVILEGE_SET;
2140 alias _PRIVILEGE_SET* PPRIVILEGE_SET;
2141
2142 const TCHAR[] SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege";
2143 const TCHAR[] SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege";
2144 const TCHAR[] SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege";
2145 const TCHAR[] SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege";
2146 const TCHAR[] SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege";
2147 const TCHAR[] SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege";
2148 const TCHAR[] SE_TCB_NAME = "SeTcbPrivilege";
2149 const TCHAR[] SE_SECURITY_NAME = "SeSecurityPrivilege";
2150 const TCHAR[] SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege";
2151 const TCHAR[] SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege";
2152 const TCHAR[] SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege";
2153 const TCHAR[] SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege";
2154 const TCHAR[] SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege";
2155 const TCHAR[] SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege";
2156 const TCHAR[] SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege";
2157 const TCHAR[] SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege";
2158 const TCHAR[] SE_BACKUP_NAME = "SeBackupPrivilege";
2159 const TCHAR[] SE_RESTORE_NAME = "SeRestorePrivilege";
2160 const TCHAR[] SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
2161 const TCHAR[] SE_DEBUG_NAME = "SeDebugPrivilege";
2162 const TCHAR[] SE_AUDIT_NAME = "SeAuditPrivilege";
2163 const TCHAR[] SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege";
2164 const TCHAR[] SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege";
2165 const TCHAR[] SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege";
2166 const TCHAR[] SE_UNDOCK_NAME = "SeUndockPrivilege";
2167 const TCHAR[] SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege";
2168 const TCHAR[] SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege";
2169 const TCHAR[] SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege";
2170
2171 alias int _SECURITY_IMPERSONATION_LEVEL;
2172 enum {
2173 SecurityAnonymous,
2174 SecurityIdentification,
2175 SecurityImpersonation,
2176 SecurityDelegation,
2177 }
2178 alias _SECURITY_IMPERSONATION_LEVEL SECURITY_IMPERSONATION_LEVEL;
2179 alias _SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL;
2180
2181 alias SecurityDelegation SECURITY_MAX_IMPERSONATION_LEVEL;
2182 alias SecurityAnonymous SECURITY_MIN_IMPERSONATION_LEVEL;
2183 alias SecurityImpersonation DEFAULT_IMPERSONATION_LEVEL;
2184 bit VALID_IMPERSONATION_LEVEL(SECURITY_IMPERSONATION_LEVEL L){ return (L >= SECURITY_MIN_IMPERSONATION_LEVEL) && (L <= SECURITY_MAX_IMPERSONATION_LEVEL); }
2185
2186 enum : uint { TOKEN_ASSIGN_PRIMARY = 0x0001 }
2187 enum : uint { TOKEN_DUPLICATE = 0x0002 }
2188 enum : uint { TOKEN_IMPERSONATE = 0x0004 }
2189 enum : uint { TOKEN_QUERY = 0x0008 }
2190 enum : uint { TOKEN_QUERY_SOURCE = 0x0010 }
2191 enum : uint { TOKEN_ADJUST_PRIVILEGES = 0x0020 }
2192 enum : uint { TOKEN_ADJUST_GROUPS = 0x0040 }
2193 enum : uint { TOKEN_ADJUST_DEFAULT = 0x0080 }
2194 enum : uint { TOKEN_ADJUST_SESSIONID = 0x0100 }
2195
2196 enum : uint { TOKEN_ALL_ACCESS_P = STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT }
2197
2198 // #if ((defined(_WIN32_WINNT) && (_WIN32_WINNT > 0x0400)) || (!defined(_WIN32_WINNT)))
2199 enum : uint { TOKEN_ALL_ACCESS = TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID }
2200 // #else
2201 // #...
2202 // #endif
2203
2204 enum : uint { TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY }
2205
2206 enum : uint { TOKEN_WRITE = STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT }
2207
2208 enum : uint { TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE }
2209
2210 alias int _TOKEN_TYPE;
2211 enum {
2212 TokenPrimary = 1,
2213 TokenImpersonation,
2214 }
2215 alias _TOKEN_TYPE TOKEN_TYPE;
2216
2217 alias TOKEN_TYPE* PTOKEN_TYPE;
2218
2219 alias int _TOKEN_INFORMATION_CLASS;
2220 enum {
2221 TokenUser = 1,
2222 TokenGroups,
2223 TokenPrivileges,
2224 TokenOwner,
2225 TokenPrimaryGroup,
2226 TokenDefaultDacl,
2227 TokenSource,
2228 TokenType,
2229 TokenImpersonationLevel,
2230 TokenStatistics,
2231 TokenRestrictedSids,
2232 TokenSessionId,
2233 TokenGroupsAndPrivileges,
2234 TokenSessionReference,
2235 TokenSandBoxInert,
2236 }
2237 alias _TOKEN_INFORMATION_CLASS TOKEN_INFORMATION_CLASS;
2238 alias _TOKEN_INFORMATION_CLASS* PTOKEN_INFORMATION_CLASS;
2239
2240 struct _TOKEN_USER {
2241 SID_AND_ATTRIBUTES User;
2242 }
2243 alias _TOKEN_USER TOKEN_USER;
2244 alias _TOKEN_USER* PTOKEN_USER;
2245
2246 struct _TOKEN_GROUPS {
2247 DWORD GroupCount;
2248 SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
2249 }
2250 alias _TOKEN_GROUPS TOKEN_GROUPS;
2251 alias _TOKEN_GROUPS* PTOKEN_GROUPS;
2252
2253 struct _TOKEN_PRIVILEGES {
2254 DWORD PrivilegeCount;
2255 LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
2256 }
2257 alias _TOKEN_PRIVILEGES TOKEN_PRIVILEGES;
2258 alias _TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES;
2259
2260 struct _TOKEN_OWNER {
2261 PSID Owner;
2262 }
2263 alias _TOKEN_OWNER TOKEN_OWNER;
2264 alias _TOKEN_OWNER* PTOKEN_OWNER;
2265
2266 struct _TOKEN_PRIMARY_GROUP {
2267 PSID PrimaryGroup;
2268 }
2269 alias _TOKEN_PRIMARY_GROUP TOKEN_PRIMARY_GROUP;
2270 alias _TOKEN_PRIMARY_GROUP* PTOKEN_PRIMARY_GROUP;
2271
2272 struct _TOKEN_DEFAULT_DACL {
2273 PACL DefaultDacl;
2274 }
2275 alias _TOKEN_DEFAULT_DACL TOKEN_DEFAULT_DACL;
2276 alias _TOKEN_DEFAULT_DACL* PTOKEN_DEFAULT_DACL;
2277
2278 struct _TOKEN_GROUPS_AND_PRIVILEGES {
2279 DWORD SidCount;
2280 DWORD SidLength;
2281 PSID_AND_ATTRIBUTES Sids;
2282 DWORD RestrictedSidCount;
2283 DWORD RestrictedSidLength;
2284 PSID_AND_ATTRIBUTES RestrictedSids;
2285 DWORD PrivilegeCount;
2286 DWORD PrivilegeLength;
2287 PLUID_AND_ATTRIBUTES Privileges;
2288 LUID AuthenticationId;
2289 }
2290 alias _TOKEN_GROUPS_AND_PRIVILEGES TOKEN_GROUPS_AND_PRIVILEGES;
2291 alias _TOKEN_GROUPS_AND_PRIVILEGES* PTOKEN_GROUPS_AND_PRIVILEGES;
2292
2293 enum : uint { TOKEN_SOURCE_LENGTH = 8 }
2294
2295 struct _TOKEN_SOURCE {
2296 CHAR SourceName[TOKEN_SOURCE_LENGTH];
2297 LUID SourceIdentifier;
2298 }
2299 alias _TOKEN_SOURCE TOKEN_SOURCE;
2300 alias _TOKEN_SOURCE* PTOKEN_SOURCE;
2301
2302 struct _TOKEN_STATISTICS {
2303 LUID TokenId;
2304 LUID AuthenticationId;
2305 LARGE_INTEGER ExpirationTime;
2306 TOKEN_TYPE TokenType;
2307 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
2308 DWORD DynamicCharged;
2309 DWORD DynamicAvailable;
2310 DWORD GroupCount;
2311 DWORD PrivilegeCount;
2312 LUID ModifiedId;
2313 }
2314 alias _TOKEN_STATISTICS TOKEN_STATISTICS;
2315 alias _TOKEN_STATISTICS* PTOKEN_STATISTICS;
2316
2317 struct _TOKEN_CONTROL {
2318 LUID TokenId;
2319 LUID AuthenticationId;
2320 LUID ModifiedId;
2321 TOKEN_SOURCE TokenSource;
2322 }
2323 alias _TOKEN_CONTROL TOKEN_CONTROL;
2324 alias _TOKEN_CONTROL* PTOKEN_CONTROL;
2325
2326 enum : uint { SECURITY_DYNAMIC_TRACKING = TRUE }
2327 enum : uint { SECURITY_STATIC_TRACKING = FALSE }
2328
2329 alias BOOLEAN SECURITY_CONTEXT_TRACKING_MODE;
2330 alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE;
2331
2332 struct _SECURITY_QUALITY_OF_SERVICE {
2333 DWORD Length;
2334 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
2335 SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
2336 BOOLEAN EffectiveOnly;
2337 }
2338 alias _SECURITY_QUALITY_OF_SERVICE SECURITY_QUALITY_OF_SERVICE;
2339 alias _SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE;
2340
2341 struct _SE_IMPERSONATION_STATE {
2342 PACCESS_TOKEN Token;
2343 BOOLEAN CopyOnOpen;
2344 BOOLEAN EffectiveOnly;
2345 SECURITY_IMPERSONATION_LEVEL Level;
2346 }
2347 alias _SE_IMPERSONATION_STATE SE_IMPERSONATION_STATE;
2348 alias _SE_IMPERSONATION_STATE* PSE_IMPERSONATION_STATE;
2349
2350 enum : uint { DISABLE_MAX_PRIVILEGE = 0x1 }
2351 enum : uint { SANDBOX_INERT = 0x2 }
2352
2353 alias DWORD SECURITY_INFORMATION;
2354 alias DWORD* PSECURITY_INFORMATION;
2355
2356 enum : uint { OWNER_SECURITY_INFORMATION = 0x00000001 }
2357 enum : uint { GROUP_SECURITY_INFORMATION = 0x00000002 }
2358 enum : uint { DACL_SECURITY_INFORMATION = 0x00000004 }
2359 enum : uint { SACL_SECURITY_INFORMATION = 0x00000008 }
2360
2361 enum : uint { PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000 }
2362 enum : uint { PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000 }
2363 enum : uint { UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000 }
2364 enum : uint { UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000 }
2365
2366 enum : uint { PROCESS_TERMINATE = 0x0001 }
2367 enum : uint { PROCESS_CREATE_THREAD = 0x0002 }
2368 enum : uint { PROCESS_SET_SESSIONID = 0x0004 }
2369 enum : uint { PROCESS_VM_OPERATION = 0x0008 }
2370 enum : uint { PROCESS_VM_READ = 0x0010 }
2371 enum : uint { PROCESS_VM_WRITE = 0x0020 }
2372 enum : uint { PROCESS_DUP_HANDLE = 0x0040 }
2373 enum : uint { PROCESS_CREATE_PROCESS = 0x0080 }
2374 enum : uint { PROCESS_SET_QUOTA = 0x0100 }
2375 enum : uint { PROCESS_SET_INFORMATION = 0x0200 }
2376 enum : uint { PROCESS_QUERY_INFORMATION = 0x0400 }
2377 enum : uint { PROCESS_SUSPEND_RESUME = 0x0800 }
2378 enum : uint { PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF }
2379
2380 // #if defined(_WIN64)
2381
2382 // #...
2383
2384 // #else
2385
2386 enum : uint { MAXIMUM_PROCESSORS = 32 }
2387
2388 // #endif
2389
2390 enum : uint { THREAD_TERMINATE = 0x0001 }
2391 enum : uint { THREAD_SUSPEND_RESUME = 0x0002 }
2392 enum : uint { THREAD_GET_CONTEXT = 0x0008 }
2393 enum : uint { THREAD_SET_CONTEXT = 0x0010 }
2394 enum : uint { THREAD_SET_INFORMATION = 0x0020 }
2395 enum : uint { THREAD_QUERY_INFORMATION = 0x0040 }
2396 enum : uint { THREAD_SET_THREAD_TOKEN = 0x0080 }
2397 enum : uint { THREAD_IMPERSONATE = 0x0100 }
2398 enum : uint { THREAD_DIRECT_IMPERSONATION = 0x0200 }
2399
2400 enum : uint { THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF }
2401
2402 enum : uint { JOB_OBJECT_ASSIGN_PROCESS = 0x0001 }
2403 enum : uint { JOB_OBJECT_SET_ATTRIBUTES = 0x0002 }
2404 enum : uint { JOB_OBJECT_QUERY = 0x0004 }
2405 enum : uint { JOB_OBJECT_TERMINATE = 0x0008 }
2406 enum : uint { JOB_OBJECT_SET_SECURITY_ATTRIBUTES = 0x0010 }
2407 enum : uint { JOB_OBJECT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1F }
2408
2409 struct _JOB_SET_ARRAY {
2410 HANDLE JobHandle;
2411 DWORD MemberLevel;
2412 DWORD Flags;
2413 }
2414 alias _JOB_SET_ARRAY JOB_SET_ARRAY;
2415 alias _JOB_SET_ARRAY* PJOB_SET_ARRAY;
2416
2417 enum : uint { TLS_MINIMUM_AVAILABLE = 64 }
2418
2419 struct _NT_TIB {
2420 _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
2421 PVOID StackBase;
2422 PVOID StackLimit;
2423 PVOID SubSystemTib;
2424 union {
2425 PVOID FiberData;
2426 DWORD Version;
2427 }
2428
2429 PVOID ArbitraryUserPointer;
2430 _NT_TIB *Self;
2431 }
2432 alias _NT_TIB NT_TIB;
2433
2434 alias NT_TIB* PNT_TIB;
2435
2436 struct _NT_TIB32 {
2437 DWORD ExceptionList;
2438 DWORD StackBase;
2439 DWORD StackLimit;
2440 DWORD SubSystemTib;
2441 union {
2442 DWORD FiberData;
2443 DWORD Version;
2444 }
2445
2446 DWORD ArbitraryUserPointer;
2447 DWORD Self;
2448 }
2449 alias _NT_TIB32 NT_TIB32;
2450 alias _NT_TIB32* PNT_TIB32;
2451
2452 struct _NT_TIB64 {
2453 DWORD64 ExceptionList;
2454 DWORD64 StackBase;
2455 DWORD64 StackLimit;
2456 DWORD64 SubSystemTib;
2457 union {
2458 DWORD64 FiberData;
2459 DWORD Version;
2460 }
2461
2462 DWORD64 ArbitraryUserPointer;
2463 DWORD64 Self;
2464 }
2465 alias _NT_TIB64 NT_TIB64;
2466 alias _NT_TIB64* PNT_TIB64;
2467
2468 // #if !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_)
2469 // #...
2470 // #endif
2471
2472 enum : uint { THREAD_BASE_PRIORITY_LOWRT = 15 }
2473 enum : uint { THREAD_BASE_PRIORITY_MAX = 2 }
2474 enum { THREAD_BASE_PRIORITY_MIN = -2 }
2475 enum { THREAD_BASE_PRIORITY_IDLE = -15 }
2476
2477 struct _QUOTA_LIMITS {
2478 SIZE_T PagedPoolLimit;
2479 SIZE_T NonPagedPoolLimit;
2480 SIZE_T MinimumWorkingSetSize;
2481 SIZE_T MaximumWorkingSetSize;
2482 SIZE_T PagefileLimit;
2483 LARGE_INTEGER TimeLimit;
2484 }
2485 alias _QUOTA_LIMITS QUOTA_LIMITS;
2486
2487 alias QUOTA_LIMITS* PQUOTA_LIMITS;
2488
2489 struct _IO_COUNTERS {
2490 ULONGLONG ReadOperationCount;
2491 ULONGLONG WriteOperationCount;
2492 ULONGLONG OtherOperationCount;
2493 ULONGLONG ReadTransferCount;
2494 ULONGLONG WriteTransferCount;
2495 ULONGLONG OtherTransferCount;
2496 }
2497 alias _IO_COUNTERS IO_COUNTERS;
2498
2499 alias IO_COUNTERS* PIO_COUNTERS;
2500
2501 struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION {
2502 LARGE_INTEGER TotalUserTime;
2503 LARGE_INTEGER TotalKernelTime;
2504 LARGE_INTEGER ThisPeriodTotalUserTime;
2505 LARGE_INTEGER ThisPeriodTotalKernelTime;
2506 DWORD TotalPageFaultCount;
2507 DWORD TotalProcesses;
2508 DWORD ActiveProcesses;
2509 DWORD TotalTerminatedProcesses;
2510 }
2511 alias _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION JOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
2512 alias _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION* PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
2513
2514 struct _JOBOBJECT_BASIC_LIMIT_INFORMATION {
2515 LARGE_INTEGER PerProcessUserTimeLimit;
2516 LARGE_INTEGER PerJobUserTimeLimit;
2517 DWORD LimitFlags;
2518 SIZE_T MinimumWorkingSetSize;
2519 SIZE_T MaximumWorkingSetSize;
2520 DWORD ActiveProcessLimit;
2521 ULONG_PTR Affinity;
2522 DWORD PriorityClass;
2523 DWORD SchedulingClass;
2524 }
2525 alias _JOBOBJECT_BASIC_LIMIT_INFORMATION JOBOBJECT_BASIC_LIMIT_INFORMATION;
2526 alias _JOBOBJECT_BASIC_LIMIT_INFORMATION* PJOBOBJECT_BASIC_LIMIT_INFORMATION;
2527
2528 struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION {
2529 JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation;
2530 IO_COUNTERS IoInfo;
2531 SIZE_T ProcessMemoryLimit;
2532 SIZE_T JobMemoryLimit;
2533 SIZE_T PeakProcessMemoryUsed;
2534 SIZE_T PeakJobMemoryUsed;
2535 }
2536 alias _JOBOBJECT_EXTENDED_LIMIT_INFORMATION JOBOBJECT_EXTENDED_LIMIT_INFORMATION;
2537 alias _JOBOBJECT_EXTENDED_LIMIT_INFORMATION* PJOBOBJECT_EXTENDED_LIMIT_INFORMATION;
2538
2539 struct _JOBOBJECT_BASIC_PROCESS_ID_LIST {
2540 DWORD NumberOfAssignedProcesses;
2541 DWORD NumberOfProcessIdsInList;
2542 ULONG_PTR ProcessIdList[1];
2543 }
2544 alias _JOBOBJECT_BASIC_PROCESS_ID_LIST JOBOBJECT_BASIC_PROCESS_ID_LIST;
2545 alias _JOBOBJECT_BASIC_PROCESS_ID_LIST* PJOBOBJECT_BASIC_PROCESS_ID_LIST;
2546
2547 struct _JOBOBJECT_BASIC_UI_RESTRICTIONS {
2548 DWORD UIRestrictionsClass;
2549 }
2550 alias _JOBOBJECT_BASIC_UI_RESTRICTIONS JOBOBJECT_BASIC_UI_RESTRICTIONS;
2551 alias _JOBOBJECT_BASIC_UI_RESTRICTIONS* PJOBOBJECT_BASIC_UI_RESTRICTIONS;
2552
2553 struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION {
2554 DWORD SecurityLimitFlags ;
2555 HANDLE JobToken ;
2556 PTOKEN_GROUPS SidsToDisable ;
2557 PTOKEN_PRIVILEGES PrivilegesToDelete ;
2558 PTOKEN_GROUPS RestrictedSids ;
2559 }
2560 alias _JOBOBJECT_SECURITY_LIMIT_INFORMATION JOBOBJECT_SECURITY_LIMIT_INFORMATION;
2561 alias _JOBOBJECT_SECURITY_LIMIT_INFORMATION* PJOBOBJECT_SECURITY_LIMIT_INFORMATION;
2562
2563 struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION {
2564 DWORD EndOfJobTimeAction;
2565 }
2566 alias _JOBOBJECT_END_OF_JOB_TIME_INFORMATION JOBOBJECT_END_OF_JOB_TIME_INFORMATION;
2567 alias _JOBOBJECT_END_OF_JOB_TIME_INFORMATION* PJOBOBJECT_END_OF_JOB_TIME_INFORMATION;
2568
2569 struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT {
2570 PVOID CompletionKey;
2571 HANDLE CompletionPort;
2572 }
2573 alias _JOBOBJECT_ASSOCIATE_COMPLETION_PORT JOBOBJECT_ASSOCIATE_COMPLETION_PORT;
2574 alias _JOBOBJECT_ASSOCIATE_COMPLETION_PORT* PJOBOBJECT_ASSOCIATE_COMPLETION_PORT;
2575
2576 struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION {
2577 JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo;
2578 IO_COUNTERS IoInfo;
2579 }
2580 alias _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION;
2581 alias _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION* PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION;
2582
2583 struct _JOBOBJECT_JOBSET_INFORMATION {
2584 DWORD MemberLevel;
2585 }
2586 alias _JOBOBJECT_JOBSET_INFORMATION JOBOBJECT_JOBSET_INFORMATION;
2587 alias _JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION;
2588
2589 enum : uint { JOB_OBJECT_TERMINATE_AT_END_OF_JOB = 0 }
2590 enum : uint { JOB_OBJECT_POST_AT_END_OF_JOB = 1 }
2591
2592 enum : uint { JOB_OBJECT_MSG_END_OF_JOB_TIME = 1 }
2593 enum : uint { JOB_OBJECT_MSG_END_OF_PROCESS_TIME = 2 }
2594 enum : uint { JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT = 3 }
2595 enum : uint { JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO = 4 }
2596 enum : uint { JOB_OBJECT_MSG_NEW_PROCESS = 6 }
2597 enum : uint { JOB_OBJECT_MSG_EXIT_PROCESS = 7 }
2598 enum : uint { JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS = 8 }
2599 enum : uint { JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT = 9 }
2600 enum : uint { JOB_OBJECT_MSG_JOB_MEMORY_LIMIT = 10 }
2601
2602 enum : uint { JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001 }
2603 enum : uint { JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002 }
2604 enum : uint { JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004 }
2605 enum : uint { JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008 }
2606 enum : uint { JOB_OBJECT_LIMIT_AFFINITY = 0x00000010 }
2607 enum : uint { JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020 }
2608 enum : uint { JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040 }
2609 enum : uint { JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080 }
2610
2611 enum : uint { JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100 }
2612 enum : uint { JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200 }
2613 enum : uint { JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400 }
2614 enum : uint { JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800 }
2615 enum : uint { JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000 }
2616 enum : uint { JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000 }
2617
2618 enum : uint { JOB_OBJECT_LIMIT_RESERVED2 = 0x00004000 }
2619 enum : uint { JOB_OBJECT_LIMIT_RESERVED3 = 0x00008000 }
2620 enum : uint { JOB_OBJECT_LIMIT_RESERVED4 = 0x00010000 }
2621 enum : uint { JOB_OBJECT_LIMIT_RESERVED5 = 0x00020000 }
2622 enum : uint { JOB_OBJECT_LIMIT_RESERVED6 = 0x00040000 }
2623
2624 enum : uint { JOB_OBJECT_LIMIT_VALID_FLAGS = 0x0007ffff }
2625
2626 enum : uint { JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS = 0x000000ff }
2627 enum : uint { JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS = 0x00003fff }
2628 enum : uint { JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS = 0x0007ffff }
2629
2630 enum : uint { JOB_OBJECT_UILIMIT_NONE = 0x00000000 }
2631
2632 enum : uint { JOB_OBJECT_UILIMIT_HANDLES = 0x00000001 }
2633 enum : uint { JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002 }
2634 enum : uint { JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004 }
2635 enum : uint { JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008 }
2636 enum : uint { JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010 }
2637 enum : uint { JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020 }
2638 enum : uint { JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040 }
2639 enum : uint { JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080 }
2640
2641 enum : uint { JOB_OBJECT_UILIMIT_ALL = 0x000000FF }
2642
2643 enum : uint { JOB_OBJECT_UI_VALID_FLAGS = 0x000000FF }
2644
2645 enum : uint { JOB_OBJECT_SECURITY_NO_ADMIN = 0x00000001 }
2646 enum : uint { JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x00000002 }
2647 enum : uint { JOB_OBJECT_SECURITY_ONLY_TOKEN = 0x00000004 }
2648 enum : uint { JOB_OBJECT_SECURITY_FILTER_TOKENS = 0x00000008 }
2649
2650 enum : uint { JOB_OBJECT_SECURITY_VALID_FLAGS = 0x0000000f }
2651
2652 alias int _JOBOBJECTINFOCLASS;
2653 enum {
2654 JobObjectBasicAccountingInformation = 1,
2655 JobObjectBasicLimitInformation,
2656 JobObjectBasicProcessIdList,
2657 JobObjectBasicUIRestrictions,
2658 JobObjectSecurityLimitInformation,
2659 JobObjectEndOfJobTimeInformation,
2660 JobObjectAssociateCompletionPortInformation,
2661 JobObjectBasicAndIoAccountingInformation,
2662 JobObjectExtendedLimitInformation,
2663 JobObjectJobSetInformation,
2664 MaxJobObjectInfoClass,
2665 }
2666 alias _JOBOBJECTINFOCLASS JOBOBJECTINFOCLASS;
2667
2668 enum : uint { EVENT_MODIFY_STATE = 0x0002 }
2669 enum : uint { EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3 }
2670 enum : uint { MUTANT_QUERY_STATE = 0x0001 }
2671
2672 enum : uint { MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| MUTANT_QUERY_STATE }
2673 enum : uint { SEMAPHORE_MODIFY_STATE = 0x0002 }
2674 enum : uint { SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3 }
2675
2676 enum : uint { TIMER_QUERY_STATE = 0x0001 }
2677 enum : uint { TIMER_MODIFY_STATE = 0x0002 }
2678
2679 enum : uint { TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| TIMER_QUERY_STATE|TIMER_MODIFY_STATE }
2680
2681 enum : uint { TIME_ZONE_ID_UNKNOWN = 0 }
2682 enum : uint { TIME_ZONE_ID_STANDARD = 1 }
2683 enum : uint { TIME_ZONE_ID_DAYLIGHT = 2 }
2684
2685 enum : uint { MAXIMUM_NUMA_NODES = 16 }
2686
2687 struct _SYSTEM_NUMA_INFORMATION {
2688 DWORD HighestNodeNumber;
2689 DWORD Reserved;
2690 union {
2691 ULONGLONG ActiveProcessorsAffinityMask[MAXIMUM_NUMA_NODES];
2692 ULONGLONG AvailableMemory[MAXIMUM_NUMA_NODES];
2693 }
2694
2695 }
2696 alias _SYSTEM_NUMA_INFORMATION SYSTEM_NUMA_INFORMATION;
2697 alias _SYSTEM_NUMA_INFORMATION* PSYSTEM_NUMA_INFORMATION;
2698
2699 enum : uint { PROCESSOR_INTEL_386 = 386 }
2700 enum : uint { PROCESSOR_INTEL_486 = 486 }
2701 enum : uint { PROCESSOR_INTEL_PENTIUM = 586 }
2702 enum : uint { PROCESSOR_INTEL_IA64 = 2200 }
2703 enum : uint { PROCESSOR_MIPS_R4000 = 4000 }
2704 enum : uint { PROCESSOR_ALPHA_21064 = 21064 }
2705 enum : uint { PROCESSOR_PPC_601 = 601 }
2706 enum : uint { PROCESSOR_PPC_603 = 603 }
2707 enum : uint { PROCESSOR_PPC_604 = 604 }
2708 enum : uint { PROCESSOR_PPC_620 = 620 }
2709 enum : uint { PROCESSOR_HITACHI_SH3 = 10003 }
2710 enum : uint { PROCESSOR_HITACHI_SH3E = 10004 }
2711 enum : uint { PROCESSOR_HITACHI_SH4 = 10005 }
2712 enum : uint { PROCESSOR_MOTOROLA_821 = 821 }
2713 enum : uint { PROCESSOR_SHx_SH3 = 103 }
2714 enum : uint { PROCESSOR_SHx_SH4 = 104 }
2715 enum : uint { PROCESSOR_STRONGARM = 2577 }
2716 enum : uint { PROCESSOR_ARM720 = 1824 }
2717 enum : uint { PROCESSOR_ARM820 = 2080 }
2718 enum : uint { PROCESSOR_ARM920 = 2336 }
2719 enum : uint { PROCESSOR_ARM_7TDMI = 70001 }
2720 enum : uint { PROCESSOR_OPTIL = 0x494f }
2721
2722 enum : uint { PROCESSOR_ARCHITECTURE_INTEL = 0 }
2723 enum : uint { PROCESSOR_ARCHITECTURE_MIPS = 1 }
2724 enum : uint { PROCESSOR_ARCHITECTURE_ALPHA = 2 }
2725 enum : uint { PROCESSOR_ARCHITECTURE_PPC = 3 }
2726 enum : uint { PROCESSOR_ARCHITECTURE_SHX = 4 }
2727 enum : uint { PROCESSOR_ARCHITECTURE_ARM = 5 }
2728 enum : uint { PROCESSOR_ARCHITECTURE_IA64 = 6 }
2729 enum : uint { PROCESSOR_ARCHITECTURE_ALPHA64 = 7 }
2730 enum : uint { PROCESSOR_ARCHITECTURE_MSIL = 8 }
2731 enum : uint { PROCESSOR_ARCHITECTURE_AMD64 = 9 }
2732 enum : uint { PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 = 10 }
2733
2734 enum : uint { PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF }
2735
2736 enum : uint { PF_FLOATING_POINT_PRECISION_ERRATA = 0 }
2737 enum : uint { PF_FLOATING_POINT_EMULATED = 1 }
2738 enum : uint { PF_COMPARE_EXCHANGE_DOUBLE = 2 }
2739 enum : uint { PF_MMX_INSTRUCTIONS_AVAILABLE = 3 }
2740 enum : uint { PF_PPC_MOVEMEM_64BIT_OK = 4 }
2741 enum : uint { PF_ALPHA_BYTE_INSTRUCTIONS = 5 }
2742 enum : uint { PF_XMMI_INSTRUCTIONS_AVAILABLE = 6 }
2743 enum : uint { PF_3DNOW_INSTRUCTIONS_AVAILABLE = 7 }
2744 enum : uint { PF_RDTSC_INSTRUCTION_AVAILABLE = 8 }
2745 enum : uint { PF_PAE_ENABLED = 9 }
2746 enum : uint { PF_XMMI64_INSTRUCTIONS_AVAILABLE = 10 }
2747
2748 struct _MEMORY_BASIC_INFORMATION {
2749 PVOID BaseAddress;
2750 PVOID AllocationBase;
2751 DWORD AllocationProtect;
2752 SIZE_T RegionSize;
2753 DWORD State;
2754 DWORD Protect;
2755 DWORD Type;
2756 }
2757 alias _MEMORY_BASIC_INFORMATION MEMORY_BASIC_INFORMATION;
2758 alias _MEMORY_BASIC_INFORMATION* PMEMORY_BASIC_INFORMATION;
2759
2760 struct _MEMORY_BASIC_INFORMATION32 {
2761 DWORD BaseAddress;
2762 DWORD AllocationBase;
2763 DWORD AllocationProtect;
2764 DWORD RegionSize;
2765 DWORD State;
2766 DWORD Protect;
2767 DWORD Type;
2768 }
2769 alias _MEMORY_BASIC_INFORMATION32 MEMORY_BASIC_INFORMATION32;
2770 alias _MEMORY_BASIC_INFORMATION32* PMEMORY_BASIC_INFORMATION32;
2771
2772 struct _MEMORY_BASIC_INFORMATION64 {
2773 ULONGLONG BaseAddress;
2774 ULONGLONG AllocationBase;
2775 DWORD AllocationProtect;
2776 DWORD __alignment1;
2777 ULONGLONG RegionSize;
2778 DWORD State;
2779 DWORD Protect;
2780 DWORD Type;
2781 DWORD __alignment2;
2782 }
2783 alias _MEMORY_BASIC_INFORMATION64 MEMORY_BASIC_INFORMATION64;
2784 alias _MEMORY_BASIC_INFORMATION64* PMEMORY_BASIC_INFORMATION64;
2785
2786 enum : uint { SECTION_QUERY = 0x0001 }
2787 enum : uint { SECTION_MAP_WRITE = 0x0002 }
2788 enum : uint { SECTION_MAP_READ = 0x0004 }
2789 enum : uint { SECTION_MAP_EXECUTE = 0x0008 }
2790 enum : uint { SECTION_EXTEND_SIZE = 0x0010 }
2791
2792 enum : uint { SECTION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE }
2793 enum : uint { PAGE_NOACCESS = 0x01 }
2794 enum : uint { PAGE_READONLY = 0x02 }
2795 enum : uint { PAGE_READWRITE = 0x04 }
2796 enum : uint { PAGE_WRITECOPY = 0x08 }
2797 enum : uint { PAGE_EXECUTE = 0x10 }
2798 enum : uint { PAGE_EXECUTE_READ = 0x20 }
2799 enum : uint { PAGE_EXECUTE_READWRITE = 0x40 }
2800 enum : uint { PAGE_EXECUTE_WRITECOPY = 0x80 }
2801 enum : uint { PAGE_GUARD = 0x100 }
2802 enum : uint { PAGE_NOCACHE = 0x200 }
2803 enum : uint { PAGE_WRITECOMBINE = 0x400 }
2804 enum : uint { MEM_COMMIT = 0x1000 }
2805 enum : uint { MEM_RESERVE = 0x2000 }
2806 enum : uint { MEM_DECOMMIT = 0x4000 }
2807 enum : uint { MEM_RELEASE = 0x8000 }
2808 enum : uint { MEM_FREE = 0x10000 }
2809 enum : uint { MEM_PRIVATE = 0x20000 }
2810 enum : uint { MEM_MAPPED = 0x40000 }
2811 enum : uint { MEM_RESET = 0x80000 }
2812 enum : uint { MEM_TOP_DOWN = 0x100000 }
2813 enum : uint { MEM_WRITE_WATCH = 0x200000 }
2814 enum : uint { MEM_PHYSICAL = 0x400000 }
2815 enum : uint { MEM_4MB_PAGES = 0x80000000 }
2816 enum : uint { SEC_FILE = 0x800000 }
2817 enum : uint { SEC_IMAGE = 0x1000000 }
2818 enum : uint { SEC_RESERVE = 0x4000000 }
2819 enum : uint { SEC_COMMIT = 0x8000000 }
2820 enum : uint { SEC_NOCACHE = 0x10000000 }
2821 alias SEC_IMAGE MEM_IMAGE;
2822 enum : uint { WRITE_WATCH_FLAG_RESET = 0x01 }
2823
2824 enum : uint { FILE_READ_DATA = 0x0001 }
2825 enum : uint { FILE_LIST_DIRECTORY = 0x0001 }
2826
2827 enum : uint { FILE_WRITE_DATA = 0x0002 }
2828 enum : uint { FILE_ADD_FILE = 0x0002 }
2829
2830 enum : uint { FILE_APPEND_DATA = 0x0004 }
2831 enum : uint { FILE_ADD_SUBDIRECTORY = 0x0004 }
2832 enum : uint { FILE_CREATE_PIPE_INSTANCE = 0x0004 }
2833
2834 enum : uint { FILE_READ_EA = 0x0008 }
2835
2836 enum : uint { FILE_WRITE_EA = 0x0010 }
2837
2838 enum : uint { FILE_EXECUTE = 0x0020 }
2839 enum : uint { FILE_TRAVERSE = 0x0020 }
2840
2841 enum : uint { FILE_DELETE_CHILD = 0x0040 }
2842
2843 enum : uint { FILE_READ_ATTRIBUTES = 0x0080 }
2844
2845 enum : uint { FILE_WRITE_ATTRIBUTES = 0x0100 }
2846
2847 enum : uint { FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF }
2848
2849 enum : uint { FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE }
2850
2851 enum : uint { FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE }
2852
2853 enum : uint { FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE }
2854
2855 enum : uint { FILE_SHARE_READ = 0x00000001 }
2856 enum : uint { FILE_SHARE_WRITE = 0x00000002 }
2857 enum : uint { FILE_SHARE_DELETE = 0x00000004 }
2858 enum : uint { FILE_ATTRIBUTE_READONLY = 0x00000001 }
2859 enum : uint { FILE_ATTRIBUTE_HIDDEN = 0x00000002 }
2860 enum : uint { FILE_ATTRIBUTE_SYSTEM = 0x00000004 }
2861 enum : uint { FILE_ATTRIBUTE_DIRECTORY = 0x00000010 }
2862 enum : uint { FILE_ATTRIBUTE_ARCHIVE = 0x00000020 }
2863 enum : uint { FILE_ATTRIBUTE_DEVICE = 0x00000040 }
2864 enum : uint { FILE_ATTRIBUTE_NORMAL = 0x00000080 }
2865 enum : uint { FILE_ATTRIBUTE_TEMPORARY = 0x00000100 }
2866 enum : uint { FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200 }
2867 enum : uint { FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 }
2868 enum : uint { FILE_ATTRIBUTE_COMPRESSED = 0x00000800 }
2869 enum : uint { FILE_ATTRIBUTE_OFFLINE = 0x00001000 }
2870 enum : uint { FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000 }
2871 enum : uint { FILE_ATTRIBUTE_ENCRYPTED = 0x00004000 }
2872 enum : uint { FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001 }
2873 enum : uint { FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002 }
2874 enum : uint { FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004 }
2875 enum : uint { FILE_NOTIFY_CHANGE_SIZE = 0x00000008 }
2876 enum : uint { FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010 }
2877 enum : uint { FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020 }
2878 enum : uint { FILE_NOTIFY_CHANGE_CREATION = 0x00000040 }
2879 enum : uint { FILE_NOTIFY_CHANGE_SECURITY = 0x00000100 }
2880 enum : uint { FILE_ACTION_ADDED = 0x00000001 }
2881 enum : uint { FILE_ACTION_REMOVED = 0x00000002 }
2882 enum : uint { FILE_ACTION_MODIFIED = 0x00000003 }
2883 enum : uint { FILE_ACTION_RENAMED_OLD_NAME = 0x00000004 }
2884 enum : uint { FILE_ACTION_RENAMED_NEW_NAME = 0x00000005 }
2885 enum : DWORD { MAILSLOT_NO_MESSAGE = cast(DWORD)-1 }
2886 enum : DWORD { MAILSLOT_WAIT_FOREVER = cast(DWORD)-1 }
2887 enum : uint { FILE_CASE_SENSITIVE_SEARCH = 0x00000001 }
2888 enum : uint { FILE_CASE_PRESERVED_NAMES = 0x00000002 }
2889 enum : uint { FILE_UNICODE_ON_DISK = 0x00000004 }
2890 enum : uint { FILE_PERSISTENT_ACLS = 0x00000008 }
2891 enum : uint { FILE_FILE_COMPRESSION = 0x00000010 }
2892 enum : uint { FILE_VOLUME_QUOTAS = 0x00000020 }
2893 enum : uint { FILE_SUPPORTS_SPARSE_FILES = 0x00000040 }
2894 enum : uint { FILE_SUPPORTS_REPARSE_POINTS = 0x00000080 }
2895 enum : uint { FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100 }
2896 enum : uint { FILE_VOLUME_IS_COMPRESSED = 0x00008000 }
2897 enum : uint { FILE_SUPPORTS_OBJECT_IDS = 0x00010000 }
2898 enum : uint { FILE_SUPPORTS_ENCRYPTION = 0x00020000 }
2899 enum : uint { FILE_NAMED_STREAMS = 0x00040000 }
2900 enum : uint { FILE_READ_ONLY_VOLUME = 0x00080000 }
2901
2902 struct _FILE_NOTIFY_INFORMATION {
2903 DWORD NextEntryOffset;
2904 DWORD Action;
2905 DWORD FileNameLength;
2906 WCHAR FileName[1];
2907 }
2908 alias _FILE_NOTIFY_INFORMATION FILE_NOTIFY_INFORMATION;
2909 alias _FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION;
2910
2911 union _FILE_SEGMENT_ELEMENT {
2912 PVOID64 Buffer;
2913 ULONGLONG Alignment;
2914 }
2915 alias _FILE_SEGMENT_ELEMENT FILE_SEGMENT_ELEMENT;
2916 alias _FILE_SEGMENT_ELEMENT* PFILE_SEGMENT_ELEMENT;
2917
2918 struct _REPARSE_GUID_DATA_BUFFER {
2919 DWORD ReparseTag;
2920 WORD ReparseDataLength;
2921 WORD Reserved;
2922 GUID ReparseGuid;
2923 struct {
2924 BYTE DataBuffer[1];
2925 }
2926
2927 }
2928 alias _REPARSE_GUID_DATA_BUFFER REPARSE_GUID_DATA_BUFFER;
2929 alias _REPARSE_GUID_DATA_BUFFER* PREPARSE_GUID_DATA_BUFFER;
2930
2931 // #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer)
2932
2933 enum : uint { MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 }
2934
2935 enum : uint { IO_REPARSE_TAG_RESERVED_ZERO = 0 }
2936 enum : uint { IO_REPARSE_TAG_RESERVED_ONE = 1 }
2937
2938 alias IO_REPARSE_TAG_RESERVED_ONE IO_REPARSE_TAG_RESERVED_RANGE;
2939
2940 // #define IsReparseTagMicrosoft(_tag) ( ((_tag) & 0x80000000) )
2941
2942 // #define IsReparseTagNameSurrogate(_tag) ( ((_tag) & 0x20000000) )
2943
2944 enum : uint { IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 }
2945 enum : uint { IO_REPARSE_TAG_HSM = 0xC0000004 }
2946 enum : uint { IO_REPARSE_TAG_SIS = 0x80000007 }
2947 enum : uint { IO_REPARSE_TAG_FILTER_MANAGER = 0x8000000B }
2948 enum : uint { IO_COMPLETION_MODIFY_STATE = 0x0002 }
2949 enum : uint { IO_COMPLETION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3 }
2950 enum : uint { DUPLICATE_CLOSE_SOURCE = 0x00000001 }
2951 enum : uint { DUPLICATE_SAME_ACCESS = 0x00000002 }
2952
2953 alias int _SYSTEM_POWER_STATE;
2954 enum {
2955 PowerSystemUnspecified = 0,
2956 PowerSystemWorking = 1,
2957 PowerSystemSleeping1 = 2,
2958 PowerSystemSleeping2 = 3,
2959 PowerSystemSleeping3 = 4,
2960 PowerSystemHibernate = 5,
2961 PowerSystemShutdown = 6,
2962 PowerSystemMaximum = 7,
2963 }
2964 alias _SYSTEM_POWER_STATE SYSTEM_POWER_STATE;
2965 alias _SYSTEM_POWER_STATE* PSYSTEM_POWER_STATE;
2966
2967 enum : uint { POWER_SYSTEM_MAXIMUM = 7 }
2968
2969 enum _4 {
2970 PowerActionNone = 0,
2971 PowerActionReserved,
2972 PowerActionSleep,
2973 PowerActionHibernate,
2974 PowerActionShutdown,
2975 PowerActionShutdownReset,
2976 PowerActionShutdownOff,
2977 PowerActionWarmEject,
2978 }
2979 alias _4 POWER_ACTION;
2980 alias _4* PPOWER_ACTION;
2981
2982 alias int _DEVICE_POWER_STATE;
2983 enum {
2984 PowerDeviceUnspecified = 0,
2985 PowerDeviceD0,
2986 PowerDeviceD1,
2987 PowerDeviceD2,
2988 PowerDeviceD3,
2989 PowerDeviceMaximum,
2990 }
2991 alias _DEVICE_POWER_STATE DEVICE_POWER_STATE;
2992 alias _DEVICE_POWER_STATE* PDEVICE_POWER_STATE;
2993
2994 enum : DWORD { ES_SYSTEM_REQUIRED = 0x00000001 }
2995 enum : DWORD { ES_DISPLAY_REQUIRED = 0x00000002 }
2996 enum : DWORD { ES_USER_PRESENT = 0x00000004 }
2997 enum : DWORD { ES_CONTINUOUS = 0x80000000 }
2998
2999 alias DWORD EXECUTION_STATE;
3000
3001 enum _5 {
3002 LT_DONT_CARE,
3003 LT_LOWEST_LATENCY,
3004 }
3005 alias _5 LATENCY_TIME;
3006
3007 enum : uint { PDCAP_D0_SUPPORTED = 0x00000001 }
3008 enum : uint { PDCAP_D1_SUPPORTED = 0x00000002 }
3009 enum : uint { PDCAP_D2_SUPPORTED = 0x00000004 }
3010 enum : uint { PDCAP_D3_SUPPORTED = 0x00000008 }
3011 enum : uint { PDCAP_WAKE_FROM_D0_SUPPORTED = 0x00000010 }
3012 enum : uint { PDCAP_WAKE_FROM_D1_SUPPORTED = 0x00000020 }
3013 enum : uint { PDCAP_WAKE_FROM_D2_SUPPORTED = 0x00000040 }
3014 enum : uint { PDCAP_WAKE_FROM_D3_SUPPORTED = 0x00000080 }
3015 enum : uint { PDCAP_WARM_EJECT_SUPPORTED = 0x00000100 }
3016
3017 struct CM_Power_Data_s {
3018 DWORD PD_Size;
3019 DEVICE_POWER_STATE PD_MostRecentPowerState;
3020 DWORD PD_Capabilities;
3021 DWORD PD_D1Latency;
3022 DWORD PD_D2Latency;
3023 DWORD PD_D3Latency;
3024 DEVICE_POWER_STATE PD_PowerStateMapping[POWER_SYSTEM_MAXIMUM];
3025 SYSTEM_POWER_STATE PD_DeepestSystemWake;
3026 }
3027 alias CM_Power_Data_s CM_POWER_DATA;
3028 alias CM_Power_Data_s* PCM_POWER_DATA;
3029
3030 enum _6 {
3031 SystemPowerPolicyAc,
3032 SystemPowerPolicyDc,
3033 VerifySystemPolicyAc,
3034 VerifySystemPolicyDc,
3035 SystemPowerCapabilities,
3036 SystemBatteryState,
3037 SystemPowerStateHandler,
3038 ProcessorStateHandler,
3039 SystemPowerPolicyCurrent,
3040 AdministratorPowerPolicy,
3041 SystemReserveHiberFile,
3042 ProcessorInformation,
3043 SystemPowerInformation,
3044 ProcessorStateHandler2,
3045 LastWakeTime,
3046 LastSleepTime,
3047 SystemExecutionState,
3048 SystemPowerStateNotifyHandler,
3049 ProcessorPowerPolicyAc,
3050 ProcessorPowerPolicyDc,
3051 VerifyProcessorPowerPolicyAc,
3052 VerifyProcessorPowerPolicyDc,
3053 ProcessorPowerPolicyCurrent,
3054 }
3055 alias _6 POWER_INFORMATION_LEVEL;
3056
3057 struct _7 {
3058 DWORD Granularity;
3059 DWORD Capacity;
3060 }
3061 alias _7 BATTERY_REPORTING_SCALE;
3062 alias _7* PBATTERY_REPORTING_SCALE;
3063
3064 struct _8 {
3065 POWER_ACTION Action;
3066 DWORD Flags;
3067 DWORD EventCode;
3068 }
3069 alias _8 POWER_ACTION_POLICY;
3070 alias _8* PPOWER_ACTION_POLICY;
3071
3072 enum : uint { POWER_ACTION_QUERY_ALLOWED = 0x00000001 }
3073 enum : uint { POWER_ACTION_UI_ALLOWED = 0x00000002 }
3074 enum : uint { POWER_ACTION_OVERRIDE_APPS = 0x00000004 }
3075 enum : uint { POWER_ACTION_LIGHTEST_FIRST = 0x10000000 }
3076 enum : uint { POWER_ACTION_LOCK_CONSOLE = 0x20000000 }
3077 enum : uint { POWER_ACTION_DISABLE_WAKES = 0x40000000 }
3078 enum : uint { POWER_ACTION_CRITICAL = 0x80000000 }
3079
3080 enum : uint { POWER_LEVEL_USER_NOTIFY_TEXT = 0x00000001 }
3081 enum : uint { POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002 }
3082 enum : uint { POWER_LEVEL_USER_NOTIFY_EXEC = 0x00000004 }
3083 enum : uint { POWER_USER_NOTIFY_BUTTON = 0x00000008 }
3084 enum : uint { POWER_USER_NOTIFY_SHUTDOWN = 0x00000010 }
3085 enum : uint { POWER_FORCE_TRIGGER_RESET = 0x80000000 }
3086
3087 struct _9 {
3088 BOOLEAN Enable;
3089 BYTE Spare[3];
3090 DWORD BatteryLevel;
3091 POWER_ACTION_POLICY PowerPolicy;
3092 SYSTEM_POWER_STATE MinSystemState;
3093 }
3094 alias _9 SYSTEM_POWER_LEVEL;
3095 alias _9* PSYSTEM_POWER_LEVEL;
3096
3097 enum : uint { NUM_DISCHARGE_POLICIES = 4 }
3098 enum : uint { DISCHARGE_POLICY_CRITICAL = 0 }
3099 enum : uint { DISCHARGE_POLICY_LOW = 1 }
3100
3101 enum : uint { PO_THROTTLE_NONE = 0 }
3102 enum : uint { PO_THROTTLE_CONSTANT = 1 }
3103 enum : uint { PO_THROTTLE_DEGRADE = 2 }
3104 enum : uint { PO_THROTTLE_ADAPTIVE = 3 }
3105 enum : uint { PO_THROTTLE_MAXIMUM = 4 }
3106
3107 struct _SYSTEM_POWER_POLICY {
3108 DWORD Revision;
3109
3110 POWER_ACTION_POLICY PowerButton;
3111 POWER_ACTION_POLICY SleepButton;
3112 POWER_ACTION_POLICY LidClose;
3113 SYSTEM_POWER_STATE LidOpenWake;
3114 DWORD Reserved;
3115 POWER_ACTION_POLICY Idle;
3116 DWORD IdleTimeout;
3117 BYTE IdleSensitivity;
3118
3119 BYTE DynamicThrottle;
3120 BYTE Spare2[2];
3121 SYSTEM_POWER_STATE MinSleep;
3122 SYSTEM_POWER_STATE MaxSleep;
3123 SYSTEM_POWER_STATE ReducedLatencySleep;
3124 DWORD WinLogonFlags;
3125 DWORD Spare3;
3126 DWORD DozeS4Timeout;
3127 DWORD BroadcastCapacityResolution;
3128 SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES];
3129 DWORD VideoTimeout;
3130 BOOLEAN VideoDimDisplay;
3131 DWORD VideoReserved[3];
3132 DWORD SpindownTimeout;
3133 BOOLEAN OptimizeForPower;
3134 BYTE FanThrottleTolerance;
3135 BYTE ForcedThrottle;
3136 BYTE MinThrottle;
3137 POWER_ACTION_POLICY OverThrottled;
3138 }
3139 alias _SYSTEM_POWER_POLICY SYSTEM_POWER_POLICY;
3140 alias _SYSTEM_POWER_POLICY* PSYSTEM_POWER_POLICY;
3141
3142 struct _PROCESSOR_POWER_POLICY_INFO {
3143
3144 DWORD TimeCheck;
3145 DWORD DemoteLimit;
3146 DWORD PromoteLimit;
3147
3148 BYTE DemotePercent;
3149 BYTE PromotePercent;
3150 BYTE Spare[2];
3151 // DWORD AllowDemotion:1;
3152 // DWORD AllowPromotion:1;
3153 // DWORD Reserved:30;
3154
3155 }
3156 alias _PROCESSOR_POWER_POLICY_INFO PROCESSOR_POWER_POLICY_INFO;
3157 alias _PROCESSOR_POWER_POLICY_INFO* PPROCESSOR_POWER_POLICY_INFO;
3158
3159 struct _PROCESSOR_POWER_POLICY {
3160 DWORD Revision;
3161
3162 BYTE DynamicThrottle;
3163 BYTE Spare[3];
3164 DWORD Reserved;
3165
3166 DWORD PolicyCount;
3167 PROCESSOR_POWER_POLICY_INFO Policy[3];
3168 }
3169 alias _PROCESSOR_POWER_POLICY PROCESSOR_POWER_POLICY;
3170 alias _PROCESSOR_POWER_POLICY* PPROCESSOR_POWER_POLICY;
3171
3172 struct _ADMINISTRATOR_POWER_POLICY {
3173
3174 SYSTEM_POWER_STATE MinSleep;
3175 SYSTEM_POWER_STATE MaxSleep;
3176 DWORD MinVideoTimeout;
3177 DWORD MaxVideoTimeout;
3178 DWORD MinSpindownTimeout;
3179 DWORD MaxSpindownTimeout;
3180 }
3181 alias _ADMINISTRATOR_POWER_POLICY ADMINISTRATOR_POWER_POLICY;
3182 alias _ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY;
3183
3184 struct _10 {
3185
3186 BOOLEAN PowerButtonPresent;
3187 BOOLEAN SleepButtonPresent;
3188 BOOLEAN LidPresent;
3189 BOOLEAN SystemS1;
3190 BOOLEAN SystemS2;
3191 BOOLEAN SystemS3;
3192 BOOLEAN SystemS4;
3193 BOOLEAN SystemS5;
3194 BOOLEAN HiberFilePresent;
3195 BOOLEAN FullWake;
3196 BOOLEAN VideoDimPresent;
3197 BOOLEAN ApmPresent;
3198 BOOLEAN UpsPresent;
3199 BOOLEAN ThermalControl;
3200 BOOLEAN ProcessorThrottle;
3201 BYTE ProcessorMinThrottle;
3202 BYTE ProcessorMaxThrottle;
3203 BYTE spare2[4];
3204 BOOLEAN DiskSpinDown;
3205 BYTE spare3[8];
3206 BOOLEAN SystemBatteriesPresent;
3207 BOOLEAN BatteriesAreShortTerm;
3208 BATTERY_REPORTING_SCALE BatteryScale[3];
3209 SYSTEM_POWER_STATE AcOnLineWake;
3210 SYSTEM_POWER_STATE SoftLidWake;
3211 SYSTEM_POWER_STATE RtcWake;
3212 SYSTEM_POWER_STATE MinDeviceWakeState;
3213 SYSTEM_POWER_STATE DefaultLowLatencyWake;
3214 }
3215 alias _10 SYSTEM_POWER_CAPABILITIES;
3216 alias _10* PSYSTEM_POWER_CAPABILITIES;
3217
3218 struct _11 {
3219 BOOLEAN AcOnLine;
3220 BOOLEAN BatteryPresent;
3221 BOOLEAN Charging;
3222 BOOLEAN Discharging;
3223 BOOLEAN Spare1[4];
3224 DWORD MaxCapacity;
3225 DWORD RemainingCapacity;
3226 DWORD Rate;
3227 DWORD EstimatedTime;
3228 DWORD DefaultAlert1;
3229 DWORD DefaultAlert2;
3230 }
3231 alias _11 SYSTEM_BATTERY_STATE;
3232 alias _11* PSYSTEM_BATTERY_STATE;
3233
3234 // #ifndef _MAC
3235
3236 align(4):
3237
3238 enum : uint { IMAGE_DOS_SIGNATURE = 0x5A4D }
3239 enum : uint { IMAGE_OS2_SIGNATURE = 0x454E }
3240 enum : uint { IMAGE_OS2_SIGNATURE_LE = 0x454C }
3241 enum : uint { IMAGE_VXD_SIGNATURE = 0x454C }
3242 enum : uint { IMAGE_NT_SIGNATURE = 0x00004550 }
3243
3244 align(2):
3245
3246 // #else
3247
3248 // #...
3249
3250 // #...
3251 // #...
3252 // #...
3253 // #...
3254 // #endif
3255
3256 struct _IMAGE_DOS_HEADER {
3257 WORD e_magic;
3258 WORD e_cblp;
3259 WORD e_cp;
3260 WORD e_crlc;
3261 WORD e_cparhdr;
3262 WORD e_minalloc;
3263 WORD e_maxalloc;
3264 WORD e_ss;
3265 WORD e_sp;
3266 WORD e_csum;
3267 WORD e_ip;
3268 WORD e_cs;
3269 WORD e_lfarlc;
3270 WORD e_ovno;
3271 WORD e_res[4];
3272 WORD e_oemid;
3273 WORD e_oeminfo;
3274 WORD e_res2[10];
3275 LONG e_lfanew;
3276 }
3277 alias _IMAGE_DOS_HEADER IMAGE_DOS_HEADER;
3278 alias _IMAGE_DOS_HEADER* PIMAGE_DOS_HEADER;
3279
3280 struct _IMAGE_OS2_HEADER {
3281 WORD ne_magic;
3282 CHAR ne_ver;
3283 CHAR ne_rev;
3284 WORD ne_enttab;
3285 WORD ne_cbenttab;
3286 LONG ne_crc;
3287 WORD ne_flags;
3288 WORD ne_autodata;
3289 WORD ne_heap;
3290 WORD ne_stack;
3291 LONG ne_csip;
3292 LONG ne_sssp;
3293 WORD ne_cseg;
3294 WORD ne_cmod;
3295 WORD ne_cbnrestab;
3296 WORD ne_segtab;
3297 WORD ne_rsrctab;
3298 WORD ne_restab;
3299 WORD ne_modtab;
3300 WORD ne_imptab;
3301 LONG ne_nrestab;
3302 WORD ne_cmovent;
3303 WORD ne_align;
3304 WORD ne_cres;
3305 BYTE ne_exetyp;
3306 BYTE ne_flagsothers;
3307 WORD ne_pretthunks;
3308 WORD ne_psegrefbytes;
3309 WORD ne_swaparea;
3310 WORD ne_expver;
3311 }
3312 alias _IMAGE_OS2_HEADER IMAGE_OS2_HEADER;
3313 alias _IMAGE_OS2_HEADER* PIMAGE_OS2_HEADER;
3314
3315 struct _IMAGE_VXD_HEADER {
3316 WORD e32_magic;
3317 BYTE e32_border;
3318 BYTE e32_worder;
3319 DWORD e32_level;
3320 WORD e32_cpu;
3321 WORD e32_os;
3322 DWORD e32_ver;
3323 DWORD e32_mflags;
3324 DWORD e32_mpages;
3325 DWORD e32_startobj;
3326 DWORD e32_eip;
3327 DWORD e32_stackobj;
3328 DWORD e32_esp;
3329 DWORD e32_pagesize;
3330 DWORD e32_lastpagesize;
3331 DWORD e32_fixupsize;
3332 DWORD e32_fixupsum;
3333 DWORD e32_ldrsize;
3334 DWORD e32_ldrsum;
3335 DWORD e32_objtab;
3336 DWORD e32_objcnt;
3337 DWORD e32_objmap;
3338 DWORD e32_itermap;
3339 DWORD e32_rsrctab;
3340 DWORD e32_rsrccnt;
3341 DWORD e32_restab;
3342 DWORD e32_enttab;
3343 DWORD e32_dirtab;
3344 DWORD e32_dircnt;
3345 DWORD e32_fpagetab;
3346 DWORD e32_frectab;
3347 DWORD e32_impmod;
3348 DWORD e32_impmodcnt;
3349 DWORD e32_impproc;
3350 DWORD e32_pagesum;
3351 DWORD e32_datapage;
3352 DWORD e32_preload;
3353 DWORD e32_nrestab;
3354 DWORD e32_cbnrestab;
3355 DWORD e32_nressum;
3356 DWORD e32_autodata;
3357 DWORD e32_debuginfo;
3358 DWORD e32_debuglen;
3359 DWORD e32_instpreload;
3360 DWORD e32_instdemand;
3361 DWORD e32_heapsize;
3362 BYTE e32_res3[12];
3363 DWORD e32_winresoff;
3364 DWORD e32_winreslen;
3365 WORD e32_devid;
3366 WORD e32_ddkver;
3367 }
3368 alias _IMAGE_VXD_HEADER IMAGE_VXD_HEADER;
3369 alias _IMAGE_VXD_HEADER* PIMAGE_VXD_HEADER;
3370
3371 // #ifndef _MAC
3372 align:
3373 // #endif
3374
3375 struct _IMAGE_FILE_HEADER {
3376 WORD Machine;
3377 WORD NumberOfSections;
3378 DWORD TimeDateStamp;
3379 DWORD PointerToSymbolTable;
3380 DWORD NumberOfSymbols;
3381 WORD SizeOfOptionalHeader;
3382 WORD Characteristics;
3383 }
3384 alias _IMAGE_FILE_HEADER IMAGE_FILE_HEADER;
3385 alias _IMAGE_FILE_HEADER* PIMAGE_FILE_HEADER;
3386
3387 enum : uint { IMAGE_SIZEOF_FILE_HEADER = 20 }
3388
3389 enum : uint { IMAGE_FILE_RELOCS_STRIPPED = 0x0001 }
3390 enum : uint { IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002 }
3391 enum : uint { IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004 }
3392 enum : uint { IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008 }
3393 enum : uint { IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010 }
3394 enum : uint { IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020 }
3395 enum : uint { IMAGE_FILE_BYTES_REVERSED_LO = 0x0080 }
3396 enum : uint { IMAGE_FILE_32BIT_MACHINE = 0x0100 }
3397 enum : uint { IMAGE_FILE_DEBUG_STRIPPED = 0x0200 }
3398 enum : uint { IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400 }
3399 enum : uint { IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800 }
3400 enum : uint { IMAGE_FILE_SYSTEM = 0x1000 }
3401 enum : uint { IMAGE_FILE_DLL = 0x2000 }
3402 enum : uint { IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000 }
3403 enum : uint { IMAGE_FILE_BYTES_REVERSED_HI = 0x8000 }
3404
3405 enum : uint { IMAGE_FILE_MACHINE_UNKNOWN = 0 }
3406 enum : uint { IMAGE_FILE_MACHINE_I386 = 0x014c }
3407 enum : uint { IMAGE_FILE_MACHINE_R3000 = 0x0162 }
3408 enum : uint { IMAGE_FILE_MACHINE_R4000 = 0x0166 }
3409 enum : uint { IMAGE_FILE_MACHINE_R10000 = 0x0168 }
3410 enum : uint { IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169 }
3411 enum : uint { IMAGE_FILE_MACHINE_ALPHA = 0x0184 }
3412 enum : uint { IMAGE_FILE_MACHINE_SH3 = 0x01a2 }
3413 enum : uint { IMAGE_FILE_MACHINE_SH3DSP = 0x01a3 }
3414 enum : uint { IMAGE_FILE_MACHINE_SH3E = 0x01a4 }
3415 enum : uint { IMAGE_FILE_MACHINE_SH4 = 0x01a6 }
3416 enum : uint { IMAGE_FILE_MACHINE_SH5 = 0x01a8 }
3417 enum : uint { IMAGE_FILE_MACHINE_ARM = 0x01c0 }
3418 enum : uint { IMAGE_FILE_MACHINE_THUMB = 0x01c2 }
3419 enum : uint { IMAGE_FILE_MACHINE_AM33 = 0x01d3 }
3420 enum : uint { IMAGE_FILE_MACHINE_POWERPC = 0x01F0 }
3421 enum : uint { IMAGE_FILE_MACHINE_POWERPCFP = 0x01f1 }
3422 enum : uint { IMAGE_FILE_MACHINE_IA64 = 0x0200 }
3423 enum : uint { IMAGE_FILE_MACHINE_MIPS16 = 0x0266 }
3424 enum : uint { IMAGE_FILE_MACHINE_ALPHA64 = 0x0284 }
3425 enum : uint { IMAGE_FILE_MACHINE_MIPSFPU = 0x0366 }
3426 enum : uint { IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466 }
3427 alias IMAGE_FILE_MACHINE_ALPHA64 IMAGE_FILE_MACHINE_AXP64;
3428 enum : uint { IMAGE_FILE_MACHINE_TRICORE = 0x0520 }
3429 enum : uint { IMAGE_FILE_MACHINE_CEF = 0x0CEF }
3430 enum : uint { IMAGE_FILE_MACHINE_EBC = 0x0EBC }
3431 enum : uint { IMAGE_FILE_MACHINE_AMD64 = 0x8664 }
3432 enum : uint { IMAGE_FILE_MACHINE_M32R = 0x9041 }
3433 enum : uint { IMAGE_FILE_MACHINE_CEE = 0xC0EE }
3434
3435 struct _IMAGE_DATA_DIRECTORY {
3436 DWORD VirtualAddress;
3437 DWORD Size;
3438 }
3439 alias _IMAGE_DATA_DIRECTORY IMAGE_DATA_DIRECTORY;
3440 alias _IMAGE_DATA_DIRECTORY* PIMAGE_DATA_DIRECTORY;
3441
3442 enum : uint { IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16 }
3443
3444 struct _IMAGE_OPTIONAL_HEADER {
3445
3446 WORD Magic;
3447 BYTE MajorLinkerVersion;
3448 BYTE MinorLinkerVersion;
3449 DWORD SizeOfCode;
3450 DWORD SizeOfInitializedData;
3451 DWORD SizeOfUninitializedData;
3452 DWORD AddressOfEntryPoint;
3453 DWORD BaseOfCode;
3454 DWORD BaseOfData;
3455
3456 DWORD ImageBase;
3457 DWORD SectionAlignment;
3458 DWORD FileAlignment;
3459 WORD MajorOperatingSystemVersion;
3460 WORD MinorOperatingSystemVersion;
3461 WORD MajorImageVersion;
3462 WORD MinorImageVersion;
3463 WORD MajorSubsystemVersion;
3464 WORD MinorSubsystemVersion;
3465 DWORD Win32VersionValue;
3466 DWORD SizeOfImage;
3467 DWORD SizeOfHeaders;
3468 DWORD CheckSum;
3469 WORD Subsystem;
3470 WORD DllCharacteristics;
3471 DWORD SizeOfStackReserve;
3472 DWORD SizeOfStackCommit;
3473 DWORD SizeOfHeapReserve;
3474 DWORD SizeOfHeapCommit;
3475 DWORD LoaderFlags;
3476 DWORD NumberOfRvaAndSizes;
3477 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
3478 }
3479 alias _IMAGE_OPTIONAL_HEADER IMAGE_OPTIONAL_HEADER32;
3480 alias _IMAGE_OPTIONAL_HEADER* PIMAGE_OPTIONAL_HEADER32;
3481
3482 struct _IMAGE_ROM_OPTIONAL_HEADER {
3483 WORD Magic;
3484 BYTE MajorLinkerVersion;
3485 BYTE MinorLinkerVersion;
3486 DWORD SizeOfCode;
3487 DWORD SizeOfInitializedData;
3488 DWORD SizeOfUninitializedData;
3489 DWORD AddressOfEntryPoint;
3490 DWORD BaseOfCode;
3491 DWORD BaseOfData;
3492 DWORD BaseOfBss;
3493 DWORD GprMask;
3494 DWORD CprMask[4];
3495 DWORD GpValue;
3496 }
3497 alias _IMAGE_ROM_OPTIONAL_HEADER IMAGE_ROM_OPTIONAL_HEADER;
3498 alias _IMAGE_ROM_OPTIONAL_HEADER* PIMAGE_ROM_OPTIONAL_HEADER;
3499
3500 struct _IMAGE_OPTIONAL_HEADER64 {
3501 WORD Magic;
3502 BYTE MajorLinkerVersion;
3503 BYTE MinorLinkerVersion;
3504 DWORD SizeOfCode;
3505 DWORD SizeOfInitializedData;
3506 DWORD SizeOfUninitializedData;
3507 DWORD AddressOfEntryPoint;
3508 DWORD BaseOfCode;
3509 ULONGLONG ImageBase;
3510 DWORD SectionAlignment;
3511 DWORD FileAlignment;
3512 WORD MajorOperatingSystemVersion;
3513 WORD MinorOperatingSystemVersion;
3514 WORD MajorImageVersion;
3515 WORD MinorImageVersion;
3516 WORD MajorSubsystemVersion;
3517 WORD MinorSubsystemVersion;
3518 DWORD Win32VersionValue;
3519 DWORD SizeOfImage;
3520 DWORD SizeOfHeaders;
3521 DWORD CheckSum;
3522 WORD Subsystem;
3523 WORD DllCharacteristics;
3524 ULONGLONG SizeOfStackReserve;
3525 ULONGLONG SizeOfStackCommit;
3526 ULONGLONG SizeOfHeapReserve;
3527 ULONGLONG SizeOfHeapCommit;
3528 DWORD LoaderFlags;
3529 DWORD NumberOfRvaAndSizes;
3530 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
3531 }
3532 alias _IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER64;
3533 alias _IMAGE_OPTIONAL_HEADER64* PIMAGE_OPTIONAL_HEADER64;
3534
3535 enum : uint { IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56 }
3536 enum : uint { IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28 }
3537 enum : uint { IMAGE_SIZEOF_NT_OPTIONAL32_HEADER = 224 }
3538 enum : uint { IMAGE_SIZEOF_NT_OPTIONAL64_HEADER = 240 }
3539
3540 enum : uint { IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b }
3541 enum : uint { IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b }
3542 enum : uint { IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x107 }
3543
3544 // #ifdef _WIN64
3545 // ...
3546 // #...
3547 // #...
3548 // #else
3549 alias IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER;
3550 alias PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER;
3551 alias IMAGE_SIZEOF_NT_OPTIONAL32_HEADER IMAGE_SIZEOF_NT_OPTIONAL_HEADER;
3552 alias IMAGE_NT_OPTIONAL_HDR32_MAGIC IMAGE_NT_OPTIONAL_HDR_MAGIC;
3553 // #endif
3554
3555 struct _IMAGE_NT_HEADERS64 {
3556 DWORD Signature;
3557 IMAGE_FILE_HEADER FileHeader;
3558 IMAGE_OPTIONAL_HEADER64 OptionalHeader;
3559 }
3560 alias _IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS64;
3561 alias _IMAGE_NT_HEADERS64* PIMAGE_NT_HEADERS64;
3562
3563 struct _IMAGE_NT_HEADERS {
3564 DWORD Signature;
3565 IMAGE_FILE_HEADER FileHeader;
3566 IMAGE_OPTIONAL_HEADER32 OptionalHeader;
3567 }
3568 alias _IMAGE_NT_HEADERS IMAGE_NT_HEADERS32;
3569 alias _IMAGE_NT_HEADERS* PIMAGE_NT_HEADERS32;
3570
3571 struct _IMAGE_ROM_HEADERS {
3572 IMAGE_FILE_HEADER FileHeader;
3573 IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
3574 }
3575 alias _IMAGE_ROM_HEADERS IMAGE_ROM_HEADERS;
3576 alias _IMAGE_ROM_HEADERS* PIMAGE_ROM_HEADERS;
3577
3578 // #ifdef _WIN64
3579 // ...
3580 // #else
3581 alias IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS;
3582 alias PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;
3583 // #endif
3584
3585 // #define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)ntheader + FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader ))
3586
3587 enum : uint { IMAGE_SUBSYSTEM_UNKNOWN = 0 }
3588 enum : uint { IMAGE_SUBSYSTEM_NATIVE = 1 }
3589 enum : uint { IMAGE_SUBSYSTEM_WINDOWS_GUI = 2 }
3590 enum : uint { IMAGE_SUBSYSTEM_WINDOWS_CUI = 3 }
3591 enum : uint { IMAGE_SUBSYSTEM_OS2_CUI = 5 }
3592 enum : uint { IMAGE_SUBSYSTEM_POSIX_CUI = 7 }
3593 enum : uint { IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8 }
3594 enum : uint { IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9 }
3595 enum : uint { IMAGE_SUBSYSTEM_EFI_APPLICATION = 10 }
3596 enum : uint { IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11 }
3597 enum : uint { IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12 }
3598 enum : uint { IMAGE_SUBSYSTEM_EFI_ROM = 13 }
3599 enum : uint { IMAGE_SUBSYSTEM_XBOX = 14 }
3600
3601 enum : uint { IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800 }
3602
3603 enum : uint { IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000 }
3604
3605 enum : uint { IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000 }
3606
3607 enum : uint { IMAGE_DIRECTORY_ENTRY_EXPORT = 0 }
3608 enum : uint { IMAGE_DIRECTORY_ENTRY_IMPORT = 1 }
3609 enum : uint { IMAGE_DIRECTORY_ENTRY_RESOURCE = 2 }
3610 enum : uint { IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3 }
3611 enum : uint { IMAGE_DIRECTORY_ENTRY_SECURITY = 4 }
3612 enum : uint { IMAGE_DIRECTORY_ENTRY_BASERELOC = 5 }
3613 enum : uint { IMAGE_DIRECTORY_ENTRY_DEBUG = 6 }
3614
3615 enum : uint { IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7 }
3616 enum : uint { IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8 }
3617 enum : uint { IMAGE_DIRECTORY_ENTRY_TLS = 9 }
3618 enum : uint { IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10 }
3619 enum : uint { IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11 }
3620 enum : uint { IMAGE_DIRECTORY_ENTRY_IAT = 12 }
3621 enum : uint { IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13 }
3622 enum : uint { IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14 }
3623
3624 struct ANON_OBJECT_HEADER {
3625 WORD Sig1;
3626 WORD Sig2;
3627 WORD Version;
3628 WORD Machine;
3629 DWORD TimeDateStamp;
3630 CLSID ClassID;
3631 DWORD SizeOfData;
3632 }
3633
3634 enum : uint { IMAGE_SIZEOF_SHORT_NAME = 8 }
3635
3636 struct _IMAGE_SECTION_HEADER {
3637 BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
3638 union {
3639 DWORD PhysicalAddress;
3640 DWORD VirtualSize;
3641 }
3642
3643 DWORD VirtualAddress;
3644 DWORD SizeOfRawData;
3645 DWORD PointerToRawData;
3646 DWORD PointerToRelocations;
3647 DWORD PointerToLinenumbers;
3648 WORD NumberOfRelocations;
3649 WORD NumberOfLinenumbers;
3650 DWORD Characteristics;
3651 }
3652 alias _IMAGE_SECTION_HEADER IMAGE_SECTION_HEADER;
3653 alias _IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER;
3654
3655 enum : uint { IMAGE_SIZEOF_SECTION_HEADER = 40 }
3656
3657 enum : uint { IMAGE_SCN_TYPE_NO_PAD = 0x00000008 }
3658
3659 enum : uint { IMAGE_SCN_CNT_CODE = 0x00000020 }
3660 enum : uint { IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040 }
3661 enum : uint { IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080 }
3662
3663 enum : uint { IMAGE_SCN_LNK_OTHER = 0x00000100 }
3664 enum : uint { IMAGE_SCN_LNK_INFO = 0x00000200 }
3665
3666 enum : uint { IMAGE_SCN_LNK_REMOVE = 0x00000800 }
3667 enum : uint { IMAGE_SCN_LNK_COMDAT = 0x00001000 }
3668
3669 enum : uint { IMAGE_SCN_NO_DEFER_SPEC_EXC = 0x00004000 }
3670 enum : uint { IMAGE_SCN_GPREL = 0x00008000 }
3671 enum : uint { IMAGE_SCN_MEM_FARDATA = 0x00008000 }
3672
3673 enum : uint { IMAGE_SCN_MEM_PURGEABLE = 0x00020000 }
3674 enum : uint { IMAGE_SCN_MEM_16BIT = 0x00020000 }
3675 enum : uint { IMAGE_SCN_MEM_LOCKED = 0x00040000 }
3676 enum : uint { IMAGE_SCN_MEM_PRELOAD = 0x00080000 }
3677
3678 enum : uint { IMAGE_SCN_ALIGN_1BYTES = 0x00100000 }
3679 enum : uint { IMAGE_SCN_ALIGN_2BYTES = 0x00200000 }
3680 enum : uint { IMAGE_SCN_ALIGN_4BYTES = 0x00300000 }
3681 enum : uint { IMAGE_SCN_ALIGN_8BYTES = 0x00400000 }
3682 enum : uint { IMAGE_SCN_ALIGN_16BYTES = 0x00500000 }
3683 enum : uint { IMAGE_SCN_ALIGN_32BYTES = 0x00600000 }
3684 enum : uint { IMAGE_SCN_ALIGN_64BYTES = 0x00700000 }
3685 enum : uint { IMAGE_SCN_ALIGN_128BYTES = 0x00800000 }
3686 enum : uint { IMAGE_SCN_ALIGN_256BYTES = 0x00900000 }
3687 enum : uint { IMAGE_SCN_ALIGN_512BYTES = 0x00A00000 }
3688 enum : uint { IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000 }
3689 enum : uint { IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000 }
3690 enum : uint { IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000 }
3691 enum : uint { IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000 }
3692
3693 enum : uint { IMAGE_SCN_ALIGN_MASK = 0x00F00000 }
3694
3695 enum : uint { IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000 }
3696 enum : uint { IMAGE_SCN_MEM_DISCARDABLE = 0x02000000 }
3697 enum : uint { IMAGE_SCN_MEM_NOT_CACHED = 0x04000000 }
3698 enum : uint { IMAGE_SCN_MEM_NOT_PAGED = 0x08000000 }
3699 enum : uint { IMAGE_SCN_MEM_SHARED = 0x10000000 }
3700 enum : uint { IMAGE_SCN_MEM_EXECUTE = 0x20000000 }
3701 enum : uint { IMAGE_SCN_MEM_READ = 0x40000000 }
3702 enum : uint { IMAGE_SCN_MEM_WRITE = 0x80000000 }
3703
3704 enum : uint { IMAGE_SCN_SCALE_INDEX = 0x00000001 }
3705
3706 // #ifndef _MAC
3707 align(2):
3708 // #endif
3709
3710 struct _IMAGE_SYMBOL {
3711 union {
3712 BYTE ShortName[8];
3713 struct {
3714 DWORD Short;
3715 DWORD Long;
3716 }
3717
3718 DWORD LongName[2];
3719 }
3720
3721 DWORD Value;
3722 SHORT SectionNumber;
3723 WORD Type;
3724 BYTE StorageClass;
3725 BYTE NumberOfAuxSymbols;
3726 }
3727 alias _IMAGE_SYMBOL IMAGE_SYMBOL;
3728
3729 alias IMAGE_SYMBOL* PIMAGE_SYMBOL;
3730
3731 enum : uint { IMAGE_SIZEOF_SYMBOL = 18 }
3732
3733 enum : SHORT { IMAGE_SYM_UNDEFINED = 0 }
3734 enum : SHORT { IMAGE_SYM_ABSOLUTE = -1 }
3735 enum : SHORT { IMAGE_SYM_DEBUG = -2 }
3736 enum : uint { IMAGE_SYM_SECTION_MAX = 0xFEFF }
3737
3738 enum : uint { IMAGE_SYM_TYPE_NULL = 0x0000 }
3739 enum : uint { IMAGE_SYM_TYPE_VOID = 0x0001 }
3740 enum : uint { IMAGE_SYM_TYPE_CHAR = 0x0002 }
3741 enum : uint { IMAGE_SYM_TYPE_SHORT = 0x0003 }
3742 enum : uint { IMAGE_SYM_TYPE_INT = 0x0004 }
3743 enum : uint { IMAGE_SYM_TYPE_LONG = 0x0005 }
3744 enum : uint { IMAGE_SYM_TYPE_FLOAT = 0x0006 }
3745 enum : uint { IMAGE_SYM_TYPE_DOUBLE = 0x0007 }
3746 enum : uint { IMAGE_SYM_TYPE_STRUCT = 0x0008 }
3747 enum : uint { IMAGE_SYM_TYPE_UNION = 0x0009 }
3748 enum : uint { IMAGE_SYM_TYPE_ENUM = 0x000A }
3749 enum : uint { IMAGE_SYM_TYPE_MOE = 0x000B }
3750 enum : uint { IMAGE_SYM_TYPE_BYTE = 0x000C }
3751 enum : uint { IMAGE_SYM_TYPE_WORD = 0x000D }
3752 enum : uint { IMAGE_SYM_TYPE_UINT = 0x000E }
3753 enum : uint { IMAGE_SYM_TYPE_DWORD = 0x000F }
3754 enum : uint { IMAGE_SYM_TYPE_PCODE = 0x8000 }
3755
3756 enum : uint { IMAGE_SYM_DTYPE_NULL = 0 }
3757 enum : uint { IMAGE_SYM_DTYPE_POINTER = 1 }
3758 enum : uint { IMAGE_SYM_DTYPE_FUNCTION = 2 }
3759 enum : uint { IMAGE_SYM_DTYPE_ARRAY = 3 }
3760
3761 enum : BYTE { IMAGE_SYM_CLASS_END_OF_FUNCTION = cast(BYTE)-1 }
3762 enum : uint { IMAGE_SYM_CLASS_NULL = 0x0000 }
3763 enum : uint { IMAGE_SYM_CLASS_AUTOMATIC = 0x0001 }
3764 enum : uint { IMAGE_SYM_CLASS_EXTERNAL = 0x0002 }
3765 enum : uint { IMAGE_SYM_CLASS_STATIC = 0x0003 }
3766 enum : uint { IMAGE_SYM_CLASS_REGISTER = 0x0004 }
3767 enum : uint { IMAGE_SYM_CLASS_EXTERNAL_DEF = 0x0005 }
3768 enum : uint { IMAGE_SYM_CLASS_LABEL = 0x0006 }
3769 enum : uint { IMAGE_SYM_CLASS_UNDEFINED_LABEL = 0x0007 }
3770 enum : uint { IMAGE_SYM_CLASS_MEMBER_OF_STRUCT = 0x0008 }
3771 enum : uint { IMAGE_SYM_CLASS_ARGUMENT = 0x0009 }
3772 enum : uint { IMAGE_SYM_CLASS_STRUCT_TAG = 0x000A }
3773 enum : uint { IMAGE_SYM_CLASS_MEMBER_OF_UNION = 0x000B }
3774 enum : uint { IMAGE_SYM_CLASS_UNION_TAG = 0x000C }
3775 enum : uint { IMAGE_SYM_CLASS_TYPE_DEFINITION = 0x000D }
3776 enum : uint { IMAGE_SYM_CLASS_UNDEFINED_STATIC = 0x000E }
3777 enum : uint { IMAGE_SYM_CLASS_ENUM_TAG = 0x000F }
3778 enum : uint { IMAGE_SYM_CLASS_MEMBER_OF_ENUM = 0x0010 }
3779 enum : uint { IMAGE_SYM_CLASS_REGISTER_PARAM = 0x0011 }
3780 enum : uint { IMAGE_SYM_CLASS_BIT_FIELD = 0x0012 }
3781
3782 enum : uint { IMAGE_SYM_CLASS_FAR_EXTERNAL = 0x0044 }
3783
3784 enum : uint { IMAGE_SYM_CLASS_BLOCK = 0x0064 }
3785 enum : uint { IMAGE_SYM_CLASS_FUNCTION = 0x0065 }
3786 enum : uint { IMAGE_SYM_CLASS_END_OF_STRUCT = 0x0066 }
3787 enum : uint { IMAGE_SYM_CLASS_FILE = 0x0067 }
3788
3789 enum : uint { IMAGE_SYM_CLASS_SECTION = 0x0068 }
3790 enum : uint { IMAGE_SYM_CLASS_WEAK_EXTERNAL = 0x0069 }
3791
3792 enum : uint { IMAGE_SYM_CLASS_CLR_TOKEN = 0x006B }
3793
3794 enum : uint { N_BTMASK = 0x000F }
3795 enum : uint { N_TMASK = 0x0030 }
3796 enum : uint { N_TMASK1 = 0x00C0 }
3797 enum : uint { N_TMASK2 = 0x00F0 }
3798 enum : uint { N_BTSHFT = 4 }
3799 enum : uint { N_TSHIFT = 2 }
3800
3801 BYTE BTYPE(BYTE x){ return x & N_BTMASK; }
3802
3803 // #ifndef ISPTR
3804 bit ISPTR(uint x){ return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT); }
3805 // #endif
3806
3807 // #ifndef ISFCN
3808 bit ISFCN(uint x){ return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); }
3809 // #endif
3810
3811 // #ifndef ISARY
3812 bit ISARY(uint x){ return (x & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT); }
3813 // #endif
3814
3815 // #ifndef ISTAG
3816 bit ISTAG(uint x){ return x == IMAGE_SYM_CLASS_STRUCT_TAG || x == IMAGE_SYM_CLASS_UNION_TAG || x == IMAGE_SYM_CLASS_ENUM_TAG; }
3817 // #endif
3818
3819 // #ifndef INCREF
3820 uint INCREF(uint x){ return ((x&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|(x&N_BTMASK); }
3821 // #endif
3822 // #ifndef DECREF
3823 uint DECREF(uint x){ return ((x >>> N_TSHIFT) & ~N_BTMASK)|(x & N_BTMASK); }
3824 // #endif
3825
3826 union _IMAGE_AUX_SYMBOL {
3827 struct {
3828 DWORD TagIndex;
3829 union {
3830 struct {
3831 WORD Linenumber;
3832 WORD Size;
3833 }
3834
3835 DWORD TotalSize;
3836 }
3837
3838 union {
3839 struct {
3840 DWORD PointerToLinenumber;
3841 DWORD PointerToNextFunction;
3842 }
3843
3844 struct {
3845 WORD Dimension[4];
3846 }
3847
3848 }
3849
3850 WORD TvIndex;
3851 }
3852
3853 struct {
3854 BYTE Name[IMAGE_SIZEOF_SYMBOL];
3855 }
3856
3857 struct {
3858 DWORD Length;
3859 WORD NumberOfRelocations;
3860 WORD NumberOfLinenumbers;
3861 DWORD CheckSum;
3862 SHORT Number;
3863 BYTE Selection;
3864 }
3865
3866 }
3867 alias _IMAGE_AUX_SYMBOL IMAGE_AUX_SYMBOL;
3868
3869 alias IMAGE_AUX_SYMBOL* PIMAGE_AUX_SYMBOL;
3870
3871 enum : uint { IMAGE_SIZEOF_AUX_SYMBOL = 18 }
3872
3873 alias int IMAGE_AUX_SYMBOL_TYPE;
3874 enum {
3875 IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1,
3876 }
3877
3878 align(2):
3879
3880 struct IMAGE_AUX_SYMBOL_TOKEN_DEF {
3881 BYTE bAuxType;
3882 BYTE bReserved;
3883 DWORD SymbolTableIndex;
3884 BYTE rgbReserved[12];
3885 }
3886
3887 alias IMAGE_AUX_SYMBOL_TOKEN_DEF* PIMAGE_AUX_SYMBOL_TOKEN_DEF;
3888
3889 align:
3890
3891 enum : uint { IMAGE_COMDAT_SELECT_NODUPLICATES = 1 }
3892 enum : uint { IMAGE_COMDAT_SELECT_ANY = 2 }
3893 enum : uint { IMAGE_COMDAT_SELECT_SAME_SIZE = 3 }
3894 enum : uint { IMAGE_COMDAT_SELECT_EXACT_MATCH = 4 }
3895 enum : uint { IMAGE_COMDAT_SELECT_ASSOCIATIVE = 5 }
3896 enum : uint { IMAGE_COMDAT_SELECT_LARGEST = 6 }
3897 enum : uint { IMAGE_COMDAT_SELECT_NEWEST = 7 }
3898
3899 enum : uint { IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1 }
3900 enum : uint { IMAGE_WEAK_EXTERN_SEARCH_LIBRARY = 2 }
3901 enum : uint { IMAGE_WEAK_EXTERN_SEARCH_ALIAS = 3 }
3902
3903 struct _IMAGE_RELOCATION {
3904 union {
3905 DWORD VirtualAddress;
3906 DWORD RelocCount;
3907 }
3908
3909 DWORD SymbolTableIndex;
3910 WORD Type;
3911 }
3912 alias _IMAGE_RELOCATION IMAGE_RELOCATION;
3913
3914 alias IMAGE_RELOCATION* PIMAGE_RELOCATION;
3915
3916 enum : uint { IMAGE_SIZEOF_RELOCATION = 10 }
3917
3918 enum : uint { IMAGE_REL_I386_ABSOLUTE = 0x0000 }
3919 enum : uint { IMAGE_REL_I386_DIR16 = 0x0001 }
3920 enum : uint { IMAGE_REL_I386_REL16 = 0x0002 }
3921 enum : uint { IMAGE_REL_I386_DIR32 = 0x0006 }
3922 enum : uint { IMAGE_REL_I386_DIR32NB = 0x0007 }
3923 enum : uint { IMAGE_REL_I386_SEG12 = 0x0009 }
3924 enum : uint { IMAGE_REL_I386_SECTION = 0x000A }
3925 enum : uint { IMAGE_REL_I386_SECREL = 0x000B }
3926 enum : uint { IMAGE_REL_I386_TOKEN = 0x000C }
3927 enum : uint { IMAGE_REL_I386_SECREL7 = 0x000D }
3928 enum : uint { IMAGE_REL_I386_REL32 = 0x0014 }
3929
3930 enum : uint { IMAGE_REL_MIPS_ABSOLUTE = 0x0000 }
3931 enum : uint { IMAGE_REL_MIPS_REFHALF = 0x0001 }
3932 enum : uint { IMAGE_REL_MIPS_REFWORD = 0x0002 }
3933 enum : uint { IMAGE_REL_MIPS_JMPADDR = 0x0003 }
3934 enum : uint { IMAGE_REL_MIPS_REFHI = 0x0004 }
3935 enum : uint { IMAGE_REL_MIPS_REFLO = 0x0005 }
3936 enum : uint { IMAGE_REL_MIPS_GPREL = 0x0006 }
3937 enum : uint { IMAGE_REL_MIPS_LITERAL = 0x0007 }
3938 enum : uint { IMAGE_REL_MIPS_SECTION = 0x000A }
3939 enum : uint { IMAGE_REL_MIPS_SECREL = 0x000B }
3940 enum : uint { IMAGE_REL_MIPS_SECRELLO = 0x000C }
3941 enum : uint { IMAGE_REL_MIPS_SECRELHI = 0x000D }
3942 enum : uint { IMAGE_REL_MIPS_TOKEN = 0x000E }
3943 enum : uint { IMAGE_REL_MIPS_JMPADDR16 = 0x0010 }
3944 enum : uint { IMAGE_REL_MIPS_REFWORDNB = 0x0022 }
3945 enum : uint { IMAGE_REL_MIPS_PAIR = 0x0025 }
3946
3947 enum : uint { IMAGE_REL_ALPHA_ABSOLUTE = 0x0000 }
3948 enum : uint { IMAGE_REL_ALPHA_REFLONG = 0x0001 }
3949 enum : uint { IMAGE_REL_ALPHA_REFQUAD = 0x0002 }
3950 enum : uint { IMAGE_REL_ALPHA_GPREL32 = 0x0003 }
3951 enum : uint { IMAGE_REL_ALPHA_LITERAL = 0x0004 }
3952 enum : uint { IMAGE_REL_ALPHA_LITUSE = 0x0005 }
3953 enum : uint { IMAGE_REL_ALPHA_GPDISP = 0x0006 }
3954 enum : uint { IMAGE_REL_ALPHA_BRADDR = 0x0007 }
3955 enum : uint { IMAGE_REL_ALPHA_HINT = 0x0008 }
3956 enum : uint { IMAGE_REL_ALPHA_INLINE_REFLONG = 0x0009 }
3957 enum : uint { IMAGE_REL_ALPHA_REFHI = 0x000A }
3958 enum : uint { IMAGE_REL_ALPHA_REFLO = 0x000B }
3959 enum : uint { IMAGE_REL_ALPHA_PAIR = 0x000C }
3960 enum : uint { IMAGE_REL_ALPHA_MATCH = 0x000D }
3961 enum : uint { IMAGE_REL_ALPHA_SECTION = 0x000E }
3962 enum : uint { IMAGE_REL_ALPHA_SECREL = 0x000F }
3963 enum : uint { IMAGE_REL_ALPHA_REFLONGNB = 0x0010 }
3964 enum : uint { IMAGE_REL_ALPHA_SECRELLO = 0x0011 }
3965 enum : uint { IMAGE_REL_ALPHA_SECRELHI = 0x0012 }
3966 enum : uint { IMAGE_REL_ALPHA_REFQ3 = 0x0013 }
3967 enum : uint { IMAGE_REL_ALPHA_REFQ2 = 0x0014 }
3968 enum : uint { IMAGE_REL_ALPHA_REFQ1 = 0x0015 }
3969 enum : uint { IMAGE_REL_ALPHA_GPRELLO = 0x0016 }
3970 enum : uint { IMAGE_REL_ALPHA_GPRELHI = 0x0017 }
3971
3972 enum : uint { IMAGE_REL_PPC_ABSOLUTE = 0x0000 }
3973 enum : uint { IMAGE_REL_PPC_ADDR64 = 0x0001 }
3974 enum : uint { IMAGE_REL_PPC_ADDR32 = 0x0002 }
3975 enum : uint { IMAGE_REL_PPC_ADDR24 = 0x0003 }
3976 enum : uint { IMAGE_REL_PPC_ADDR16 = 0x0004 }
3977 enum : uint { IMAGE_REL_PPC_ADDR14 = 0x0005 }
3978 enum : uint { IMAGE_REL_PPC_REL24 = 0x0006 }
3979 enum : uint { IMAGE_REL_PPC_REL14 = 0x0007 }
3980 enum : uint { IMAGE_REL_PPC_TOCREL16 = 0x0008 }
3981 enum : uint { IMAGE_REL_PPC_TOCREL14 = 0x0009 }
3982
3983 enum : uint { IMAGE_REL_PPC_ADDR32NB = 0x000A }
3984 enum : uint { IMAGE_REL_PPC_SECREL = 0x000B }
3985 enum : uint { IMAGE_REL_PPC_SECTION = 0x000C }
3986 enum : uint { IMAGE_REL_PPC_IFGLUE = 0x000D }
3987 enum : uint { IMAGE_REL_PPC_IMGLUE = 0x000E }
3988 enum : uint { IMAGE_REL_PPC_SECREL16 = 0x000F }
3989 enum : uint { IMAGE_REL_PPC_REFHI = 0x0010 }
3990 enum : uint { IMAGE_REL_PPC_REFLO = 0x0011 }
3991 enum : uint { IMAGE_REL_PPC_PAIR = 0x0012 }
3992 enum : uint { IMAGE_REL_PPC_SECRELLO = 0x0013 }
3993 enum : uint { IMAGE_REL_PPC_SECRELHI = 0x0014 }
3994 enum : uint { IMAGE_REL_PPC_GPREL = 0x0015 }
3995 enum : uint { IMAGE_REL_PPC_TOKEN = 0x0016 }
3996
3997 enum : uint { IMAGE_REL_PPC_TYPEMASK = 0x00FF }
3998
3999 enum : uint { IMAGE_REL_PPC_NEG = 0x0100 }
4000 enum : uint { IMAGE_REL_PPC_BRTAKEN = 0x0200 }
4001 enum : uint { IMAGE_REL_PPC_BRNTAKEN = 0x0400 }
4002 enum : uint { IMAGE_REL_PPC_TOCDEFN = 0x0800 }
4003
4004 enum : uint { IMAGE_REL_SH3_ABSOLUTE = 0x0000 }
4005 enum : uint { IMAGE_REL_SH3_DIRECT16 = 0x0001 }
4006 enum : uint { IMAGE_REL_SH3_DIRECT32 = 0x0002 }
4007 enum : uint { IMAGE_REL_SH3_DIRECT8 = 0x0003 }
4008 enum : uint { IMAGE_REL_SH3_DIRECT8_WORD = 0x0004 }
4009 enum : uint { IMAGE_REL_SH3_DIRECT8_LONG = 0x0005 }
4010 enum : uint { IMAGE_REL_SH3_DIRECT4 = 0x0006 }
4011 enum : uint { IMAGE_REL_SH3_DIRECT4_WORD = 0x0007 }
4012 enum : uint { IMAGE_REL_SH3_DIRECT4_LONG = 0x0008 }
4013 enum : uint { IMAGE_REL_SH3_PCREL8_WORD = 0x0009 }
4014 enum : uint { IMAGE_REL_SH3_PCREL8_LONG = 0x000A }
4015 enum : uint { IMAGE_REL_SH3_PCREL12_WORD = 0x000B }
4016 enum : uint { IMAGE_REL_SH3_STARTOF_SECTION = 0x000C }
4017 enum : uint { IMAGE_REL_SH3_SIZEOF_SECTION = 0x000D }
4018 enum : uint { IMAGE_REL_SH3_SECTION = 0x000E }
4019 enum : uint { IMAGE_REL_SH3_SECREL = 0x000F }
4020 enum : uint { IMAGE_REL_SH3_DIRECT32_NB = 0x0010 }
4021 enum : uint { IMAGE_REL_SH3_GPREL4_LONG = 0x0011 }
4022 enum : uint { IMAGE_REL_SH3_TOKEN = 0x0012 }
4023
4024 enum : uint { IMAGE_REL_ARM_ABSOLUTE = 0x0000 }
4025 enum : uint { IMAGE_REL_ARM_ADDR32 = 0x0001 }
4026 enum : uint { IMAGE_REL_ARM_ADDR32NB = 0x0002 }
4027 enum : uint { IMAGE_REL_ARM_BRANCH24 = 0x0003 }
4028 enum : uint { IMAGE_REL_ARM_BRANCH11 = 0x0004 }
4029 enum : uint { IMAGE_REL_ARM_TOKEN = 0x0005 }
4030 enum : uint { IMAGE_REL_ARM_GPREL12 = 0x0006 }
4031 enum : uint { IMAGE_REL_ARM_GPREL7 = 0x0007 }
4032 enum : uint { IMAGE_REL_ARM_BLX24 = 0x0008 }
4033 enum : uint { IMAGE_REL_ARM_BLX11 = 0x0009 }
4034 enum : uint { IMAGE_REL_ARM_SECTION = 0x000E }
4035 enum : uint { IMAGE_REL_ARM_SECREL = 0x000F }
4036
4037 enum : uint { IMAGE_REL_AM_ABSOLUTE = 0x0000 }
4038 enum : uint { IMAGE_REL_AM_ADDR32 = 0x0001 }
4039 enum : uint { IMAGE_REL_AM_ADDR32NB = 0x0002 }
4040 enum : uint { IMAGE_REL_AM_CALL32 = 0x0003 }
4041 enum : uint { IMAGE_REL_AM_FUNCINFO = 0x0004 }
4042 enum : uint { IMAGE_REL_AM_REL32_1 = 0x0005 }
4043 enum : uint { IMAGE_REL_AM_REL32_2 = 0x0006 }
4044 enum : uint { IMAGE_REL_AM_SECREL = 0x0007 }
4045 enum : uint { IMAGE_REL_AM_SECTION = 0x0008 }
4046 enum : uint { IMAGE_REL_AM_TOKEN = 0x0009 }
4047
4048 enum : uint { IMAGE_REL_AMD64_ABSOLUTE = 0x0000 }
4049 enum : uint { IMAGE_REL_AMD64_ADDR64 = 0x0001 }
4050 enum : uint { IMAGE_REL_AMD64_ADDR32 = 0x0002 }
4051 enum : uint { IMAGE_REL_AMD64_ADDR32NB = 0x0003 }
4052 enum : uint { IMAGE_REL_AMD64_REL32 = 0x0004 }
4053 enum : uint { IMAGE_REL_AMD64_REL32_1 = 0x0005 }
4054 enum : uint { IMAGE_REL_AMD64_REL32_2 = 0x0006 }
4055 enum : uint { IMAGE_REL_AMD64_REL32_3 = 0x0007 }
4056 enum : uint { IMAGE_REL_AMD64_REL32_4 = 0x0008 }
4057 enum : uint { IMAGE_REL_AMD64_REL32_5 = 0x0009 }
4058 enum : uint { IMAGE_REL_AMD64_SECTION = 0x000A }
4059 enum : uint { IMAGE_REL_AMD64_SECREL = 0x000B }
4060 enum : uint { IMAGE_REL_AMD64_SECREL7 = 0x000C }
4061 enum : uint { IMAGE_REL_AMD64_TOKEN = 0x000D }
4062
4063 enum : uint { IMAGE_REL_IA64_ABSOLUTE = 0x0000 }
4064 enum : uint { IMAGE_REL_IA64_IMM14 = 0x0001 }
4065 enum : uint { IMAGE_REL_IA64_IMM22 = 0x0002 }
4066 enum : uint { IMAGE_REL_IA64_IMM64 = 0x0003 }
4067 enum : uint { IMAGE_REL_IA64_DIR32 = 0x0004 }
4068 enum : uint { IMAGE_REL_IA64_DIR64 = 0x0005 }
4069 enum : uint { IMAGE_REL_IA64_PCREL21B = 0x0006 }
4070 enum : uint { IMAGE_REL_IA64_PCREL21M = 0x0007 }
4071 enum : uint { IMAGE_REL_IA64_PCREL21F = 0x0008 }
4072 enum : uint { IMAGE_REL_IA64_GPREL22 = 0x0009 }
4073 enum : uint { IMAGE_REL_IA64_LTOFF22 = 0x000A }
4074 enum : uint { IMAGE_REL_IA64_SECTION = 0x000B }
4075 enum : uint { IMAGE_REL_IA64_SECREL22 = 0x000C }
4076 enum : uint { IMAGE_REL_IA64_SECREL64I = 0x000D }
4077 enum : uint { IMAGE_REL_IA64_SECREL32 = 0x000E }
4078
4079 enum : uint { IMAGE_REL_IA64_DIR32NB = 0x0010 }
4080 enum : uint { IMAGE_REL_IA64_SREL14 = 0x0011 }
4081 enum : uint { IMAGE_REL_IA64_SREL22 = 0x0012 }
4082 enum : uint { IMAGE_REL_IA64_SREL32 = 0x0013 }
4083 enum : uint { IMAGE_REL_IA64_UREL32 = 0x0014 }
4084 enum : uint { IMAGE_REL_IA64_PCREL60X = 0x0015 }
4085 enum : uint { IMAGE_REL_IA64_PCREL60B = 0x0016 }
4086 enum : uint { IMAGE_REL_IA64_PCREL60F = 0x0017 }
4087 enum : uint { IMAGE_REL_IA64_PCREL60I = 0x0018 }
4088 enum : uint { IMAGE_REL_IA64_PCREL60M = 0x0019 }
4089 enum : uint { IMAGE_REL_IA64_IMMGPREL64 = 0x001A }
4090 enum : uint { IMAGE_REL_IA64_TOKEN = 0x001B }
4091 enum : uint { IMAGE_REL_IA64_GPREL32 = 0x001C }
4092 enum : uint { IMAGE_REL_IA64_ADDEND = 0x001F }
4093
4094 enum : uint { IMAGE_REL_CEF_ABSOLUTE = 0x0000 }
4095 enum : uint { IMAGE_REL_CEF_ADDR32 = 0x0001 }
4096 enum : uint { IMAGE_REL_CEF_ADDR64 = 0x0002 }
4097 enum : uint { IMAGE_REL_CEF_ADDR32NB = 0x0003 }
4098 enum : uint { IMAGE_REL_CEF_SECTION = 0x0004 }
4099 enum : uint { IMAGE_REL_CEF_SECREL = 0x0005 }
4100 enum : uint { IMAGE_REL_CEF_TOKEN = 0x0006 }
4101
4102 enum : uint { IMAGE_REL_CEE_ABSOLUTE = 0x0000 }
4103 enum : uint { IMAGE_REL_CEE_ADDR32 = 0x0001 }
4104 enum : uint { IMAGE_REL_CEE_ADDR64 = 0x0002 }
4105 enum : uint { IMAGE_REL_CEE_ADDR32NB = 0x0003 }
4106 enum : uint { IMAGE_REL_CEE_SECTION = 0x0004 }
4107 enum : uint { IMAGE_REL_CEE_SECREL = 0x0005 }
4108 enum : uint { IMAGE_REL_CEE_TOKEN = 0x0006 }
4109
4110 enum : uint { IMAGE_REL_M32R_ABSOLUTE = 0x0000 }
4111 enum : uint { IMAGE_REL_M32R_ADDR32 = 0x0001 }
4112 enum : uint { IMAGE_REL_M32R_ADDR32NB = 0x0002 }
4113 enum : uint { IMAGE_REL_M32R_ADDR24 = 0x0003 }
4114 enum : uint { IMAGE_REL_M32R_GPREL16 = 0x0004 }
4115 enum : uint { IMAGE_REL_M32R_PCREL24 = 0x0005 }
4116 enum : uint { IMAGE_REL_M32R_PCREL16 = 0x0006 }
4117 enum : uint { IMAGE_REL_M32R_PCREL8 = 0x0007 }
4118 enum : uint { IMAGE_REL_M32R_REFHALF = 0x0008 }
4119 enum : uint { IMAGE_REL_M32R_REFHI = 0x0009 }
4120 enum : uint { IMAGE_REL_M32R_REFLO = 0x000A }
4121 enum : uint { IMAGE_REL_M32R_PAIR = 0x000B }
4122 enum : uint { IMAGE_REL_M32R_SECTION = 0x000C }
4123 enum : uint { IMAGE_REL_M32R_SECREL32 = 0x000D }
4124 enum : uint { IMAGE_REL_M32R_TOKEN = 0x000E }
4125
4126 // #define EXT_IMM64(Value, Address, Size, InstPos, ValPos) Value |= (((ULONGLONG)((*(Address) >> InstPos) & (((ULONGLONG)1 << Size) - 1))) << ValPos)
4127
4128 // #define INS_IMM64(Value, Address, Size, InstPos, ValPos) *(PDWORD)Address = (*(PDWORD)Address & ~(((1 << Size) - 1) << InstPos)) | ((DWORD)((((ULONGLONG)Value >> ValPos) & (((ULONGLONG)1 << Size) - 1))) << InstPos)
4129
4130 enum : uint { EMARCH_ENC_I17_IMM7B_INST_WORD_X = 3 }
4131 enum : uint { EMARCH_ENC_I17_IMM7B_SIZE_X = 7 }
4132 enum : uint { EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X = 4 }
4133 enum : uint { EMARCH_ENC_I17_IMM7B_VAL_POS_X = 0 }
4134
4135 enum : uint { EMARCH_ENC_I17_IMM9D_INST_WORD_X = 3 }
4136 enum : uint { EMARCH_ENC_I17_IMM9D_SIZE_X = 9 }
4137 enum : uint { EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X = 18 }
4138 enum : uint { EMARCH_ENC_I17_IMM9D_VAL_POS_X = 7 }
4139
4140 enum : uint { EMARCH_ENC_I17_IMM5C_INST_WORD_X = 3 }
4141 enum : uint { EMARCH_ENC_I17_IMM5C_SIZE_X = 5 }
4142 enum : uint { EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X = 13 }
4143 enum : uint { EMARCH_ENC_I17_IMM5C_VAL_POS_X = 16 }
4144
4145 enum : uint { EMARCH_ENC_I17_IC_INST_WORD_X = 3 }
4146 enum : uint { EMARCH_ENC_I17_IC_SIZE_X = 1 }
4147 enum : uint { EMARCH_ENC_I17_IC_INST_WORD_POS_X = 12 }
4148 enum : uint { EMARCH_ENC_I17_IC_VAL_POS_X = 21 }
4149
4150 enum : uint { EMARCH_ENC_I17_IMM41a_INST_WORD_X = 1 }
4151 enum : uint { EMARCH_ENC_I17_IMM41a_SIZE_X = 10 }
4152 enum : uint { EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X = 14 }
4153 enum : uint { EMARCH_ENC_I17_IMM41a_VAL_POS_X = 22 }
4154
4155 enum : uint { EMARCH_ENC_I17_IMM41b_INST_WORD_X = 1 }
4156 enum : uint { EMARCH_ENC_I17_IMM41b_SIZE_X = 8 }
4157 enum : uint { EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X = 24 }
4158 enum : uint { EMARCH_ENC_I17_IMM41b_VAL_POS_X = 32 }
4159
4160 enum : uint { EMARCH_ENC_I17_IMM41c_INST_WORD_X = 2 }
4161 enum : uint { EMARCH_ENC_I17_IMM41c_SIZE_X = 23 }
4162 enum : uint { EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X = 0 }
4163 enum : uint { EMARCH_ENC_I17_IMM41c_VAL_POS_X = 40 }
4164
4165 enum : uint { EMARCH_ENC_I17_SIGN_INST_WORD_X = 3 }
4166 enum : uint { EMARCH_ENC_I17_SIGN_SIZE_X = 1 }
4167 enum : uint { EMARCH_ENC_I17_SIGN_INST_WORD_POS_X = 27 }
4168 enum : uint { EMARCH_ENC_I17_SIGN_VAL_POS_X = 63 }
4169
4170 struct _IMAGE_LINENUMBER {
4171 union {
4172 DWORD SymbolTableIndex;
4173 DWORD VirtualAddress;
4174 }
4175
4176 WORD Linenumber;
4177 }
4178 alias _IMAGE_LINENUMBER IMAGE_LINENUMBER;
4179
4180 alias IMAGE_LINENUMBER* PIMAGE_LINENUMBER;
4181
4182 enum : uint { IMAGE_SIZEOF_LINENUMBER = 6 }
4183
4184 // #ifndef _MAC
4185 align:
4186 // #endif
4187
4188 struct _IMAGE_BASE_RELOCATION {
4189 DWORD VirtualAddress;
4190 DWORD SizeOfBlock;
4191 }
4192 alias _IMAGE_BASE_RELOCATION IMAGE_BASE_RELOCATION;
4193
4194 alias IMAGE_BASE_RELOCATION* PIMAGE_BASE_RELOCATION;
4195
4196 enum : uint { IMAGE_SIZEOF_BASE_RELOCATION = 8 }
4197
4198 enum : uint { IMAGE_REL_BASED_ABSOLUTE = 0 }
4199 enum : uint { IMAGE_REL_BASED_HIGH = 1 }
4200 enum : uint { IMAGE_REL_BASED_LOW = 2 }
4201 enum : uint { IMAGE_REL_BASED_HIGHLOW = 3 }
4202 enum : uint { IMAGE_REL_BASED_HIGHADJ = 4 }
4203 enum : uint { IMAGE_REL_BASED_MIPS_JMPADDR = 5 }
4204 enum : uint { IMAGE_REL_BASED_MIPS_JMPADDR16 = 9 }
4205 enum : uint { IMAGE_REL_BASED_IA64_IMM64 = 9 }
4206 enum : uint { IMAGE_REL_BASED_DIR64 = 10 }
4207
4208 enum : uint { IMAGE_ARCHIVE_START_SIZE = 8 }
4209 const char[] IMAGE_ARCHIVE_START = "!<arch>\n";
4210 const char[] IMAGE_ARCHIVE_END = "`\n";
4211 const char[] IMAGE_ARCHIVE_PAD = "\n";
4212 const char[] IMAGE_ARCHIVE_LINKER_MEMBER = "/ ";
4213 const char[] IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// ";
4214
4215 struct _IMAGE_ARCHIVE_MEMBER_HEADER {
4216 BYTE Name[16];
4217 BYTE Date[12];
4218 BYTE UserID[6];
4219 BYTE GroupID[6];
4220 BYTE Mode[8];
4221 BYTE Size[10];
4222 BYTE EndHeader[2];
4223 }
4224 alias _IMAGE_ARCHIVE_MEMBER_HEADER IMAGE_ARCHIVE_MEMBER_HEADER;
4225 alias _IMAGE_ARCHIVE_MEMBER_HEADER* PIMAGE_ARCHIVE_MEMBER_HEADER;
4226
4227 enum : uint { IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60 }
4228
4229 struct _IMAGE_EXPORT_DIRECTORY {
4230 DWORD Characteristics;
4231 DWORD TimeDateStamp;
4232 WORD MajorVersion;
4233 WORD MinorVersion;
4234 DWORD Name;
4235 DWORD Base;
4236 DWORD NumberOfFunctions;
4237 DWORD NumberOfNames;
4238 DWORD AddressOfFunctions;
4239 DWORD AddressOfNames;
4240 DWORD AddressOfNameOrdinals;
4241 }
4242 alias _IMAGE_EXPORT_DIRECTORY IMAGE_EXPORT_DIRECTORY;
4243 alias _IMAGE_EXPORT_DIRECTORY* PIMAGE_EXPORT_DIRECTORY;
4244
4245 struct _IMAGE_IMPORT_BY_NAME {
4246 WORD Hint;
4247 BYTE Name[1];
4248 }
4249 alias _IMAGE_IMPORT_BY_NAME IMAGE_IMPORT_BY_NAME;
4250 alias _IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME;
4251
4252 align(8):
4253
4254 struct _IMAGE_THUNK_DATA64 {
4255 union {
4256 ULONGLONG ForwarderString;
4257 ULONGLONG Function;
4258 ULONGLONG Ordinal;
4259 ULONGLONG AddressOfData;
4260 }
4261
4262 }
4263 alias _IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA64;
4264
4265 alias IMAGE_THUNK_DATA64* PIMAGE_THUNK_DATA64;
4266
4267 align:
4268
4269 struct _IMAGE_THUNK_DATA32 {
4270 union {
4271 DWORD ForwarderString;
4272 DWORD Function;
4273 DWORD Ordinal;
4274 DWORD AddressOfData;
4275 }
4276
4277 }
4278 alias _IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA32;
4279
4280 alias IMAGE_THUNK_DATA32* PIMAGE_THUNK_DATA32;
4281
4282 const ulong IMAGE_ORDINAL_FLAG64 = 0x8000000000000000;
4283 enum : uint { IMAGE_ORDINAL_FLAG32 = 0x80000000 }
4284 ulong IMAGE_ORDINAL64(ulong Ordinal){ return Ordinal & 0xffff; }
4285 uint IMAGE_ORDINAL32(uint Ordinal){ return Ordinal & 0xffff; }
4286 bit IMAGE_SNAP_BY_ORDINAL64(ulong Ordinal){ return (Ordinal & IMAGE_ORDINAL_FLAG64) != 0; }
4287 bit IMAGE_SNAP_BY_ORDINAL32(uint Ordinal){ return (Ordinal & IMAGE_ORDINAL_FLAG32) != 0; }
4288
4289 extern(Windows) alias VOID function( PVOID DllHandle, DWORD Reason, PVOID Reserved ) PIMAGE_TLS_CALLBACK;
4290
4291 struct _IMAGE_TLS_DIRECTORY64 {
4292 ULONGLONG StartAddressOfRawData;
4293 ULONGLONG EndAddressOfRawData;
4294 ULONGLONG AddressOfIndex;
4295 ULONGLONG AddressOfCallBacks;
4296 DWORD SizeOfZeroFill;
4297 DWORD Characteristics;
4298 }
4299 alias _IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY64;
4300
4301 alias IMAGE_TLS_DIRECTORY64* PIMAGE_TLS_DIRECTORY64;
4302
4303 struct _IMAGE_TLS_DIRECTORY32 {
4304 DWORD StartAddressOfRawData;
4305 DWORD EndAddressOfRawData;
4306 DWORD AddressOfIndex;
4307 DWORD AddressOfCallBacks;
4308 DWORD SizeOfZeroFill;
4309 DWORD Characteristics;
4310 }
4311 alias _IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY32;
4312
4313 alias IMAGE_TLS_DIRECTORY32* PIMAGE_TLS_DIRECTORY32;
4314
4315 // #ifdef _WIN64
4316 // #...
4317 // #...
4318 // ...
4319 // #...
4320 // ...
4321 // #else
4322 alias IMAGE_ORDINAL_FLAG32 IMAGE_ORDINAL_FLAG;
4323 alias IMAGE_ORDINAL32 IMAGE_ORDINAL;
4324 alias IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA;
4325 alias PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA;
4326 alias IMAGE_SNAP_BY_ORDINAL32 IMAGE_SNAP_BY_ORDINAL;
4327 alias IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY;
4328 alias PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY;
4329 // #endif
4330
4331 struct _IMAGE_IMPORT_DESCRIPTOR {
4332 union {
4333 DWORD Characteristics;
4334 DWORD OriginalFirstThunk;
4335 }
4336
4337 DWORD TimeDateStamp;
4338
4339 DWORD ForwarderChain;
4340 DWORD Name;
4341 DWORD FirstThunk;
4342 }
4343 alias _IMAGE_IMPORT_DESCRIPTOR IMAGE_IMPORT_DESCRIPTOR;
4344
4345 alias IMAGE_IMPORT_DESCRIPTOR* PIMAGE_IMPORT_DESCRIPTOR;
4346
4347 struct _IMAGE_BOUND_IMPORT_DESCRIPTOR {
4348 DWORD TimeDateStamp;
4349 WORD OffsetModuleName;
4350 WORD NumberOfModuleForwarderRefs;
4351 }
4352 alias _IMAGE_BOUND_IMPORT_DESCRIPTOR IMAGE_BOUND_IMPORT_DESCRIPTOR;
4353 alias _IMAGE_BOUND_IMPORT_DESCRIPTOR* PIMAGE_BOUND_IMPORT_DESCRIPTOR;
4354
4355 struct _IMAGE_BOUND_FORWARDER_REF {
4356 DWORD TimeDateStamp;
4357 WORD OffsetModuleName;
4358 WORD Reserved;
4359 }
4360 alias _IMAGE_BOUND_FORWARDER_REF IMAGE_BOUND_FORWARDER_REF;
4361 alias _IMAGE_BOUND_FORWARDER_REF* PIMAGE_BOUND_FORWARDER_REF;
4362
4363 struct _IMAGE_RESOURCE_DIRECTORY {
4364 DWORD Characteristics;
4365 DWORD TimeDateStamp;
4366 WORD MajorVersion;
4367 WORD MinorVersion;
4368 WORD NumberOfNamedEntries;
4369 WORD NumberOfIdEntries;
4370 }
4371 alias _IMAGE_RESOURCE_DIRECTORY IMAGE_RESOURCE_DIRECTORY;
4372 alias _IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY;
4373
4374 enum : uint { IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000 }
4375 enum : uint { IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000 }
4376
4377 struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
4378 union {
4379 struct {
4380 // DWORD NameOffset:31;
4381 // DWORD NameIsString:1;
4382 }
4383
4384 DWORD Name;
4385 WORD Id;
4386 }
4387
4388 union {
4389 DWORD OffsetToData;
4390 struct {
4391 // DWORD OffsetToDirectory:31;
4392 // DWORD DataIsDirectory:1;
4393 }
4394
4395 }
4396
4397 }
4398 alias _IMAGE_RESOURCE_DIRECTORY_ENTRY IMAGE_RESOURCE_DIRECTORY_ENTRY;
4399 alias _IMAGE_RESOURCE_DIRECTORY_ENTRY* PIMAGE_RESOURCE_DIRECTORY_ENTRY;
4400
4401 struct _IMAGE_RESOURCE_DIRECTORY_STRING {
4402 WORD Length;
4403 CHAR NameString[ 1 ];
4404 }
4405 alias _IMAGE_RESOURCE_DIRECTORY_STRING IMAGE_RESOURCE_DIRECTORY_STRING;
4406 alias _IMAGE_RESOURCE_DIRECTORY_STRING* PIMAGE_RESOURCE_DIRECTORY_STRING;
4407
4408 struct _IMAGE_RESOURCE_DIR_STRING_U {
4409 WORD Length;
4410 WCHAR NameString[ 1 ];
4411 }
4412 alias _IMAGE_RESOURCE_DIR_STRING_U IMAGE_RESOURCE_DIR_STRING_U;
4413 alias _IMAGE_RESOURCE_DIR_STRING_U* PIMAGE_RESOURCE_DIR_STRING_U;
4414
4415 struct _IMAGE_RESOURCE_DATA_ENTRY {
4416 DWORD OffsetToData;
4417 DWORD Size;
4418 DWORD CodePage;
4419 DWORD Reserved;
4420 }
4421 alias _IMAGE_RESOURCE_DATA_ENTRY IMAGE_RESOURCE_DATA_ENTRY;
4422 alias _IMAGE_RESOURCE_DATA_ENTRY* PIMAGE_RESOURCE_DATA_ENTRY;
4423
4424 struct _12 {
4425 DWORD Characteristics;
4426 DWORD TimeDateStamp;
4427 WORD MajorVersion;
4428 WORD MinorVersion;
4429 DWORD GlobalFlagsClear;
4430 DWORD GlobalFlagsSet;
4431 DWORD CriticalSectionDefaultTimeout;
4432 DWORD DeCommitFreeBlockThreshold;
4433 DWORD DeCommitTotalFreeThreshold;
4434 DWORD LockPrefixTable;
4435 DWORD MaximumAllocationSize;
4436 DWORD VirtualMemoryThreshold;
4437 DWORD ProcessHeapFlags;
4438 DWORD ProcessAffinityMask;
4439 WORD CSDVersion;
4440 WORD Reserved1;
4441 DWORD EditList;
4442 DWORD Reserved[ 1 ];
4443 }
4444 alias _12 IMAGE_LOAD_CONFIG_DIRECTORY32;
4445 alias _12* PIMAGE_LOAD_CONFIG_DIRECTORY32;
4446
4447 struct _13 {
4448 DWORD Characteristics;
4449 DWORD TimeDateStamp;
4450 WORD MajorVersion;
4451 WORD MinorVersion;
4452 DWORD GlobalFlagsClear;
4453 DWORD GlobalFlagsSet;
4454 DWORD CriticalSectionDefaultTimeout;
4455 ULONGLONG DeCommitFreeBlockThreshold;
4456 ULONGLONG DeCommitTotalFreeThreshold;
4457 ULONGLONG LockPrefixTable;
4458 ULONGLONG MaximumAllocationSize;
4459 ULONGLONG VirtualMemoryThreshold;
4460 ULONGLONG ProcessAffinityMask;
4461 DWORD ProcessHeapFlags;
4462 WORD CSDVersion;
4463 WORD Reserved1;
4464 ULONGLONG EditList;
4465 DWORD Reserved[ 2 ];
4466 }
4467 alias _13 IMAGE_LOAD_CONFIG_DIRECTORY64;
4468 alias _13* PIMAGE_LOAD_CONFIG_DIRECTORY64;
4469
4470 // #ifdef _WIN64
4471 // ...
4472 // #else
4473 alias IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY;
4474 alias PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY;
4475 // #endif
4476
4477 struct _IMAGE_CE_RUNTIME_FUNCTION_ENTRY {
4478 DWORD FuncStart;
4479 // DWORD PrologLen : 8;
4480 // DWORD FuncLen : 22;
4481 // DWORD ThirtyTwoBit : 1;
4482 // DWORD ExceptionFlag : 1;
4483 }
4484 alias _IMAGE_CE_RUNTIME_FUNCTION_ENTRY IMAGE_CE_RUNTIME_FUNCTION_ENTRY;
4485 alias _IMAGE_CE_RUNTIME_FUNCTION_ENTRY* PIMAGE_CE_RUNTIME_FUNCTION_ENTRY;
4486
4487 struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY {
4488 ULONGLONG BeginAddress;
4489 ULONGLONG EndAddress;
4490 ULONGLONG ExceptionHandler;
4491 ULONGLONG HandlerData;
4492 ULONGLONG PrologEndAddress;
4493 }
4494 alias _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY;
4495 alias _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY* PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY;
4496
4497 struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY {
4498 DWORD BeginAddress;
4499 DWORD EndAddress;
4500 DWORD ExceptionHandler;
4501 DWORD HandlerData;
4502 DWORD PrologEndAddress;
4503 }
4504 alias _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY;
4505 alias _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY* PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY;
4506
4507 struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
4508 DWORD BeginAddress;
4509 DWORD EndAddress;
4510 DWORD UnwindInfoAddress;
4511 }
4512 alias _IMAGE_RUNTIME_FUNCTION_ENTRY* _PIMAGE_RUNTIME_FUNCTION_ENTRY;
4513
4514 alias _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_IA64_RUNTIME_FUNCTION_ENTRY;
4515 alias _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY;
4516
4517 // #if defined(_AXP64_)
4518
4519 // ...
4520
4521 // #elif defined(_ALPHA_)
4522
4523 // ...
4524
4525 // #else
4526
4527 alias _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY;
4528 alias _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY;
4529
4530 // #endif
4531
4532 struct _IMAGE_DEBUG_DIRECTORY {
4533 DWORD Characteristics;
4534 DWORD TimeDateStamp;
4535 WORD MajorVersion;
4536 WORD MinorVersion;
4537 DWORD Type;
4538 DWORD SizeOfData;
4539 DWORD AddressOfRawData;
4540 DWORD PointerToRawData;
4541 }
4542 alias _IMAGE_DEBUG_DIRECTORY IMAGE_DEBUG_DIRECTORY;
4543 alias _IMAGE_DEBUG_DIRECTORY* PIMAGE_DEBUG_DIRECTORY;
4544
4545 enum : uint { IMAGE_DEBUG_TYPE_UNKNOWN = 0 }
4546 enum : uint { IMAGE_DEBUG_TYPE_COFF = 1 }
4547 enum : uint { IMAGE_DEBUG_TYPE_CODEVIEW = 2 }
4548 enum : uint { IMAGE_DEBUG_TYPE_FPO = 3 }
4549 enum : uint { IMAGE_DEBUG_TYPE_MISC = 4 }
4550 enum : uint { IMAGE_DEBUG_TYPE_EXCEPTION = 5 }
4551 enum : uint { IMAGE_DEBUG_TYPE_FIXUP = 6 }
4552 enum : uint { IMAGE_DEBUG_TYPE_OMAP_TO_SRC = 7 }
4553 enum : uint { IMAGE_DEBUG_TYPE_OMAP_FROM_SRC = 8 }
4554 enum : uint { IMAGE_DEBUG_TYPE_BORLAND = 9 }
4555 enum : uint { IMAGE_DEBUG_TYPE_RESERVED10 = 10 }
4556 enum : uint { IMAGE_DEBUG_TYPE_CLSID = 11 }
4557
4558 struct _IMAGE_COFF_SYMBOLS_HEADER {
4559 DWORD NumberOfSymbols;
4560 DWORD LvaToFirstSymbol;
4561 DWORD NumberOfLinenumbers;
4562 DWORD LvaToFirstLinenumber;
4563 DWORD RvaToFirstByteOfCode;
4564 DWORD RvaToLastByteOfCode;
4565 DWORD RvaToFirstByteOfData;
4566 DWORD RvaToLastByteOfData;
4567 }
4568 alias _IMAGE_COFF_SYMBOLS_HEADER IMAGE_COFF_SYMBOLS_HEADER;
4569 alias _IMAGE_COFF_SYMBOLS_HEADER* PIMAGE_COFF_SYMBOLS_HEADER;
4570
4571 enum : uint { FRAME_FPO = 0 }
4572 enum : uint { FRAME_TRAP = 1 }
4573 enum : uint { FRAME_TSS = 2 }
4574 enum : uint { FRAME_NONFPO = 3 }
4575
4576 struct _FPO_DATA {
4577 DWORD ulOffStart;
4578 DWORD cbProcSize;
4579 DWORD cdwLocals;
4580 WORD cdwParams;
4581 // WORD cbProlog : 8;
4582 // WORD cbRegs : 3;
4583 // WORD fHasSEH : 1;
4584 // WORD fUseBP : 1;
4585 // WORD reserved : 1;
4586 // WORD cbFrame : 2;
4587 }
4588 alias _FPO_DATA FPO_DATA;
4589 alias _FPO_DATA* PFPO_DATA;
4590
4591 enum : uint { SIZEOF_RFPO_DATA = 16 }
4592
4593 enum : uint { IMAGE_DEBUG_MISC_EXENAME = 1 }
4594
4595 struct _IMAGE_DEBUG_MISC {
4596 DWORD DataType;
4597 DWORD Length;
4598
4599 BOOLEAN Unicode;
4600 BYTE Reserved[ 3 ];
4601 BYTE Data[ 1 ];
4602 }
4603 alias _IMAGE_DEBUG_MISC IMAGE_DEBUG_MISC;
4604 alias _IMAGE_DEBUG_MISC* PIMAGE_DEBUG_MISC;
4605
4606 struct _IMAGE_FUNCTION_ENTRY {
4607 DWORD StartingAddress;
4608 DWORD EndingAddress;
4609 DWORD EndOfPrologue;
4610 }
4611 alias _IMAGE_FUNCTION_ENTRY IMAGE_FUNCTION_ENTRY;
4612 alias _IMAGE_FUNCTION_ENTRY* PIMAGE_FUNCTION_ENTRY;
4613
4614 struct _IMAGE_FUNCTION_ENTRY64 {
4615 ULONGLONG StartingAddress;
4616 ULONGLONG EndingAddress;
4617 union {
4618 ULONGLONG EndOfPrologue;
4619 ULONGLONG UnwindInfoAddress;
4620 }
4621
4622 }
4623 alias _IMAGE_FUNCTION_ENTRY64 IMAGE_FUNCTION_ENTRY64;
4624 alias _IMAGE_FUNCTION_ENTRY64* PIMAGE_FUNCTION_ENTRY64;
4625
4626 struct _IMAGE_SEPARATE_DEBUG_HEADER {
4627 WORD Signature;
4628 WORD Flags;
4629 WORD Machine;
4630 WORD Characteristics;
4631 DWORD TimeDateStamp;
4632 DWORD CheckSum;
4633 DWORD ImageBase;
4634 DWORD SizeOfImage;
4635 DWORD NumberOfSections;
4636 DWORD ExportedNamesSize;
4637 DWORD DebugDirectorySize;
4638 DWORD SectionAlignment;
4639 DWORD Reserved[2];
4640 }
4641 alias _IMAGE_SEPARATE_DEBUG_HEADER IMAGE_SEPARATE_DEBUG_HEADER;
4642 alias _IMAGE_SEPARATE_DEBUG_HEADER* PIMAGE_SEPARATE_DEBUG_HEADER;
4643
4644 struct _NON_PAGED_DEBUG_INFO {
4645 WORD Signature;
4646 WORD Flags;
4647 DWORD Size;
4648 WORD Machine;
4649 WORD Characteristics;
4650 DWORD TimeDateStamp;
4651 DWORD CheckSum;
4652 DWORD SizeOfImage;
4653 ULONGLONG ImageBase;
4654
4655 }
4656 alias _NON_PAGED_DEBUG_INFO NON_PAGED_DEBUG_INFO;
4657 alias _NON_PAGED_DEBUG_INFO* PNON_PAGED_DEBUG_INFO;
4658
4659 // #ifndef _MAC
4660 enum : uint { IMAGE_SEPARATE_DEBUG_SIGNATURE = 0x4944 }
4661 enum : uint { NON_PAGED_DEBUG_SIGNATURE = 0x494E }
4662 // #else
4663 // #...
4664 // #...
4665 // #endif
4666
4667 enum : uint { IMAGE_SEPARATE_DEBUG_FLAGS_MASK = 0x8000 }
4668 enum : uint { IMAGE_SEPARATE_DEBUG_MISMATCH = 0x8000 }
4669
4670 struct _ImageArchitectureHeader {
4671 // unsigned int AmaskValue: 1;
4672
4673 // int :7;
4674 // unsigned int AmaskShift: 8;
4675 // int :16;
4676 DWORD FirstEntryRVA;
4677 }
4678 alias _ImageArchitectureHeader IMAGE_ARCHITECTURE_HEADER;
4679 alias _ImageArchitectureHeader* PIMAGE_ARCHITECTURE_HEADER;
4680
4681 struct _ImageArchitectureEntry {
4682 DWORD FixupInstRVA;
4683 DWORD NewInst;
4684 }
4685 alias _ImageArchitectureEntry IMAGE_ARCHITECTURE_ENTRY;
4686 alias _ImageArchitectureEntry* PIMAGE_ARCHITECTURE_ENTRY;
4687
4688 align:
4689
4690 enum : uint { IMPORT_OBJECT_HDR_SIG2 = 0xffff }
4691
4692 struct IMPORT_OBJECT_HEADER {
4693 WORD Sig1;
4694 WORD Sig2;
4695 WORD Version;
4696 WORD Machine;
4697 DWORD TimeDateStamp;
4698 DWORD SizeOfData;
4699
4700 union {
4701 WORD Ordinal;
4702 WORD Hint;
4703 }
4704
4705 // WORD Type : 2;
4706 // WORD NameType : 3;
4707 // WORD Reserved : 11;
4708 }
4709
4710 alias int IMPORT_OBJECT_TYPE;
4711 enum {
4712 IMPORT_OBJECT_CODE = 0,
4713 IMPORT_OBJECT_DATA = 1,
4714 IMPORT_OBJECT_CONST = 2,
4715 }
4716
4717 alias int IMPORT_OBJECT_NAME_TYPE;
4718 enum {
4719 IMPORT_OBJECT_ORDINAL = 0,
4720 IMPORT_OBJECT_NAME = 1,
4721 IMPORT_OBJECT_NAME_NO_PREFIX = 2,
4722 IMPORT_OBJECT_NAME_UNDECORATE = 3,
4723
4724 }
4725
4726 // #ifndef __IMAGE_COR20_HEADER_DEFINED__
4727 // #define __IMAGE_COR20_HEADER_DEFINED__
4728
4729 alias int ReplacesCorHdrNumericDefines;
4730 enum {
4731
4732 COMIMAGE_FLAGS_ILONLY = 0x00000001,
4733 COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,
4734 COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004,
4735 COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,
4736
4737 COR_VERSION_MAJOR_V2 = 2,
4738 COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2,
4739 COR_VERSION_MINOR = 0,
4740 COR_DELETED_NAME_LENGTH = 8,
4741 COR_VTABLEGAP_NAME_LENGTH = 8,
4742
4743 NATIVE_TYPE_MAX_CB = 1,
4744 COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE = 0xFF,
4745
4746 IMAGE_COR_MIH_METHODRVA = 0x01,
4747 IMAGE_COR_MIH_EHRVA = 0x02,
4748 IMAGE_COR_MIH_BASICBLOCK = 0x08,
4749
4750 COR_VTABLE_32BIT = 0x01,
4751 COR_VTABLE_64BIT = 0x02,
4752 COR_VTABLE_FROM_UNMANAGED = 0x04,
4753 COR_VTABLE_CALL_MOST_DERIVED = 0x10,
4754
4755 IMAGE_COR_EATJ_THUNK_SIZE = 32,
4756
4757 MAX_CLASS_NAME = 1024,
4758 MAX_PACKAGE_NAME = 1024,
4759 }
4760
4761 struct IMAGE_COR20_HEADER {
4762
4763 DWORD cb;
4764 WORD MajorRuntimeVersion;
4765 WORD MinorRuntimeVersion;
4766 IMAGE_DATA_DIRECTORY MetaData;
4767 DWORD Flags;
4768 DWORD EntryPointToken;
4769 IMAGE_DATA_DIRECTORY Resources;
4770 IMAGE_DATA_DIRECTORY StrongNameSignature;
4771 IMAGE_DATA_DIRECTORY CodeManagerTable;
4772 IMAGE_DATA_DIRECTORY VTableFixups;
4773 IMAGE_DATA_DIRECTORY ExportAddressTableJumps;
4774 IMAGE_DATA_DIRECTORY ManagedNativeHeader;
4775 }
4776 alias IMAGE_COR20_HEADER* PIMAGE_COR20_HEADER;
4777
4778 // #endif // __IMAGE_COR20_HEADER_DEFINED__
4779
4780 // #ifdef _MAC
4781 // #ifndef _INC_STRING
4782 // #...
4783 // #endif /* _INC_STRING */
4784 // #else
4785 // #include <string.h>
4786 // #endif // _MAC
4787
4788 // #ifndef _SLIST_HEADER_
4789 // #define _SLIST_HEADER_
4790
4791 alias SINGLE_LIST_ENTRY SLIST_ENTRY;
4792 alias _SINGLE_LIST_ENTRY _SLIST_ENTRY;
4793 alias PSINGLE_LIST_ENTRY PSLIST_ENTRY;
4794
4795 // #if defined(_WIN64)
4796
4797 // ...
4798
4799 // ...
4800
4801 // #else
4802
4803 union _SLIST_HEADER {
4804 ULONGLONG Alignment;
4805 struct {
4806 SLIST_ENTRY Next;
4807 WORD Depth;
4808 WORD Sequence;
4809 }
4810
4811 }
4812 alias _SLIST_HEADER SLIST_HEADER;
4813 alias _SLIST_HEADER* PSLIST_HEADER;
4814
4815 // #endif
4816
4817 // #endif
4818
4819 extern(Windows) export VOID RtlInitializeSListHead(
4820 PSLIST_HEADER ListHead);
4821
4822 extern(Windows) export PSLIST_ENTRY RtlFirstEntrySList(
4823 SLIST_HEADER *ListHead);
4824
4825 extern(Windows) export PSLIST_ENTRY RtlInterlockedPopEntrySList(
4826 PSLIST_HEADER ListHead);
4827
4828 extern(Windows) export PSLIST_ENTRY RtlInterlockedPushEntrySList(
4829 PSLIST_HEADER ListHead,
4830 PSLIST_ENTRY ListEntry);
4831
4832 extern(Windows) export PSLIST_ENTRY RtlInterlockedFlushSList(
4833 PSLIST_HEADER ListHead);
4834
4835 extern(Windows) export WORD RtlQueryDepthSList(
4836 PSLIST_HEADER ListHead);
4837
4838 enum : uint { HEAP_NO_SERIALIZE = 0x00000001 }
4839 enum : uint { HEAP_GROWABLE = 0x00000002 }
4840 enum : uint { HEAP_GENERATE_EXCEPTIONS = 0x00000004 }
4841 enum : uint { HEAP_ZERO_MEMORY = 0x00000008 }
4842 enum : uint { HEAP_REALLOC_IN_PLACE_ONLY = 0x00000010 }
4843 enum : uint { HEAP_TAIL_CHECKING_ENABLED = 0x00000020 }
4844 enum : uint { HEAP_FREE_CHECKING_ENABLED = 0x00000040 }
4845 enum : uint { HEAP_DISABLE_COALESCE_ON_FREE = 0x00000080 }
4846 enum : uint { HEAP_CREATE_ALIGN_16 = 0x00010000 }
4847 enum : uint { HEAP_CREATE_ENABLE_TRACING = 0x00020000 }
4848 enum : uint { HEAP_MAXIMUM_TAG = 0x0FFF }
4849 enum : uint { HEAP_PSEUDO_TAG_FLAG = 0x8000 }
4850 enum : uint { HEAP_TAG_SHIFT = 18 }
4851 uint HEAP_MAKE_TAG_FLAGS(uint b, uint o){ return b + (o << 18); }
4852
4853 enum : uint { IS_TEXT_UNICODE_ASCII16 = 0x0001 }
4854 enum : uint { IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010 }
4855
4856 enum : uint { IS_TEXT_UNICODE_STATISTICS = 0x0002 }
4857 enum : uint { IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020 }
4858
4859 enum : uint { IS_TEXT_UNICODE_CONTROLS = 0x0004 }
4860 enum : uint { IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040 }
4861
4862 enum : uint { IS_TEXT_UNICODE_SIGNATURE = 0x0008 }
4863 enum : uint { IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080 }
4864
4865 enum : uint { IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100 }
4866 enum : uint { IS_TEXT_UNICODE_ODD_LENGTH = 0x0200 }
4867 enum : uint { IS_TEXT_UNICODE_DBCS_LEADBYTE = 0x0400 }
4868 enum : uint { IS_TEXT_UNICODE_NULL_BYTES = 0x1000 }
4869
4870 enum : uint { IS_TEXT_UNICODE_UNICODE_MASK = 0x000F }
4871 enum : uint { IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0 }
4872 enum : uint { IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00 }
4873 enum : uint { IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000 }
4874
4875 enum : uint { COMPRESSION_FORMAT_NONE = 0x0000 }
4876 enum : uint { COMPRESSION_FORMAT_DEFAULT = 0x0001 }
4877 enum : uint { COMPRESSION_FORMAT_LZNT1 = 0x0002 }
4878 enum : uint { COMPRESSION_ENGINE_STANDARD = 0x0000 }
4879 enum : uint { COMPRESSION_ENGINE_MAXIMUM = 0x0100 }
4880 enum : uint { COMPRESSION_ENGINE_HIBER = 0x0200 }
4881
4882 extern(Windows) export SIZE_T RtlCompareMemory(
4883 VOID *Source1,
4884 VOID *Source2,
4885 SIZE_T Length);
4886
4887 // #if defined(_M_AMD64) || defined(_M_IA64)
4888
4889 // #...
4890 // ...
4891
4892 // ...
4893
4894 // #if !defined(_M_AMD64)
4895
4896 // ...
4897
4898 // #endif
4899
4900 // ...
4901
4902 // ...
4903
4904 // ...
4905
4906 // #else
4907
4908 bit RtlEqualMemory(void* x, void* y, uint len){ return memcmp(x, y, len) == 0; }
4909 void RtlMoveMemory(void* d, void* s, uint len){ memmove(d, s, len); }
4910 void RtlCopyMemory(void* d, void* s, uint len){ memcpy(d, s, len); }
4911 void RtlFillMemory(void* d, uint len, ubyte f){ memset(d, f, len); }
4912 void RtlZeroMemory(void* d, uint len){ memset(d, 0, len); }
4913
4914 // #endif
4915
4916 struct _MESSAGE_RESOURCE_ENTRY {
4917 WORD Length;
4918 WORD Flags;
4919 BYTE Text[ 1 ];
4920 }
4921 alias _MESSAGE_RESOURCE_ENTRY MESSAGE_RESOURCE_ENTRY;
4922 alias _MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY;
4923
4924 enum : uint { MESSAGE_RESOURCE_UNICODE = 0x0001 }
4925
4926 struct _MESSAGE_RESOURCE_BLOCK {
4927 DWORD LowId;
4928 DWORD HighId;
4929 DWORD OffsetToEntries;
4930 }
4931 alias _MESSAGE_RESOURCE_BLOCK MESSAGE_RESOURCE_BLOCK;
4932 alias _MESSAGE_RESOURCE_BLOCK* PMESSAGE_RESOURCE_BLOCK;
4933
4934 struct _MESSAGE_RESOURCE_DATA {
4935 DWORD NumberOfBlocks;
4936 MESSAGE_RESOURCE_BLOCK Blocks[ 1 ];
4937 }
4938 alias _MESSAGE_RESOURCE_DATA MESSAGE_RESOURCE_DATA;
4939 alias _MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA;
4940
4941 struct _OSVERSIONINFOA {
4942 DWORD dwOSVersionInfoSize;
4943 DWORD dwMajorVersion;
4944 DWORD dwMinorVersion;
4945 DWORD dwBuildNumber;
4946 DWORD dwPlatformId;
4947 CHAR szCSDVersion[ 128 ];
4948 }
4949 alias _OSVERSIONINFOA OSVERSIONINFOA;
4950 alias _OSVERSIONINFOA* POSVERSIONINFOA;
4951 alias _OSVERSIONINFOA* LPOSVERSIONINFOA;
4952
4953 struct _OSVERSIONINFOW {
4954 DWORD dwOSVersionInfoSize;
4955 DWORD dwMajorVersion;
4956 DWORD dwMinorVersion;
4957 DWORD dwBuildNumber;
4958 DWORD dwPlatformId;
4959 WCHAR szCSDVersion[ 128 ];
4960 }
4961 alias _OSVERSIONINFOW OSVERSIONINFOW;
4962 alias _OSVERSIONINFOW* POSVERSIONINFOW;
4963 alias _OSVERSIONINFOW* LPOSVERSIONINFOW;
4964 alias _OSVERSIONINFOW RTL_OSVERSIONINFOW;
4965 alias _OSVERSIONINFOW* PRTL_OSVERSIONINFOW;
4966
4967 // #ifdef UNICODE
4968 alias OSVERSIONINFOW OSVERSIONINFO;
4969 alias POSVERSIONINFOW POSVERSIONINFO;
4970 alias LPOSVERSIONINFOW LPOSVERSIONINFO;
4971 // #else
4972 // ...
4973 // #endif // UNICODE
4974
4975 struct _OSVERSIONINFOEXA {
4976 DWORD dwOSVersionInfoSize;
4977 DWORD dwMajorVersion;
4978 DWORD dwMinorVersion;
4979 DWORD dwBuildNumber;
4980 DWORD dwPlatformId;
4981 CHAR szCSDVersion[ 128 ];
4982 WORD wServicePackMajor;
4983 WORD wServicePackMinor;
4984 WORD wSuiteMask;
4985 BYTE wProductType;
4986 BYTE wReserved;
4987 }
4988 alias _OSVERSIONINFOEXA OSVERSIONINFOEXA;
4989 alias _OSVERSIONINFOEXA* POSVERSIONINFOEXA;
4990 alias _OSVERSIONINFOEXA* LPOSVERSIONINFOEXA;
4991
4992 struct _OSVERSIONINFOEXW {
4993 DWORD dwOSVersionInfoSize;
4994 DWORD dwMajorVersion;
4995 DWORD dwMinorVersion;
4996 DWORD dwBuildNumber;
4997 DWORD dwPlatformId;
4998 WCHAR szCSDVersion[ 128 ];
4999 WORD wServicePackMajor;
5000 WORD wServicePackMinor;
5001 WORD wSuiteMask;
5002 BYTE wProductType;
5003 BYTE wReserved;
5004 }
5005 alias _OSVERSIONINFOEXW OSVERSIONINFOEXW;
5006 alias _OSVERSIONINFOEXW* POSVERSIONINFOEXW;
5007 alias _OSVERSIONINFOEXW* LPOSVERSIONINFOEXW;
5008 alias _OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW;
5009 alias _OSVERSIONINFOEXW* PRTL_OSVERSIONINFOEXW;
5010
5011 // #ifdef UNICODE
5012 alias OSVERSIONINFOEXW OSVERSIONINFOEX;
5013 alias POSVERSIONINFOEXW POSVERSIONINFOEX;
5014 alias LPOSVERSIONINFOEXW LPOSVERSIONINFOEX;
5015 // #else
5016 // ...
5017 // #endif // UNICODE
5018
5019 enum : uint { VER_EQUAL = 1 }
5020 enum : uint { VER_GREATER = 2 }
5021 enum : uint { VER_GREATER_EQUAL = 3 }
5022 enum : uint { VER_LESS = 4 }
5023 enum : uint { VER_LESS_EQUAL = 5 }
5024 enum : uint { VER_AND = 6 }
5025 enum : uint { VER_OR = 7 }
5026
5027 enum : uint { VER_CONDITION_MASK = 7 }
5028 enum : uint { VER_NUM_BITS_PER_CONDITION_MASK = 3 }
5029
5030 enum : uint { VER_MINORVERSION = 0x0000001 }
5031 enum : uint { VER_MAJORVERSION = 0x0000002 }
5032 enum : uint { VER_BUILDNUMBER = 0x0000004 }
5033 enum : uint { VER_PLATFORMID = 0x0000008 }
5034 enum : uint { VER_SERVICEPACKMINOR = 0x0000010 }
5035 enum : uint { VER_SERVICEPACKMAJOR = 0x0000020 }
5036 enum : uint { VER_SUITENAME = 0x0000040 }
5037 enum : uint { VER_PRODUCT_TYPE = 0x0000080 }
5038
5039 enum : uint { VER_NT_WORKSTATION = 0x0000001 }
5040 enum : uint { VER_NT_DOMAIN_CONTROLLER = 0x0000002 }
5041 enum : uint { VER_NT_SERVER = 0x0000003 }
5042
5043 enum : uint { VER_PLATFORM_WIN32s = 0 }
5044 enum : uint { VER_PLATFORM_WIN32_WINDOWS = 1 }
5045 enum : uint { VER_PLATFORM_WIN32_NT = 2 }
5046
5047 // #define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_)=VerSetConditionMask((_m_),(_t_),(_c_)))
5048
5049 extern(Windows) export ULONGLONG VerSetConditionMask(
5050 ULONGLONG ConditionMask,
5051 DWORD TypeMask,
5052 BYTE Condition);
5053
5054 struct _RTL_CRITICAL_SECTION_DEBUG {
5055 WORD Type;
5056 WORD CreatorBackTraceIndex;
5057 _RTL_CRITICAL_SECTION *CriticalSection;
5058 LIST_ENTRY ProcessLocksList;
5059 DWORD EntryCount;
5060 DWORD ContentionCount;
5061 DWORD Spare[ 2 ];
5062 }
5063 alias _RTL_CRITICAL_SECTION_DEBUG RTL_CRITICAL_SECTION_DEBUG;
5064 alias _RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG;
5065 alias _RTL_CRITICAL_SECTION_DEBUG RTL_RESOURCE_DEBUG;
5066 alias _RTL_CRITICAL_SECTION_DEBUG* PRTL_RESOURCE_DEBUG;
5067
5068 enum : uint { RTL_CRITSECT_TYPE = 0 }
5069 enum : uint { RTL_RESOURCE_TYPE = 1 }
5070
5071 struct _RTL_CRITICAL_SECTION {
5072 PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
5073
5074 LONG LockCount;
5075 LONG RecursionCount;
5076 HANDLE OwningThread;
5077 HANDLE LockSemaphore;
5078 ULONG_PTR SpinCount;
5079 }
5080 alias _RTL_CRITICAL_SECTION RTL_CRITICAL_SECTION;
5081 alias _RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION;
5082
5083 extern(Windows) alias VOID function( PWSTR DllName, PVOID DllBase, SIZE_T DllSize, PVOID Reserved ) RTL_VERIFIER_DLL_LOAD_CALLBACK;
5084
5085 extern(Windows) alias VOID function( PWSTR DllName, PVOID DllBase, SIZE_T DllSize, PVOID Reserved ) RTL_VERIFIER_DLL_UNLOAD_CALLBACK;
5086
5087 struct _RTL_VERIFIER_THUNK_DESCRIPTOR {
5088
5089 PCHAR ThunkName;
5090 PVOID ThunkOldAddress;
5091 PVOID ThunkNewAddress;
5092 }
5093 alias _RTL_VERIFIER_THUNK_DESCRIPTOR RTL_VERIFIER_THUNK_DESCRIPTOR;
5094 alias _RTL_VERIFIER_THUNK_DESCRIPTOR* PRTL_VERIFIER_THUNK_DESCRIPTOR;
5095
5096 struct _RTL_VERIFIER_DLL_DESCRIPTOR {
5097
5098 PWCHAR DllName;
5099 DWORD DllFlags;
5100 PVOID DllAddress;
5101 PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks;
5102 }
5103 alias _RTL_VERIFIER_DLL_DESCRIPTOR RTL_VERIFIER_DLL_DESCRIPTOR;
5104 alias _RTL_VERIFIER_DLL_DESCRIPTOR* PRTL_VERIFIER_DLL_DESCRIPTOR;
5105
5106 struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR {
5107
5108 DWORD Length;
5109 PRTL_VERIFIER_DLL_DESCRIPTOR ProviderDlls;
5110 RTL_VERIFIER_DLL_LOAD_CALLBACK ProviderDllLoadCallback;
5111 RTL_VERIFIER_DLL_UNLOAD_CALLBACK ProviderDllUnloadCallback;
5112
5113 PWSTR VerifierImage;
5114 DWORD VerifierFlags;
5115 DWORD VerifierDebug;
5116 }
5117 alias _RTL_VERIFIER_PROVIDER_DESCRIPTOR RTL_VERIFIER_PROVIDER_DESCRIPTOR;
5118 alias _RTL_VERIFIER_PROVIDER_DESCRIPTOR* PRTL_VERIFIER_PROVIDER_DESCRIPTOR;
5119
5120 enum : uint { RTL_VRF_FLG_FULL_PAGE_HEAP = 0x0001 }
5121 enum : uint { RTL_VRF_FLG_LOCK_CHECKS = 0x0002 }
5122 enum : uint { RTL_VRF_FLG_HANDLE_CHECKS = 0x0004 }
5123 enum : uint { RTL_VRF_FLG_STACK_CHECKS = 0x0008 }
5124 enum : uint { RTL_VRF_FLG_APPCOMPAT_CHECKS = 0x0010 }
5125
5126 enum : uint { APPLICATION_VERIFIER_INTERNAL_ERROR = 0x80000000 }
5127 enum : uint { APPLICATION_VERIFIER_INTERNAL_WARNING = 0x40000000 }
5128 enum : uint { APPLICATION_VERIFIER_NO_BREAK = 0x20000000 }
5129 enum : uint { APPLICATION_VERIFIER_RESERVED_BIT_28 = 0x10000000 }
5130
5131 enum : uint { APPLICATION_VERIFIER_UNKNOWN_ERROR = 0x0001 }
5132 enum : uint { APPLICATION_VERIFIER_ACCESS_VIOLATION = 0x0002 }
5133 enum : uint { APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS = 0x0003 }
5134 enum : uint { APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST = 0x0004 }
5135 enum : uint { APPLICATION_VERIFIER_BAD_HEAP_HANDLE = 0x0005 }
5136 enum : uint { APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE = 0x0006 }
5137 enum : uint { APPLICATION_VERIFIER_DOUBLE_FREE = 0x0007 }
5138 enum : uint { APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK = 0x0008 }
5139 enum : uint { APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP = 0x0009 }
5140 enum : uint { APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION = 0x000A }
5141 enum : uint { APPLICATION_VERIFIER_STACK_OVERFLOW = 0x000B }
5142
5143 enum : uint { APPLICATION_VERIFIER_TERMINATE_THREAD_CALL = 0x0100 }
5144
5145 enum : uint { APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK = 0x0200 }
5146 enum : uint { APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL = 0x0201 }
5147 enum : uint { APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP = 0x0202 }
5148 enum : uint { APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE = 0x0203 }
5149 enum : uint { APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY = 0x0204 }
5150 enum : uint { APPLICATION_VERIFIER_LOCK_CORRUPTED = 0x0205 }
5151 enum : uint { APPLICATION_VERIFIER_LOCK_INVALID_OWNER = 0x0206 }
5152 enum : uint { APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT = 0x0207 }
5153 enum : uint { APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT = 0x0208 }
5154 enum : uint { APPLICATION_VERIFIER_LOCK_OVER_RELEASED = 0x0209 }
5155 enum : uint { APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED = 0x0210 }
5156
5157 enum : uint { APPLICATION_VERIFIER_INVALID_HANDLE = 0x0300 }
5158
5159 // #define VERIFIER_STOP(Code, Msg, P1, S1, P2, S2, P3, S3, P4, S4) { RtlApplicationVerifierStop ((Code), (Msg), (ULONG_PTR)(P1),(S1), (ULONG_PTR)(P2),(S2), (ULONG_PTR)(P3),(S3), (ULONG_PTR)(P4),(S4)); }
5160
5161 extern(Windows) export VOID RtlApplicationVerifierStop(
5162 ULONG_PTR Code,
5163 PCHAR Message,
5164 ULONG_PTR Param1, PCHAR Description1,
5165 ULONG_PTR Param2, PCHAR Description2,
5166 ULONG_PTR Param3, PCHAR Description3,
5167 ULONG_PTR Param4, PCHAR Description4);
5168
5169 extern(Windows) alias LONG function( _EXCEPTION_POINTERS *ExceptionInfo ) PVECTORED_EXCEPTION_HANDLER;
5170 enum : uint { SEF_DACL_AUTO_INHERIT = 0x01 }
5171 enum : uint { SEF_SACL_AUTO_INHERIT = 0x02 }
5172 enum : uint { SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT = 0x04 }
5173 enum : uint { SEF_AVOID_PRIVILEGE_CHECK = 0x08 }
5174 enum : uint { SEF_AVOID_OWNER_CHECK = 0x10 }
5175 enum : uint { SEF_DEFAULT_OWNER_FROM_PARENT = 0x20 }
5176 enum : uint { SEF_DEFAULT_GROUP_FROM_PARENT = 0x40 }
5177
5178 alias int _HEAP_INFORMATION_CLASS;
5179 enum {
5180
5181 HeapCompatibilityInformation,
5182
5183 }
5184 alias _HEAP_INFORMATION_CLASS HEAP_INFORMATION_CLASS;
5185
5186 extern(Windows) export DWORD RtlSetHeapInformation(
5187 PVOID HeapHandle,
5188 HEAP_INFORMATION_CLASS HeapInformationClass,
5189 PVOID HeapInformation ,
5190 SIZE_T HeapInformationLength );
5191
5192 extern(Windows) export DWORD RtlQueryHeapInformation(
5193 PVOID HeapHandle,
5194 HEAP_INFORMATION_CLASS HeapInformationClass,
5195 PVOID HeapInformation ,
5196 SIZE_T HeapInformationLength ,
5197 PSIZE_T ReturnLength );
5198
5199 enum : uint { WT_EXECUTEDEFAULT = 0x00000000 }
5200 enum : uint { WT_EXECUTEINIOTHREAD = 0x00000001 }
5201 enum : uint { WT_EXECUTEINUITHREAD = 0x00000002 }
5202 enum : uint { WT_EXECUTEINWAITTHREAD = 0x00000004 }
5203 enum : uint { WT_EXECUTEONLYONCE = 0x00000008 }
5204 enum : uint { WT_EXECUTEINTIMERTHREAD = 0x00000020 }
5205 enum : uint { WT_EXECUTELONGFUNCTION = 0x00000010 }
5206 enum : uint { WT_EXECUTEINPERSISTENTIOTHREAD = 0x00000040 }
5207 enum : uint { WT_EXECUTEINPERSISTENTTHREAD = 0x00000080 }
5208 // #define WT_SET_MAX_THREADPOOL_THREADS(Flags, Limit) ((Flags) |= (Limit)<<16)
5209 extern(Windows) alias VOID function(PVOID, BOOLEAN ) WAITORTIMERCALLBACKFUNC;
5210 extern(Windows) alias VOID function(PVOID ) WORKERCALLBACKFUNC;
5211 extern(Windows) alias VOID function(DWORD , PVOID, PVOID) APC_CALLBACK_FUNCTION;
5212 enum : uint { WT_EXECUTEINLONGTHREAD = 0x00000010 }
5213 enum : uint { WT_EXECUTEDELETEWAIT = 0x00000008 }
5214
5215 alias int _ACTIVATION_CONTEXT_INFO_CLASS;
5216 enum {
5217 ActivationContextBasicInformation = 1,
5218 ActivationContextDetailedInformation = 2,
5219 AssemblyDetailedInformationInActivationContext = 3,
5220 FileInformationInAssemblyOfAssemblyInActivationContext = 4,
5221 MaxActivationContextInfoClass,
5222
5223 AssemblyDetailedInformationInActivationContxt = 3,
5224 FileInformationInAssemblyOfAssemblyInActivationContxt = 4,
5225 }
5226 alias _ACTIVATION_CONTEXT_INFO_CLASS ACTIVATION_CONTEXT_INFO_CLASS;
5227
5228 alias ACTIVATION_CONTEXT_INFO_CLASS ACTIVATIONCONTEXTINFOCLASS;
5229
5230 struct _ACTIVATION_CONTEXT_QUERY_INDEX {
5231 DWORD ulAssemblyIndex;
5232 DWORD ulFileIndexInAssembly;
5233 }
5234 alias _ACTIVATION_CONTEXT_QUERY_INDEX ACTIVATION_CONTEXT_QUERY_INDEX;
5235 alias _ACTIVATION_CONTEXT_QUERY_INDEX* PACTIVATION_CONTEXT_QUERY_INDEX;
5236
5237 alias _ACTIVATION_CONTEXT_QUERY_INDEX* PCACTIVATION_CONTEXT_QUERY_INDEX;
5238
5239 enum : uint { ACTIVATION_CONTEXT_PATH_TYPE_NONE = 1 }
5240 enum : uint { ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE = 2 }
5241 enum : uint { ACTIVATION_CONTEXT_PATH_TYPE_URL = 3 }
5242 enum : uint { ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF = 4 }
5243
5244 struct _ASSEMBLY_FILE_DETAILED_INFORMATION {
5245 DWORD ulFlags;
5246 DWORD ulFilenameLength;
5247 DWORD ulPathLength;
5248 PCWSTR lpFileName;
5249 PCWSTR lpFilePath;
5250 }
5251 alias _ASSEMBLY_FILE_DETAILED_INFORMATION ASSEMBLY_FILE_DETAILED_INFORMATION;
5252 alias _ASSEMBLY_FILE_DETAILED_INFORMATION* PASSEMBLY_FILE_DETAILED_INFORMATION;
5253
5254 alias ASSEMBLY_FILE_DETAILED_INFORMATION* PCASSEMBLY_FILE_DETAILED_INFORMATION;
5255
5256 alias _ASSEMBLY_FILE_DETAILED_INFORMATION _ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION;
5257 alias ASSEMBLY_FILE_DETAILED_INFORMATION ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION;
5258 alias PASSEMBLY_FILE_DETAILED_INFORMATION PASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION;
5259 alias PCASSEMBLY_FILE_DETAILED_INFORMATION PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION;
5260
5261 struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION {
5262 DWORD ulFlags;
5263 DWORD ulEncodedAssemblyIdentityLength;
5264 DWORD ulManifestPathType;
5265 DWORD ulManifestPathLength;
5266 LARGE_INTEGER liManifestLastWriteTime;
5267 DWORD ulPolicyPathType;
5268 DWORD ulPolicyPathLength;
5269 LARGE_INTEGER liPolicyLastWriteTime;
5270 DWORD ulMetadataSatelliteRosterIndex;
5271 DWORD ulManifestVersionMajor;
5272 DWORD ulManifestVersionMinor;
5273 DWORD ulPolicyVersionMajor;
5274 DWORD ulPolicyVersionMinor;
5275 DWORD ulAssemblyDirectoryNameLength;
5276
5277 PCWSTR lpAssemblyEncodedAssemblyIdentity;
5278 PCWSTR lpAssemblyManifestPath;
5279 PCWSTR lpAssemblyPolicyPath;
5280 PCWSTR lpAssemblyDirectoryName;
5281 DWORD ulFileCount;
5282 }
5283 alias _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
5284 alias _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
5285
5286 alias _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
5287
5288 struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION {
5289 DWORD dwFlags;
5290 DWORD ulFormatVersion;
5291 DWORD ulAssemblyCount;
5292 DWORD ulRootManifestPathType;
5293 DWORD ulRootManifestPathChars;
5294 DWORD ulRootConfigurationPathType;
5295 DWORD ulRootConfigurationPathChars;
5296 DWORD ulAppDirPathType;
5297 DWORD ulAppDirPathChars;
5298 PCWSTR lpRootManifestPath;
5299 PCWSTR lpRootConfigurationPath;
5300 PCWSTR lpAppDirPath;
5301 }
5302 alias _ACTIVATION_CONTEXT_DETAILED_INFORMATION ACTIVATION_CONTEXT_DETAILED_INFORMATION;
5303 alias _ACTIVATION_CONTEXT_DETAILED_INFORMATION* PACTIVATION_CONTEXT_DETAILED_INFORMATION;
5304
5305 alias _ACTIVATION_CONTEXT_DETAILED_INFORMATION* PCACTIVATION_CONTEXT_DETAILED_INFORMATION;
5306
5307 enum : uint { DLL_PROCESS_ATTACH = 1 }
5308 enum : uint { DLL_THREAD_ATTACH = 2 }
5309 enum : uint { DLL_THREAD_DETACH = 3 }
5310 enum : uint { DLL_PROCESS_DETACH = 0 }
5311 enum : uint { DLL_PROCESS_VERIFIER = 4 }
5312
5313 enum : uint { EVENTLOG_SEQUENTIAL_READ = 0x0001 }
5314 enum : uint { EVENTLOG_SEEK_READ = 0x0002 }
5315 enum : uint { EVENTLOG_FORWARDS_READ = 0x0004 }
5316 enum : uint { EVENTLOG_BACKWARDS_READ = 0x0008 }
5317
5318 enum : uint { EVENTLOG_SUCCESS = 0x0000 }
5319 enum : uint { EVENTLOG_ERROR_TYPE = 0x0001 }
5320 enum : uint { EVENTLOG_WARNING_TYPE = 0x0002 }
5321 enum : uint { EVENTLOG_INFORMATION_TYPE = 0x0004 }
5322 enum : uint { EVENTLOG_AUDIT_SUCCESS = 0x0008 }
5323 enum : uint { EVENTLOG_AUDIT_FAILURE = 0x0010 }
5324
5325 enum : uint { EVENTLOG_START_PAIRED_EVENT = 0x0001 }
5326 enum : uint { EVENTLOG_END_PAIRED_EVENT = 0x0002 }
5327 enum : uint { EVENTLOG_END_ALL_PAIRED_EVENTS = 0x0004 }
5328 enum : uint { EVENTLOG_PAIRED_EVENT_ACTIVE = 0x0008 }
5329 enum : uint { EVENTLOG_PAIRED_EVENT_INACTIVE = 0x0010 }
5330
5331 struct _EVENTLOGRECORD {
5332 DWORD Length;
5333 DWORD Reserved;
5334 DWORD RecordNumber;
5335 DWORD TimeGenerated;
5336 DWORD TimeWritten;
5337 DWORD EventID;
5338 WORD EventType;
5339 WORD NumStrings;
5340 WORD EventCategory;
5341 WORD ReservedFlags;
5342 DWORD ClosingRecordNumber;
5343 DWORD StringOffset;
5344 DWORD UserSidLength;
5345 DWORD UserSidOffset;
5346 DWORD DataLength;
5347 DWORD DataOffset;
5348
5349 }
5350 alias _EVENTLOGRECORD EVENTLOGRECORD;
5351 alias _EVENTLOGRECORD* PEVENTLOGRECORD;
5352
5353 enum : uint { MAXLOGICALLOGNAMESIZE = 256 }
5354
5355 // #if _MSC_VER >= 1200
5356 // #pragma warning(push)
5357 // #endif
5358 // #pragma warning(disable : 4200)
5359 struct _EVENTSFORLOGFILE {
5360 DWORD ulSize;
5361 WCHAR szLogicalLogFile[MAXLOGICALLOGNAMESIZE];
5362 DWORD ulNumRecords;
5363 EVENTLOGRECORD pEventLogRecords[];
5364 }
5365 alias _EVENTSFORLOGFILE EVENTSFORLOGFILE;
5366 alias _EVENTSFORLOGFILE* PEVENTSFORLOGFILE;
5367
5368 struct _PACKEDEVENTINFO {
5369 DWORD ulSize;
5370 DWORD ulNumEventsForLogFile;
5371 DWORD ulOffsets[];
5372 }
5373 alias _PACKEDEVENTINFO PACKEDEVENTINFO;
5374 alias _PACKEDEVENTINFO* PPACKEDEVENTINFO;
5375
5376 // #if _MSC_VER >= 1200
5377 // #pragma warning(pop)
5378 // #else
5379 // #...
5380 // #endif
5381
5382 enum : uint { KEY_QUERY_VALUE = 0x0001 }
5383 enum : uint { KEY_SET_VALUE = 0x0002 }
5384 enum : uint { KEY_CREATE_SUB_KEY = 0x0004 }
5385 enum : uint { KEY_ENUMERATE_SUB_KEYS = 0x0008 }
5386 enum : uint { KEY_NOTIFY = 0x0010 }
5387 enum : uint { KEY_CREATE_LINK = 0x0020 }
5388 enum : uint { KEY_WOW64_32KEY = 0x0200 }
5389 enum : uint { KEY_WOW64_64KEY = 0x0100 }
5390 enum : uint { KEY_WOW64_RES = 0x0300 }
5391
5392 enum : uint { KEY_READ = (STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~SYNCHRONIZE) }
5393
5394 enum : uint { KEY_WRITE = (STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE) }
5395
5396 enum : uint { KEY_EXECUTE = KEY_READ & ~SYNCHRONIZE }
5397
5398 enum : uint { KEY_ALL_ACCESS = (STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) & (~SYNCHRONIZE) }
5399
5400 enum : uint { REG_OPTION_RESERVED = 0x00000000 }
5401
5402 enum : uint { REG_OPTION_NON_VOLATILE = 0x00000000 }
5403
5404 enum : uint { REG_OPTION_VOLATILE = 0x00000001 }
5405
5406 enum : uint { REG_OPTION_CREATE_LINK = 0x00000002 }
5407
5408 enum : uint { REG_OPTION_BACKUP_RESTORE = 0x00000004 }
5409
5410 enum : uint { REG_OPTION_OPEN_LINK = 0x00000008 }
5411
5412 enum : uint { REG_LEGAL_OPTION = REG_OPTION_RESERVED | REG_OPTION_NON_VOLATILE | REG_OPTION_VOLATILE | REG_OPTION_CREATE_LINK | REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK }
5413
5414 enum : uint { REG_CREATED_NEW_KEY = 0x00000001 }
5415 enum : uint { REG_OPENED_EXISTING_KEY = 0x00000002 }
5416
5417 enum : uint { REG_STANDARD_FORMAT = 1 }
5418 enum : uint { REG_LATEST_FORMAT = 2 }
5419 enum : uint { REG_NO_COMPRESSION = 4 }
5420
5421 enum : uint { REG_WHOLE_HIVE_VOLATILE = 0x00000001 }
5422 enum : uint { REG_REFRESH_HIVE = 0x00000002 }
5423 enum : uint { REG_NO_LAZY_FLUSH = 0x00000004 }
5424 enum : uint { REG_FORCE_RESTORE = 0x00000008 }
5425
5426 enum : uint { REG_NOTIFY_CHANGE_NAME = 0x00000001 }
5427 enum : uint { REG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002 }
5428 enum : uint { REG_NOTIFY_CHANGE_LAST_SET = 0x00000004 }
5429 enum : uint { REG_NOTIFY_CHANGE_SECURITY = 0x00000008 }
5430
5431 enum : uint { REG_LEGAL_CHANGE_FILTER = REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_ATTRIBUTES | REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_CHANGE_SECURITY }
5432
5433 enum : uint { REG_NONE = 0 }
5434 enum : uint { REG_SZ = 1 }
5435 enum : uint { REG_EXPAND_SZ = 2 }
5436
5437 enum : uint { REG_BINARY = 3 }
5438 enum : uint { REG_DWORD = 4 }
5439 enum : uint { REG_DWORD_LITTLE_ENDIAN = 4 }
5440 enum : uint { REG_DWORD_BIG_ENDIAN = 5 }
5441 enum : uint { REG_LINK = 6 }
5442 enum : uint { REG_MULTI_SZ = 7 }
5443 enum : uint { REG_RESOURCE_LIST = 8 }
5444 enum : uint { REG_FULL_RESOURCE_DESCRIPTOR = 9 }
5445 enum : uint { REG_RESOURCE_REQUIREMENTS_LIST = 10 }
5446 enum : uint { REG_QWORD = 11 }
5447 enum : uint { REG_QWORD_LITTLE_ENDIAN = 11 }
5448
5449 enum : uint { SERVICE_KERNEL_DRIVER = 0x00000001 }
5450 enum : uint { SERVICE_FILE_SYSTEM_DRIVER = 0x00000002 }
5451 enum : uint { SERVICE_ADAPTER = 0x00000004 }
5452 enum : uint { SERVICE_RECOGNIZER_DRIVER = 0x00000008 }
5453
5454 enum : uint { SERVICE_DRIVER = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER }
5455
5456 enum : uint { SERVICE_WIN32_OWN_PROCESS = 0x00000010 }
5457 enum : uint { SERVICE_WIN32_SHARE_PROCESS = 0x00000020 }
5458 enum : uint { SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS }
5459
5460 enum : uint { SERVICE_INTERACTIVE_PROCESS = 0x00000100 }
5461
5462 enum : uint { SERVICE_TYPE_ALL = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS }
5463
5464 enum : uint { SERVICE_BOOT_START = 0x00000000 }
5465 enum : uint { SERVICE_SYSTEM_START = 0x00000001 }
5466 enum : uint { SERVICE_AUTO_START = 0x00000002 }
5467 enum : uint { SERVICE_DEMAND_START = 0x00000003 }
5468 enum : uint { SERVICE_DISABLED = 0x00000004 }
5469
5470 enum : uint { SERVICE_ERROR_IGNORE = 0x00000000 }
5471 enum : uint { SERVICE_ERROR_NORMAL = 0x00000001 }
5472 enum : uint { SERVICE_ERROR_SEVERE = 0x00000002 }
5473 enum : uint { SERVICE_ERROR_CRITICAL = 0x00000003 }
5474
5475 alias int _CM_SERVICE_NODE_TYPE;
5476 enum {
5477 DriverType = SERVICE_KERNEL_DRIVER,
5478 FileSystemType = SERVICE_FILE_SYSTEM_DRIVER,
5479 Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS,
5480 Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS,
5481 AdapterType = SERVICE_ADAPTER,
5482 RecognizerType = SERVICE_RECOGNIZER_DRIVER,
5483 }
5484 alias _CM_SERVICE_NODE_TYPE SERVICE_NODE_TYPE;
5485
5486 alias int _CM_SERVICE_LOAD_TYPE;
5487 enum {
5488 BootLoad = SERVICE_BOOT_START,
5489 SystemLoad = SERVICE_SYSTEM_START,
5490 AutoLoad = SERVICE_AUTO_START,
5491 DemandLoad = SERVICE_DEMAND_START,
5492 DisableLoad = SERVICE_DISABLED,
5493 }
5494 alias _CM_SERVICE_LOAD_TYPE SERVICE_LOAD_TYPE;
5495
5496 alias int _CM_ERROR_CONTROL_TYPE;
5497 enum {
5498 IgnoreError = SERVICE_ERROR_IGNORE,
5499 NormalError = SERVICE_ERROR_NORMAL,
5500 SevereError = SERVICE_ERROR_SEVERE,
5501 CriticalError = SERVICE_ERROR_CRITICAL,
5502 }
5503 alias _CM_ERROR_CONTROL_TYPE SERVICE_ERROR_TYPE;
5504
5505 enum : uint { TAPE_ERASE_SHORT = 0 }
5506 enum : uint { TAPE_ERASE_LONG = 1 }
5507
5508 struct _TAPE_ERASE {
5509 DWORD Type;
5510 BOOLEAN Immediate;
5511 }
5512 alias _TAPE_ERASE TAPE_ERASE;
5513 alias _TAPE_ERASE* PTAPE_ERASE;
5514
5515 enum : uint { TAPE_LOAD = 0 }
5516 enum : uint { TAPE_UNLOAD = 1 }
5517 enum : uint { TAPE_TENSION = 2 }
5518 enum : uint { TAPE_LOCK = 3 }
5519 enum : uint { TAPE_UNLOCK = 4 }
5520 enum : uint { TAPE_FORMAT = 5 }
5521
5522 struct _TAPE_PREPARE {
5523 DWORD Operation;
5524 BOOLEAN Immediate;
5525 }
5526 alias _TAPE_PREPARE TAPE_PREPARE;
5527 alias _TAPE_PREPARE* PTAPE_PREPARE;
5528
5529 enum : uint { TAPE_SETMARKS = 0 }
5530 enum : uint { TAPE_FILEMARKS = 1 }
5531 enum : uint { TAPE_SHORT_FILEMARKS = 2 }
5532 enum : uint { TAPE_LONG_FILEMARKS = 3 }
5533
5534 struct _TAPE_WRITE_MARKS {
5535 DWORD Type;
5536 DWORD Count;
5537 BOOLEAN Immediate;
5538 }
5539 alias _TAPE_WRITE_MARKS TAPE_WRITE_MARKS;
5540 alias _TAPE_WRITE_MARKS* PTAPE_WRITE_MARKS;
5541
5542 enum : uint { TAPE_ABSOLUTE_POSITION = 0 }
5543 enum : uint { TAPE_LOGICAL_POSITION = 1 }
5544 enum : uint { TAPE_PSEUDO_LOGICAL_POSITION = 2 }
5545
5546 struct _TAPE_GET_POSITION {
5547 DWORD Type;
5548 DWORD Partition;
5549 LARGE_INTEGER Offset;
5550 }
5551 alias _TAPE_GET_POSITION TAPE_GET_POSITION;
5552 alias _TAPE_GET_POSITION* PTAPE_GET_POSITION;
5553
5554 enum : uint { TAPE_REWIND = 0 }
5555 enum : uint { TAPE_ABSOLUTE_BLOCK = 1 }
5556 enum : uint { TAPE_LOGICAL_BLOCK = 2 }
5557 enum : uint { TAPE_PSEUDO_LOGICAL_BLOCK = 3 }
5558 enum : uint { TAPE_SPACE_END_OF_DATA = 4 }
5559 enum : uint { TAPE_SPACE_RELATIVE_BLOCKS = 5 }
5560 enum : uint { TAPE_SPACE_FILEMARKS = 6 }
5561 enum : uint { TAPE_SPACE_SEQUENTIAL_FMKS = 7 }
5562 enum : uint { TAPE_SPACE_SETMARKS = 8 }
5563 enum : uint { TAPE_SPACE_SEQUENTIAL_SMKS = 9 }
5564
5565 struct _TAPE_SET_POSITION {
5566 DWORD Method;
5567 DWORD Partition;
5568 LARGE_INTEGER Offset;
5569 BOOLEAN Immediate;
5570 }
5571 alias _TAPE_SET_POSITION TAPE_SET_POSITION;
5572 alias _TAPE_SET_POSITION* PTAPE_SET_POSITION;
5573
5574 enum : uint { TAPE_DRIVE_FIXED = 0x00000001 }
5575 enum : uint { TAPE_DRIVE_SELECT = 0x00000002 }
5576 enum : uint { TAPE_DRIVE_INITIATOR = 0x00000004 }
5577
5578 enum : uint { TAPE_DRIVE_ERASE_SHORT = 0x00000010 }
5579 enum : uint { TAPE_DRIVE_ERASE_LONG = 0x00000020 }
5580 enum : uint { TAPE_DRIVE_ERASE_BOP_ONLY = 0x00000040 }
5581 enum : uint { TAPE_DRIVE_ERASE_IMMEDIATE = 0x00000080 }
5582
5583 enum : uint { TAPE_DRIVE_TAPE_CAPACITY = 0x00000100 }
5584 enum : uint { TAPE_DRIVE_TAPE_REMAINING = 0x00000200 }
5585 enum : uint { TAPE_DRIVE_FIXED_BLOCK = 0x00000400 }
5586 enum : uint { TAPE_DRIVE_VARIABLE_BLOCK = 0x00000800 }
5587
5588 enum : uint { TAPE_DRIVE_WRITE_PROTECT = 0x00001000 }
5589 enum : uint { TAPE_DRIVE_EOT_WZ_SIZE = 0x00002000 }
5590
5591 enum : uint { TAPE_DRIVE_ECC = 0x00010000 }
5592 enum : uint { TAPE_DRIVE_COMPRESSION = 0x00020000 }
5593 enum : uint { TAPE_DRIVE_PADDING = 0x00040000 }
5594 enum : uint { TAPE_DRIVE_REPORT_SMKS = 0x00080000 }
5595
5596 enum : uint { TAPE_DRIVE_GET_ABSOLUTE_BLK = 0x00100000 }
5597 enum : uint { TAPE_DRIVE_GET_LOGICAL_BLK = 0x00200000 }
5598 enum : uint { TAPE_DRIVE_SET_EOT_WZ_SIZE = 0x00400000 }
5599
5600 enum : uint { TAPE_DRIVE_EJECT_MEDIA = 0x01000000 }
5601 enum : uint { TAPE_DRIVE_CLEAN_REQUESTS = 0x02000000 }
5602 enum : uint { TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000 }
5603
5604 enum : uint { TAPE_DRIVE_RESERVED_BIT = 0x80000000 }
5605
5606 enum : uint { TAPE_DRIVE_LOAD_UNLOAD = 0x80000001 }
5607 enum : uint { TAPE_DRIVE_TENSION = 0x80000002 }
5608 enum : uint { TAPE_DRIVE_LOCK_UNLOCK = 0x80000004 }
5609 enum : uint { TAPE_DRIVE_REWIND_IMMEDIATE = 0x80000008 }
5610
5611 enum : uint { TAPE_DRIVE_SET_BLOCK_SIZE = 0x80000010 }
5612 enum : uint { TAPE_DRIVE_LOAD_UNLD_IMMED = 0x80000020 }
5613 enum : uint { TAPE_DRIVE_TENSION_IMMED = 0x80000040 }
5614 enum : uint { TAPE_DRIVE_LOCK_UNLK_IMMED = 0x80000080 }
5615
5616 enum : uint { TAPE_DRIVE_SET_ECC = 0x80000100 }
5617 enum : uint { TAPE_DRIVE_SET_COMPRESSION = 0x80000200 }
5618 enum : uint { TAPE_DRIVE_SET_PADDING = 0x80000400 }
5619 enum : uint { TAPE_DRIVE_SET_REPORT_SMKS = 0x80000800 }
5620
5621 enum : uint { TAPE_DRIVE_ABSOLUTE_BLK = 0x80001000 }
5622 enum : uint { TAPE_DRIVE_ABS_BLK_IMMED = 0x80002000 }
5623 enum : uint { TAPE_DRIVE_LOGICAL_BLK = 0x80004000 }
5624 enum : uint { TAPE_DRIVE_LOG_BLK_IMMED = 0x80008000 }
5625
5626 enum : uint { TAPE_DRIVE_END_OF_DATA = 0x80010000 }
5627 enum : uint { TAPE_DRIVE_RELATIVE_BLKS = 0x80020000 }
5628 enum : uint { TAPE_DRIVE_FILEMARKS = 0x80040000 }
5629 enum : uint { TAPE_DRIVE_SEQUENTIAL_FMKS = 0x80080000 }
5630
5631 enum : uint { TAPE_DRIVE_SETMARKS = 0x80100000 }
5632 enum : uint { TAPE_DRIVE_SEQUENTIAL_SMKS = 0x80200000 }
5633 enum : uint { TAPE_DRIVE_REVERSE_POSITION = 0x80400000 }
5634 enum : uint { TAPE_DRIVE_SPACE_IMMEDIATE = 0x80800000 }
5635
5636 enum : uint { TAPE_DRIVE_WRITE_SETMARKS = 0x81000000 }
5637 enum : uint { TAPE_DRIVE_WRITE_FILEMARKS = 0x82000000 }
5638 enum : uint { TAPE_DRIVE_WRITE_SHORT_FMKS = 0x84000000 }
5639 enum : uint { TAPE_DRIVE_WRITE_LONG_FMKS = 0x88000000 }
5640
5641 enum : uint { TAPE_DRIVE_WRITE_MARK_IMMED = 0x90000000 }
5642 enum : uint { TAPE_DRIVE_FORMAT = 0xA0000000 }
5643 enum : uint { TAPE_DRIVE_FORMAT_IMMEDIATE = 0xC0000000 }
5644 enum : uint { TAPE_DRIVE_HIGH_FEATURES = 0x80000000 }
5645
5646 struct _TAPE_GET_DRIVE_PARAMETERS {
5647 BOOLEAN ECC;
5648 BOOLEAN Compression;
5649 BOOLEAN DataPadding;
5650 BOOLEAN ReportSetmarks;
5651 DWORD DefaultBlockSize;
5652 DWORD MaximumBlockSize;
5653 DWORD MinimumBlockSize;
5654 DWORD MaximumPartitionCount;
5655 DWORD FeaturesLow;
5656 DWORD FeaturesHigh;
5657 DWORD EOTWarningZoneSize;
5658 }
5659 alias _TAPE_GET_DRIVE_PARAMETERS TAPE_GET_DRIVE_PARAMETERS;
5660 alias _TAPE_GET_DRIVE_PARAMETERS* PTAPE_GET_DRIVE_PARAMETERS;
5661
5662 struct _TAPE_SET_DRIVE_PARAMETERS {
5663 BOOLEAN ECC;
5664 BOOLEAN Compression;
5665 BOOLEAN DataPadding;
5666 BOOLEAN ReportSetmarks;
5667 DWORD EOTWarningZoneSize;
5668 }
5669 alias _TAPE_SET_DRIVE_PARAMETERS TAPE_SET_DRIVE_PARAMETERS;
5670 alias _TAPE_SET_DRIVE_PARAMETERS* PTAPE_SET_DRIVE_PARAMETERS;
5671
5672 struct _TAPE_GET_MEDIA_PARAMETERS {
5673 LARGE_INTEGER Capacity;
5674 LARGE_INTEGER Remaining;
5675 DWORD BlockSize;
5676 DWORD PartitionCount;
5677 BOOLEAN WriteProtected;
5678 }
5679 alias _TAPE_GET_MEDIA_PARAMETERS TAPE_GET_MEDIA_PARAMETERS;
5680 alias _TAPE_GET_MEDIA_PARAMETERS* PTAPE_GET_MEDIA_PARAMETERS;
5681
5682 struct _TAPE_SET_MEDIA_PARAMETERS {
5683 DWORD BlockSize;
5684 }
5685 alias _TAPE_SET_MEDIA_PARAMETERS TAPE_SET_MEDIA_PARAMETERS;
5686 alias _TAPE_SET_MEDIA_PARAMETERS* PTAPE_SET_MEDIA_PARAMETERS;
5687
5688 enum : uint { TAPE_FIXED_PARTITIONS = 0 }
5689 enum : uint { TAPE_SELECT_PARTITIONS = 1 }
5690 enum : uint { TAPE_INITIATOR_PARTITIONS = 2 }
5691
5692 struct _TAPE_CREATE_PARTITION {
5693 DWORD Method;
5694 DWORD Count;
5695 DWORD Size;
5696 }
5697 alias _TAPE_CREATE_PARTITION TAPE_CREATE_PARTITION;
5698 alias _TAPE_CREATE_PARTITION* PTAPE_CREATE_PARTITION;
5699
5700 enum : uint { TAPE_QUERY_DRIVE_PARAMETERS = 0 }
5701 enum : uint { TAPE_QUERY_MEDIA_CAPACITY = 1 }
5702 enum : uint { TAPE_CHECK_FOR_DRIVE_PROBLEM = 2 }
5703 enum : uint { TAPE_QUERY_IO_ERROR_DATA = 3 }
5704 enum : uint { TAPE_QUERY_DEVICE_ERROR_DATA = 4 }
5705
5706 struct _TAPE_WMI_OPERATIONS {
5707 DWORD Method;
5708 DWORD DataBufferSize;
5709 PVOID DataBuffer;
5710 }
5711 alias _TAPE_WMI_OPERATIONS TAPE_WMI_OPERATIONS;
5712 alias _TAPE_WMI_OPERATIONS* PTAPE_WMI_OPERATIONS;
5713
5714 alias int _TAPE_DRIVE_PROBLEM_TYPE;
5715 enum {
5716 TapeDriveProblemNone,
5717 TapeDriveReadWriteWarning,
5718 TapeDriveReadWriteError,
5719 TapeDriveReadWarning,
5720 TapeDriveWriteWarning,
5721 TapeDriveReadError,
5722 TapeDriveWriteError,
5723 TapeDriveHardwareError,
5724 TapeDriveUnsupportedMedia,
5725 TapeDriveScsiConnectionError,
5726 TapeDriveTimetoClean,
5727 TapeDriveCleanDriveNow,
5728 TapeDriveMediaLifeExpired,
5729 TapeDriveSnappedTape,
5730 }
5731 alias _TAPE_DRIVE_PROBLEM_TYPE TAPE_DRIVE_PROBLEM_TYPE;
5732
5733 // #if defined(_M_AMD64) && !defined(__midl)
5734
5735 // ...
5736
5737 // ...
5738
5739 // ...
5740
5741 // ...
5742
5743 // ...
5744
5745 // ...
5746
5747 // #endif // _M_AMD64 && !defined(__midl)
5748
5749 // #if (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWARE_ENABLED // winnt_only
5750 enum : uint { ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1 }
5751 enum : uint { ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION = 2 }
5752 enum : uint { ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION = 3 }
5753 enum : uint { ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION = 4 }
5754 enum : uint { ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION = 5 }
5755 enum : uint { ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION = 6 }
5756 enum : uint { ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION = 7 }
5757 enum : uint { ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE = 8 }
5758 // #endif // winnt_only
5759
5760 // #ifdef __cplusplus
5761 // }
5762 // #endif
5763
5764 // #endif /* _WINNT_ */
5765