Artifact Content

Not logged in

Artifact 5400bf8ccf4a147f5d2708de64a6ff4ff0ffbac9


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