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