Artifact Content

Not logged in

Artifact 31fd23d74d91fa9463c18cee61e424bc75c6a6d4


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