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