Changeset 216

Show
Ignore:
Timestamp:
10/10/07 15:57:16 (4 years ago)
Author:
smjg
Message:

winnt.d mostly done; still need to update to MinGW 3.10 and stuff

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/win32/dde.d

    r183 r216  
    3232    ubyte _bf; 
    3333 
    34     ubyte reserved() { return cast(ubyte)(_bf & 0x3F); } 
    35     bool  fBusy()    { return cast(bool) (_bf & 0x40); } 
    36     bool  fAck()     { return cast(bool) (_bf & 0x80); } 
     34    ubyte reserved() { return cast(ubyte) (_bf & 0x3F); } 
     35    bool  fBusy()    { return cast(bool) (_bf & 0x40); } 
     36    bool  fAck()     { return cast(bool) (_bf & 0x80); } 
    3737 
    3838    ubyte reserved(ubyte r) { 
    39         _bf = cast(ubyte)((_bf & ~0x3F) | (r & 0x3F)); 
    40         return r
    41     } 
    42  
    43     bool fBusy(bool f) { _bf = cast(ubyte)((_bf & ~0x40) | (f << 6)); return f; } 
    44     bool fAck(bool f)  { _bf = cast(ubyte)((_bf & ~0x80) | (f << 7)); return f; } 
     39        _bf = cast(ubyte) ((_bf & ~0x3F) | (r & 0x3F)); 
     40        return r & 0x3F
     41    } 
     42 
     43    bool fBusy(bool f) { _bf = cast(ubyte) ((_bf & ~0x40) | (f << 6)); return f; } 
     44    bool fAck(bool f)  { _bf = cast(ubyte) ((_bf & ~0x80) | (f << 7)); return f; } 
    4545} 
    4646 
     
    4949    short  cfFormat; 
    5050 
    51     ushort reserved()  { return cast(ushort)(_bf & 0x3FFF); } 
    52     bool   fDeferUpd() { return cast(bool) (_bf & 0x4000); } 
    53     bool   fAckReq()   { return cast(bool) (_bf & 0x8000); } 
     51    ushort reserved()  { return cast(ushort) (_bf & 0x3FFF); } 
     52    bool   fDeferUpd() { return cast(bool)   (_bf & 0x4000); } 
     53    bool   fAckReq()   { return cast(bool)   (_bf & 0x8000); } 
    5454 
    5555    ushort reserved(ushort r) { 
    56         _bf = cast(ushort)((_bf & ~0x3FFF) | (r & 0x3FFF)); 
    57         return r
    58     } 
    59  
    60     bool   fDeferUpd(bool f) { _bf = cast(ushort)((_bf & ~0x4000) | (f << 14)); return f; } 
    61     bool   fAckReq(bool f)   { _bf = cast(ushort)((_bf & ~0x8000) | (f << 15)); return f; } 
     56        _bf = cast(ushort) ((_bf & ~0x3FFF) | (r & 0x3FFF)); 
     57        return r & 0x3FFF
     58    } 
     59 
     60    bool   fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } 
     61    bool   fAckReq(bool f)   { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } 
    6262} 
    6363 
     
    6767    byte   _Value; 
    6868 
    69     ushort unused() { return cast(ushort)(_bf & 0x0FFF); } 
    70     bool   fResponse() { return cast(bool) (_bf & 0x1000); } 
    71     bool   fRelease() { return cast(bool) (_bf & 0x2000); } 
    72     bool   reserved() { return cast(bool) (_bf & 0x4000); } 
    73     bool   fAckReq() { return cast(bool) (_bf & 0x8000); } 
     69    ushort unused()    { return cast(ushort) (_bf & 0x0FFF); } 
     70    bool   fResponse() { return cast(bool)   (_bf & 0x1000); } 
     71    bool   fRelease()  { return cast(bool)   (_bf & 0x2000); } 
     72    bool   reserved()  { return cast(bool)   (_bf & 0x4000); } 
     73    bool   fAckReq()   { return cast(bool)   (_bf & 0x8000); } 
     74 
     75    byte*  Value() { return &_Value; } 
    7476 
    7577    ushort unused(ushort r) { 
    76         _bf = cast(ushort)((_bf & ~0x0FFF) | (r & 0x0FFF)); 
    77         return r; 
    78     } 
     78        _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); 
     79        return r & 0x0FFF; 
     80    } 
     81 
     82    bool   fResponse(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } 
     83    bool   fRelease(bool f)  { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } 
     84    bool   reserved(bool f)  { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } 
     85    bool   fAckReq(bool f)   { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } 
     86
     87 
     88struct DDEPOKE { 
     89    ushort _bf; 
     90    short  cfFormat; 
     91    byte   _Value; 
     92 
     93    ushort unused()    { return cast(ushort) (_bf & 0x1FFF); } 
     94    bool   fRelease()  { return cast(bool)   (_bf & 0x2000); } 
     95    ubyte  fReserved() { return cast(ubyte)  ((_bf & 0xC000) >>> 14); } 
    7996 
    8097    byte*  Value() { return &_Value; } 
    8198 
    82     bool   fResponse(bool f) { _bf = cast(ushort)((_bf & ~0x1000) | (f << 12)); return f; } 
    83     bool   fRelease(bool f)  { _bf = cast(ushort)((_bf & ~0x2000) | (f << 13)); return f; } 
    84     bool   reserved(bool f)  { _bf = cast(ushort)((_bf & ~0x4000) | (f << 14)); return f; } 
    85     bool   fAckReq(bool f)   { _bf = cast(ushort)((_bf & ~0x8000) | (f << 15)); return f; } 
    86 
    87  
    88 struct DDEPOKE { 
    89     ushort _bf; 
    90     short  cfFormat; 
    91     byte   _Value; 
    92  
    93     ushort unused()    { return cast(ushort)(_bf & 0x1FFF); } 
    94     bool   fRelease()  { return cast(bool) (_bf & 0x2000); } 
    95     ubyte  fReserved() { return cast(ubyte)((_bf & 0xC000) >>> 14); } 
     99    ushort unused(ushort u) { 
     100        _bf = cast(ushort) ((_bf & ~0x1FFF) | (u & 0x1FFF)); 
     101        return u & 0x1FFF; 
     102    } 
     103 
     104    bool   fRelease(bool f)   { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } 
     105    ubyte  fReserved(ubyte r) { _bf = cast(ushort) ((_bf & ~0xC000) | (r << 14)); return r; } 
     106
     107 
     108deprecated struct DDELN { 
     109    ushort _bf; 
     110    short  cfFormat; 
     111 
     112    ushort unused()    { return cast(ushort) (_bf & 0x1FFF); } 
     113    bool   fRelease()  { return cast(bool)   (_bf & 0x2000); } 
     114    bool   fDeferUpd() { return cast(bool)   (_bf & 0x4000); } 
     115    bool   fAckReq()   { return cast(bool)   (_bf & 0x8000); } 
    96116 
    97117    ushort unused(ushort u) { 
    98118        _bf = cast(ushort)((_bf & ~0x1FFF) | (u & 0x1FFF)); 
    99         return u; 
    100     } 
    101  
    102     byte*  Value() { return &_Value; } 
    103  
    104     bool   fRelease(bool f)   { _bf = cast(ushort)((_bf & ~0x2000) | (f << 13)); return f; } 
    105     ubyte  fReserved(ubyte r) { _bf = cast(ushort)((_bf & ~0xC000) | (r << 14)); return r; } 
    106 
    107  
    108 deprecated struct DDELN { 
    109     ushort _bf; 
    110     short  cfFormat; 
    111  
    112     ushort unused() { return cast(ushort)(_bf & 0x1FFF); } 
    113     bool   fRelease() { return cast(bool) (_bf & 0x2000); } 
    114     bool   fDeferUpd() { return cast(bool) (_bf & 0x4000); } 
    115     bool   fAckReq() { return cast(bool) (_bf & 0x8000); } 
    116  
    117     ushort unused(ushort u) { 
    118         _bf = cast(ushort)((_bf & ~0x1FFF) | (u & 0x1FFF)); 
    119         return u; 
    120     } 
    121  
    122     bool   fRelease(bool f) { _bf = cast(ushort)((_bf & ~0x2000) | (f << 13)); return f; } 
    123     bool   fDeferUpd(bool f) { _bf = cast(ushort)((_bf & ~0x4000) | (f << 14)); return f; } 
    124     bool   fAckReq(bool f) { _bf = cast(ushort)((_bf & ~0x8000) | (f << 15)); return f; } 
     119        return u & 0x1FFF; 
     120    } 
     121 
     122    bool   fRelease(bool f)  { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } 
     123    bool   fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } 
     124    bool   fAckReq(bool f)   { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } 
    125125} 
    126126 
     
    130130    byte   _rgb; 
    131131 
    132     ushort unused()    { return cast(ushort)(_bf & 0x0FFF); } 
    133     bool   fAck()      { return cast(bool) (_bf & 0x1000); } 
    134     bool   fRelease()  { return cast(bool) (_bf & 0x2000); } 
    135     bool   fReserved() { return cast(bool) (_bf & 0x4000); } 
    136     bool   fAckReq()   { return cast(bool) (_bf & 0x8000); } 
     132    ushort unused()    { return cast(ushort) (_bf & 0x0FFF); } 
     133    bool   fAck()      { return cast(bool)   (_bf & 0x1000); } 
     134    bool   fRelease()  { return cast(bool)   (_bf & 0x2000); } 
     135    bool   fReserved() { return cast(bool)   (_bf & 0x4000); } 
     136    bool   fAckReq()   { return cast(bool)   (_bf & 0x8000); } 
     137 
     138    byte*  rgb() { return &_rgb; } 
    137139 
    138140    ushort unused(ushort r) { 
    139         _bf = cast(ushort)((_bf & ~0x0FFF) | (r & 0x0FFF)); 
    140         return r; 
    141     } 
    142  
    143     byte*  rgb() { return &_rgb; } 
    144  
    145     bool   fAck(bool f)      { _bf = cast(ushort)((_bf & ~0x1000) | (f << 12)); return f; } 
    146     bool   fRelease(bool f)  { _bf = cast(ushort)((_bf & ~0x2000) | (f << 13)); return f; } 
    147     bool   fReserved(bool f) { _bf = cast(ushort)((_bf & ~0x4000) | (f << 14)); return f; } 
    148     bool   fAckReq(bool f)   { _bf = cast(ushort)((_bf & ~0x8000) | (f << 15)); return f; } 
     141        _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); 
     142        return r & 0x0FFF; 
     143    } 
     144 
     145    bool   fAck(bool f)      { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } 
     146    bool   fRelease(bool f)  { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } 
     147    bool   fReserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } 
     148    bool   fAckReq(bool f)   { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } 
    149149} 
    150150 
  • trunk/win32/winnt.d

    r215 r216  
    99\***********************************************************************/ 
    1010module win32.winnt; 
    11  
    12 // FIXME: Two bitfields and a macro need to be fixed. 
    13 // FIXME: clean up Windows version support 
    1411 
    1512public import win32.basetsd, win32.windef, win32.winerror; 
     
    5148alias wchar* LPCWCH, PCWCH, LPCWSTR, PCWSTR; 
    5249 
    53 version(Unicode) { 
     50version (Unicode) { 
    5451    alias WCHAR TCHAR, _TCHAR; 
    5552} else { 
     
    103100    NO_PROPAGATE_INHERIT_ACE   = 0x04, 
    104101    INHERIT_ONLY_ACE           = 0x08, 
    105     VALID_INHERIT_FLAGS        = 0x10, 
     102    INHERITED_ACE              = 0x10, 
     103    VALID_INHERIT_FLAGS        = 0x1F, 
    106104    SUCCESSFUL_ACCESS_ACE_FLAG = 0x40, 
    107105    FAILED_ACCESS_ACE_FLAG     = 0x80; 
     
    257255    FILE_SUPPORTS_OBJECT_IDS        = 0x00010000, 
    258256    FILE_SUPPORTS_ENCRYPTION        = 0x00020000, 
    259     FILE_NAMED_STREAMS              = 0x00040000; 
     257    FILE_NAMED_STREAMS              = 0x00040000, 
     258    FILE_READ_ONLY_VOLUME           = 0x00080000; 
    260259 
    261260// These are not documented on MSDN 
     
    634633} 
    635634 
    636 //MACRO #define MAKELANGID(p,s) ((((WORD)(s))<<10)|(WORD)(p)) 
    637  
    638 //MACRO #define PRIMARYLANGID(l)    ((WORD)(l)&0x3ff) 
    639 //MACRO #define SUBLANGID(l)    ((WORD)(l)>>10) 
    640  
    641  
    642 //MACRO #define MAKELCID(l,s) ((DWORD)((((DWORD)((WORD)(s)))<<16)|((DWORD)((WORD)(l))))) 
    643  
    644 //MACRO #define SORTIDFROMLCID(l)   ((WORD)((((DWORD)(l))&NLS_VALID_LOCALE_MASK)>>16)) 
    645  
    646 //MACRO #define SORTVERSIONFROMLCID(l) ((WORD)((((DWORD)(l))>>20)&0xf)) 
    647  
    648 //MACRO #define LANGIDFROMLCID(l)   ((WORD)(l)) 
    649  
    650635WORD MAKELANGID(USHORT p, USHORT s) { return (s << 10) | p; } 
    651636WORD PRIMARYLANGID(WORD lgid) { return lgid & 0x3FF; } 
     
    11841169 
    11851170ulong IMAGE_ORDINAL64(ulong Ordinal) { return Ordinal & 0xFFFF; } 
    1186 uint IMAGE_ORDINAL32(uint Ordinal) { return Ordinal & 0xFFFF; } 
     1171uint IMAGE_ORDINAL32(uint Ordinal)   { return Ordinal & 0xFFFF; } 
    11871172 
    11881173bool IMAGE_SNAP_BY_ORDINAL32(uint Ordinal) { 
     
    12571242    IS_TEXT_UNICODE_NOT_ASCII_MASK     = 0xF000; 
    12581243 
    1259 const SERVICE_KERNEL_DRIVER=1; 
    1260 const SERVICE_FILE_SYSTEM_DRIVER=2; 
    1261 const SERVICE_ADAPTER=4; 
    1262 const SERVICE_RECOGNIZER_DRIVER=8; 
    1263 const SERVICE_DRIVER=(SERVICE_KERNEL_DRIVER|SERVICE_FILE_SYSTEM_DRIVER|SERVICE_RECOGNIZER_DRIVER); 
    1264 const SERVICE_WIN32_OWN_PROCESS=16; 
    1265 const SERVICE_WIN32_SHARE_PROCESS=32; 
    1266 const SERVICE_WIN32=(SERVICE_WIN32_OWN_PROCESS|SERVICE_WIN32_SHARE_PROCESS); 
    1267 const SERVICE_INTERACTIVE_PROCESS=256; 
    1268 const SERVICE_TYPE_ALL=(SERVICE_WIN32|SERVICE_ADAPTER|SERVICE_DRIVER|SERVICE_INTERACTIVE_PROCESS); 
    1269 const SERVICE_BOOT_START=0; 
    1270 const SERVICE_SYSTEM_START=1; 
    1271 const SERVICE_AUTO_START=2; 
    1272 const SERVICE_DEMAND_START=3; 
    1273 const SERVICE_DISABLED=4; 
    1274 const SERVICE_ERROR_IGNORE=0; 
    1275 const SERVICE_ERROR_NORMAL=1; 
    1276 const SERVICE_ERROR_SEVERE=2; 
    1277 const SERVICE_ERROR_CRITICAL=3; 
    1278 const SE_OWNER_DEFAULTED=1; 
    1279 const SE_GROUP_DEFAULTED=2; 
    1280 const SE_DACL_PRESENT=4; 
    1281 const SE_DACL_DEFAULTED=8; 
    1282 const SE_SACL_PRESENT=16; 
    1283 const SE_SACL_DEFAULTED=32; 
    1284 const SE_DACL_AUTO_INHERIT_REQ=256; 
    1285 const SE_SACL_AUTO_INHERIT_REQ=512; 
    1286 const SE_DACL_AUTO_INHERITED=1024; 
    1287 const SE_SACL_AUTO_INHERITED=2048; 
    1288 const SE_DACL_PROTECTED=4096; 
    1289 const SE_SACL_PROTECTED=8192; 
    1290 const SE_SELF_RELATIVE=0x8000; 
     1244const DWORD 
     1245    SERVICE_KERNEL_DRIVER       = 0x0001, 
     1246    SERVICE_FILE_SYSTEM_DRIVER  = 0x0002, 
     1247    SERVICE_ADAPTER             = 0x0004, 
     1248    SERVICE_RECOGNIZER_DRIVER   = 0x0008, 
     1249    SERVICE_WIN32_OWN_PROCESS   = 0x0010, 
     1250    SERVICE_WIN32_SHARE_PROCESS = 0x0020, 
     1251    SERVICE_INTERACTIVE_PROCESS = 0x0100, 
     1252    SERVICE_DRIVER              = 0x000B, 
     1253    SERVICE_WIN32               = 0x0030, 
     1254    SERVICE_TYPE_ALL            = 0x013F; 
     1255 
     1256enum : DWORD { 
     1257    SERVICE_BOOT_START   = 0, 
     1258    SERVICE_SYSTEM_START = 1, 
     1259    SERVICE_AUTO_START   = 2, 
     1260    SERVICE_DEMAND_START = 3, 
     1261    SERVICE_DISABLED     = 4 
     1262
     1263 
     1264enum : DWORD { 
     1265    SERVICE_ERROR_IGNORE   = 0, 
     1266    SERVICE_ERROR_NORMAL   = 1, 
     1267    SERVICE_ERROR_SEVERE   = 2, 
     1268    SERVICE_ERROR_CRITICAL = 3 
     1269
     1270 
     1271 
     1272const uint 
     1273    SE_OWNER_DEFAULTED          = 0x0001, 
     1274    SE_GROUP_DEFAULTED          = 0x0002, 
     1275    SE_DACL_PRESENT             = 0x0004, 
     1276    SE_DACL_DEFAULTED           = 0x0008, 
     1277    SE_SACL_PRESENT             = 0x0010, 
     1278    SE_SACL_DEFAULTED           = 0x0020, 
     1279    SE_DACL_AUTO_INHERIT_REQ    = 0x0100, 
     1280    SE_SACL_AUTO_INHERIT_REQ    = 0x0200, 
     1281    SE_DACL_AUTO_INHERITED      = 0x0400, 
     1282    SE_SACL_AUTO_INHERITED      = 0x0800, 
     1283    SE_DACL_PROTECTED           = 0x1000, 
     1284    SE_SACL_PROTECTED           = 0x2000, 
     1285    SE_SELF_RELATIVE            = 0x8000; 
    12911286 
    12921287enum SECURITY_IMPERSONATION_LEVEL { 
     
    12971292} 
    12981293alias SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL; 
     1294 
    12991295alias BOOLEAN SECURITY_CONTEXT_TRACKING_MODE; 
    1300 alias SECURITY_CONTEXT_TRACKING_MODE* PSECURITY_CONTEXT_TRACKING_MODE; 
    1301  
    1302  
    1303  
    1304  
    1305 const SECURITY_DESCRIPTOR_MIN_LENGTH=20; 
    1306 const SECURITY_DESCRIPTOR_REVISION=1; 
    1307 const SECURITY_DESCRIPTOR_REVISION1=1; 
    1308 const SE_PRIVILEGE_ENABLED_BY_DEFAULT=1; 
    1309 const SE_PRIVILEGE_ENABLED=2; 
    1310 const SE_PRIVILEGE_USED_FOR_ACCESS=0x80000000; 
    1311 const PRIVILEGE_SET_ALL_NECESSARY=1; 
    1312 const SECURITY_MAX_IMPERSONATION_LEVEL=SECURITY_IMPERSONATION_LEVEL.SecurityDelegation; 
    1313 const DEFAULT_IMPERSONATION_LEVEL=SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation; 
    1314 const SECURITY_DYNAMIC_TRACKING = true; 
    1315 const SECURITY_STATIC_TRACKING = false; 
    1316 /* also in ddk/ntifs.h */ 
    1317 const TOKEN_ASSIGN_PRIMARY    = 0x0001; 
    1318 const TOKEN_DUPLICATE         = 0x0002; 
    1319 const TOKEN_IMPERSONATE       = 0x0004; 
    1320 const TOKEN_QUERY             = 0x0008; 
    1321 const TOKEN_QUERY_SOURCE      = 0x0010; 
    1322 const TOKEN_ADJUST_PRIVILEGES = 0x0020; 
    1323 const TOKEN_ADJUST_GROUPS     = 0x0040; 
    1324 const TOKEN_ADJUST_DEFAULT    = 0x0080; 
    1325 const TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | 
    1326                          TOKEN_ASSIGN_PRIMARY     | 
    1327                          TOKEN_DUPLICATE          | 
    1328                          TOKEN_IMPERSONATE        | 
    1329                          TOKEN_QUERY              | 
    1330                          TOKEN_QUERY_SOURCE       | 
    1331                          TOKEN_ADJUST_PRIVILEGES  | 
    1332                          TOKEN_ADJUST_GROUPS      | 
    1333                          TOKEN_ADJUST_DEFAULT; 
    1334 const TOKEN_READ       = STANDARD_RIGHTS_READ     | TOKEN_QUERY; 
    1335 const TOKEN_WRITE      = STANDARD_RIGHTS_WRITE    | 
    1336                          TOKEN_ADJUST_PRIVILEGES  | 
    1337                          TOKEN_ADJUST_GROUPS      | 
    1338                          TOKEN_ADJUST_DEFAULT; 
    1339 const TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE; 
    1340 const TOKEN_SOURCE_LENGTH = 8; 
    1341 /* end ddk/ntifs.h */ 
    1342  
    1343 const DLL_PROCESS_DETACH=0; 
    1344 const DLL_PROCESS_ATTACH=1; 
    1345 const DLL_THREAD_ATTACH=2; 
    1346 const DLL_THREAD_DETACH=3; 
    1347  
    1348 const DBG_CONTINUE=0x10002; 
    1349 const DBG_TERMINATE_THREAD=0x40010003; 
    1350 const DBG_TERMINATE_PROCESS=0x40010004; 
    1351 const DBG_CONTROL_C=0x40010005; 
    1352 const DBG_CONTROL_BREAK=0x40010008; 
    1353 const DBG_EXCEPTION_NOT_HANDLED=0x80010001; 
    1354  
    1355 const TAPE_ABSOLUTE_POSITION=0; 
    1356 const TAPE_LOGICAL_POSITION=1; 
    1357 const TAPE_PSEUDO_LOGICAL_POSITION=2; 
    1358  
    1359 const TAPE_REWIND=0; 
    1360 const TAPE_ABSOLUTE_BLOCK=1; 
    1361 const TAPE_LOGICAL_BLOCK=2; 
    1362 const TAPE_PSEUDO_LOGICAL_BLOCK=3; 
    1363 const TAPE_SPACE_END_OF_DATA=4; 
    1364 const TAPE_SPACE_RELATIVE_BLOCKS=5; 
    1365 const TAPE_SPACE_FILEMARKS=6; 
    1366 const TAPE_SPACE_SEQUENTIAL_FMKS=7; 
    1367 const TAPE_SPACE_SETMARKS=8; 
    1368 const TAPE_SPACE_SEQUENTIAL_SMKS=9; 
    1369 const TAPE_DRIVE_FIXED=1; 
    1370 const TAPE_DRIVE_SELECT=2; 
    1371 const TAPE_DRIVE_INITIATOR=4; 
    1372 const TAPE_DRIVE_ERASE_SHORT=16; 
    1373 const TAPE_DRIVE_ERASE_LONG=32; 
    1374 const TAPE_DRIVE_ERASE_BOP_ONLY=64; 
    1375 const TAPE_DRIVE_ERASE_IMMEDIATE=128; 
    1376 const TAPE_DRIVE_TAPE_CAPACITY=256; 
    1377 const TAPE_DRIVE_TAPE_REMAINING=512; 
    1378 const TAPE_DRIVE_FIXED_BLOCK=1024; 
    1379 const TAPE_DRIVE_VARIABLE_BLOCK=2048; 
    1380 const TAPE_DRIVE_WRITE_PROTECT=4096; 
    1381 const TAPE_DRIVE_EOT_WZ_SIZE=8192; 
    1382 const TAPE_DRIVE_ECC=0x10000; 
    1383 const TAPE_DRIVE_COMPRESSION=0x20000; 
    1384 const TAPE_DRIVE_PADDING=0x40000; 
    1385 const TAPE_DRIVE_REPORT_SMKS=0x80000; 
    1386 const TAPE_DRIVE_GET_ABSOLUTE_BLK=0x100000; 
    1387 const TAPE_DRIVE_GET_LOGICAL_BLK=0x200000; 
    1388 const TAPE_DRIVE_SET_EOT_WZ_SIZE=0x400000; 
    1389 const TAPE_DRIVE_EJECT_MEDIA=0x1000000; 
    1390 const TAPE_DRIVE_CLEAN_REQUESTS=0x2000000; 
    1391 const TAPE_DRIVE_SET_CMP_BOP_ONLY=0x4000000; 
    1392 const TAPE_DRIVE_RESERVED_BIT=0x80000000; 
    1393 const TAPE_DRIVE_LOAD_UNLOAD=0x80000001; 
    1394 const TAPE_DRIVE_TENSION=0x80000002; 
    1395 const TAPE_DRIVE_LOCK_UNLOCK=0x80000004; 
    1396 const TAPE_DRIVE_REWIND_IMMEDIATE=0x80000008; 
    1397 const TAPE_DRIVE_SET_BLOCK_SIZE=0x80000010; 
    1398 const TAPE_DRIVE_LOAD_UNLD_IMMED=0x80000020; 
    1399 const TAPE_DRIVE_TENSION_IMMED=0x80000040; 
    1400 const TAPE_DRIVE_LOCK_UNLK_IMMED=0x80000080; 
    1401 const TAPE_DRIVE_SET_ECC=0x80000100; 
    1402 const TAPE_DRIVE_SET_COMPRESSION=0x80000200; 
    1403 const TAPE_DRIVE_SET_PADDING=0x80000400; 
    1404 const TAPE_DRIVE_SET_REPORT_SMKS=0x80000800; 
    1405 const TAPE_DRIVE_ABSOLUTE_BLK=0x80001000; 
    1406 const TAPE_DRIVE_ABS_BLK_IMMED=0x80002000; 
    1407 const TAPE_DRIVE_LOGICAL_BLK=0x80004000; 
    1408 const TAPE_DRIVE_LOG_BLK_IMMED=0x80008000; 
    1409 const TAPE_DRIVE_END_OF_DATA=0x80010000; 
    1410 const TAPE_DRIVE_RELATIVE_BLKS=0x80020000; 
    1411 const TAPE_DRIVE_FILEMARKS=0x80040000; 
    1412 const TAPE_DRIVE_SEQUENTIAL_FMKS=0x80080000; 
    1413 const TAPE_DRIVE_SETMARKS=0x80100000; 
    1414 const TAPE_DRIVE_SEQUENTIAL_SMKS=0x80200000; 
    1415 const TAPE_DRIVE_REVERSE_POSITION=0x80400000; 
    1416 const TAPE_DRIVE_SPACE_IMMEDIATE=0x80800000; 
    1417 const TAPE_DRIVE_WRITE_SETMARKS=0x81000000; 
    1418 const TAPE_DRIVE_WRITE_FILEMARKS=0x82000000; 
    1419 const TAPE_DRIVE_WRITE_SHORT_FMKS=0x84000000; 
    1420 const TAPE_DRIVE_WRITE_LONG_FMKS=0x88000000; 
    1421 const TAPE_DRIVE_WRITE_MARK_IMMED=0x90000000; 
    1422 const TAPE_DRIVE_FORMAT=0xA0000000; 
    1423 const TAPE_DRIVE_FORMAT_IMMEDIATE=0xC0000000; 
    1424 const TAPE_DRIVE_HIGH_FEATURES=0x80000000; 
    1425  
    1426 const TAPE_FIXED_PARTITIONS=0; 
    1427 const TAPE_INITIATOR_PARTITIONS=2; 
    1428 const TAPE_SELECT_PARTITIONS=1; 
    1429 const TAPE_FILEMARKS=1; 
    1430 const TAPE_LONG_FILEMARKS=3; 
    1431 const TAPE_SETMARKS=0; 
    1432 const TAPE_SHORT_FILEMARKS=2; 
    1433  
    1434 const TAPE_ERASE_LONG=1; 
    1435 const TAPE_ERASE_SHORT=0; 
    1436  
    1437 const TAPE_LOAD=0; 
    1438 const TAPE_UNLOAD=1; 
    1439 const TAPE_TENSION=2; 
    1440 const TAPE_LOCK=3; 
    1441 const TAPE_UNLOCK=4; 
    1442 const TAPE_FORMAT=5; 
    1443  
    1444 static if (_WIN32_WINNT >= 0x0500) { 
    1445  
    1446 const VER_MINORVERSION=0x0000001; 
    1447 const VER_MAJORVERSION=0x0000002; 
    1448 const VER_BUILDNUMBER=0x0000004; 
    1449 const VER_PLATFORMID=0x0000008; 
    1450 const VER_SERVICEPACKMINOR=0x0000010; 
    1451 const VER_SERVICEPACKMAJOR=0x0000020; 
    1452 const VER_SUITENAME=0x0000040; 
    1453 const VER_PRODUCT_TYPE=0x0000080; 
    1454 const VER_EQUAL=1; 
    1455 const VER_GREATER=2; 
    1456 const VER_GREATER_EQUAL=3; 
    1457 const VER_LESS=4; 
    1458 const VER_LESS_EQUAL=5; 
    1459 const VER_AND=6; 
    1460 const VER_OR=7; 
    1461  
    1462 
    1463 const VER_PLATFORM_WIN32s=0; 
    1464 const VER_PLATFORM_WIN32_WINDOWS=1; 
    1465 const VER_PLATFORM_WIN32_NT=2; 
    1466 const VER_NT_WORKSTATION=1; 
    1467 const VER_NT_DOMAIN_CONTROLLER=2; 
    1468 const VER_NT_SERVER=3; 
    1469 const VER_SUITE_SMALLBUSINESS=1; 
    1470 const VER_SUITE_ENTERPRISE=2; 
    1471 const VER_SUITE_BACKOFFICE=4; 
    1472 const VER_SUITE_TERMINAL=16; 
    1473 const VER_SUITE_SMALLBUSINESS_RESTRICTED=32; 
    1474 const VER_SUITE_DATACENTER=128; 
    1475 const VER_SUITE_PERSONAL=512; 
    1476 const VER_SUITE_BLADE=1024; 
    1477  
    1478 const WT_EXECUTEDEFAULT=0x00000000; 
    1479 const WT_EXECUTEINIOTHREAD=0x00000001; 
    1480 const WT_EXECUTEINWAITTHREAD=0x00000004; 
    1481 const WT_EXECUTEONLYONCE=0x00000008; 
    1482 const WT_EXECUTELONGFUNCTION=0x00000010; 
    1483 const WT_EXECUTEINTIMERTHREAD=0x00000020; 
    1484 const WT_EXECUTEINPERSISTENTTHREAD=0x00000080; 
    1485 const WT_TRANSFER_IMPERSONATION=0x00000100; 
    1486  
    1487 static if (_WIN32_WINNT >= 0x0501) { 
    1488  
    1489 enum { 
    1490     ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION=1, 
    1491     ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, 
    1492     ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION, 
    1493     ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION, 
    1494     ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION, 
    1495     ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION, 
    1496     ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION, // =7 
    1497     ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES = 9 
    1498 
    1499  
     1296alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE; 
     1297 
     1298const size_t SECURITY_DESCRIPTOR_MIN_LENGTH = 20; 
     1299 
     1300const DWORD 
     1301    SECURITY_DESCRIPTOR_REVISION  = 1, 
     1302    SECURITY_DESCRIPTOR_REVISION1 = 1; 
     1303 
     1304const DWORD 
     1305    SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001, 
     1306    SE_PRIVILEGE_ENABLED            = 0x00000002, 
     1307    SE_PRIVILEGE_USED_FOR_ACCESS    = 0x80000000; 
     1308 
     1309const DWORD PRIVILEGE_SET_ALL_NECESSARY = 1; 
     1310 
     1311const SECURITY_IMPERSONATION_LEVEL 
     1312    SECURITY_MAX_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, 
     1313    DEFAULT_IMPERSONATION_LEVEL      = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation; 
     1314 
     1315const BOOLEAN 
     1316    SECURITY_DYNAMIC_TRACKING = true, 
     1317    SECURITY_STATIC_TRACKING  = false; 
     1318 
     1319// also in ddk/ntifs.h 
     1320const DWORD 
     1321    TOKEN_ASSIGN_PRIMARY    = 0x0001, 
     1322    TOKEN_DUPLICATE         = 0x0002, 
     1323    TOKEN_IMPERSONATE       = 0x0004, 
     1324    TOKEN_QUERY             = 0x0008, 
     1325    TOKEN_QUERY_SOURCE      = 0x0010, 
     1326    TOKEN_ADJUST_PRIVILEGES = 0x0020, 
     1327    TOKEN_ADJUST_GROUPS     = 0x0040, 
     1328    TOKEN_ADJUST_DEFAULT    = 0x0080, 
     1329 
     1330    TOKEN_ALL_ACCESS        = STANDARD_RIGHTS_REQUIRED 
     1331                              | TOKEN_ASSIGN_PRIMARY 
     1332                              | TOKEN_DUPLICATE 
     1333                              | TOKEN_IMPERSONATE 
     1334                              | TOKEN_QUERY 
     1335                              | TOKEN_QUERY_SOURCE 
     1336                              | TOKEN_ADJUST_PRIVILEGES 
     1337                              | TOKEN_ADJUST_GROUPS 
     1338                              | TOKEN_ADJUST_DEFAULT, 
     1339    TOKEN_READ              = STANDARD_RIGHTS_READ | TOKEN_QUERY, 
     1340    TOKEN_WRITE             = STANDARD_RIGHTS_WRITE 
     1341                              | TOKEN_ADJUST_PRIVILEGES 
     1342                              | TOKEN_ADJUST_GROUPS 
     1343                              | TOKEN_ADJUST_DEFAULT, 
     1344    TOKEN_EXECUTE           = STANDARD_RIGHTS_EXECUTE; 
     1345 
     1346const size_t TOKEN_SOURCE_LENGTH = 8; 
     1347// end ddk/ntifs.h 
     1348 
     1349enum : DWORD { 
     1350    DLL_PROCESS_DETACH, 
     1351    DLL_PROCESS_ATTACH, 
     1352    DLL_THREAD_ATTACH, 
     1353    DLL_THREAD_DETACH 
     1354
     1355 
     1356enum : DWORD { 
     1357    DBG_CONTINUE              = 0x00010002, 
     1358    DBG_TERMINATE_THREAD      = 0x40010003, 
     1359    DBG_TERMINATE_PROCESS     = 0x40010004, 
     1360    DBG_CONTROL_C             = 0x40010005, 
     1361    DBG_CONTROL_BREAK         = 0x40010008, 
     1362    DBG_EXCEPTION_NOT_HANDLED = 0x80010001 
     1363
     1364 
     1365enum : DWORD { 
     1366    TAPE_ABSOLUTE_POSITION, 
     1367    TAPE_LOGICAL_POSITION, 
     1368    TAPE_PSEUDO_LOGICAL_POSITION 
     1369
     1370 
     1371enum : DWORD { 
     1372    TAPE_REWIND, 
     1373    TAPE_ABSOLUTE_BLOCK, 
     1374    TAPE_LOGICAL_BLOCK, 
     1375    TAPE_PSEUDO_LOGICAL_BLOCK, 
     1376    TAPE_SPACE_END_OF_DATA, 
     1377    TAPE_SPACE_RELATIVE_BLOCKS, 
     1378    TAPE_SPACE_FILEMARKS, 
     1379    TAPE_SPACE_SEQUENTIAL_FMKS, 
     1380    TAPE_SPACE_SETMARKS, 
     1381    TAPE_SPACE_SEQUENTIAL_SMKS 
     1382
     1383 
     1384const DWORD 
     1385    TAPE_DRIVE_FIXED            = 0x00000001, 
     1386    TAPE_DRIVE_SELECT           = 0x00000002, 
     1387    TAPE_DRIVE_INITIATOR        = 0x00000004, 
     1388    TAPE_DRIVE_ERASE_SHORT      = 0x00000010, 
     1389    TAPE_DRIVE_ERASE_LONG       = 0x00000020, 
     1390    TAPE_DRIVE_ERASE_BOP_ONLY   = 0x00000040, 
     1391    TAPE_DRIVE_ERASE_IMMEDIATE  = 0x00000080, 
     1392    TAPE_DRIVE_TAPE_CAPACITY    = 0x00000100, 
     1393    TAPE_DRIVE_TAPE_REMAINING   = 0x00000200, 
     1394    TAPE_DRIVE_FIXED_BLOCK      = 0x00000400, 
     1395    TAPE_DRIVE_VARIABLE_BLOCK   = 0x00000800, 
     1396    TAPE_DRIVE_WRITE_PROTECT    = 0x00001000, 
     1397    TAPE_DRIVE_EOT_WZ_SIZE      = 0x00002000, 
     1398    TAPE_DRIVE_ECC              = 0x00010000, 
     1399    TAPE_DRIVE_COMPRESSION      = 0x00020000, 
     1400    TAPE_DRIVE_PADDING          = 0x00040000, 
     1401    TAPE_DRIVE_REPORT_SMKS      = 0x00080000, 
     1402    TAPE_DRIVE_GET_ABSOLUTE_BLK = 0x00100000, 
     1403    TAPE_DRIVE_GET_LOGICAL_BLK  = 0x00200000, 
     1404    TAPE_DRIVE_SET_EOT_WZ_SIZE  = 0x00400000, 
     1405    TAPE_DRIVE_EJECT_MEDIA      = 0x01000000, 
     1406    TAPE_DRIVE_CLEAN_REQUESTS   = 0x02000000, 
     1407    TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000, 
     1408    TAPE_DRIVE_RESERVED_BIT     = 0x80000000; 
     1409 
     1410const DWORD 
     1411    TAPE_DRIVE_LOAD_UNLOAD      = 0x80000001, 
     1412    TAPE_DRIVE_TENSION          = 0x80000002, 
     1413    TAPE_DRIVE_LOCK_UNLOCK      = 0x80000004, 
     1414    TAPE_DRIVE_REWIND_IMMEDIATE = 0x80000008, 
     1415    TAPE_DRIVE_SET_BLOCK_SIZE   = 0x80000010, 
     1416    TAPE_DRIVE_LOAD_UNLD_IMMED  = 0x80000020, 
     1417    TAPE_DRIVE_TENSION_IMMED    = 0x80000040, 
     1418    TAPE_DRIVE_LOCK_UNLK_IMMED  = 0x80000080, 
     1419    TAPE_DRIVE_SET_ECC          = 0x80000100, 
     1420    TAPE_DRIVE_SET_COMPRESSION  = 0x80000200, 
     1421    TAPE_DRIVE_SET_PADDING      = 0x80000400, 
     1422    TAPE_DRIVE_SET_REPORT_SMKS  = 0x80000800, 
     1423    TAPE_DRIVE_ABSOLUTE_BLK     = 0x80001000, 
     1424    TAPE_DRIVE_ABS_BLK_IMMED    = 0x80002000, 
     1425    TAPE_DRIVE_LOGICAL_BLK      = 0x80004000, 
     1426    TAPE_DRIVE_LOG_BLK_IMMED    = 0x80008000, 
     1427    TAPE_DRIVE_END_OF_DATA      = 0x80010000, 
     1428    TAPE_DRIVE_RELATIVE_BLKS    = 0x80020000, 
     1429    TAPE_DRIVE_FILEMARKS        = 0x80040000, 
     1430    TAPE_DRIVE_SEQUENTIAL_FMKS  = 0x80080000, 
     1431    TAPE_DRIVE_SETMARKS         = 0x80100000, 
     1432    TAPE_DRIVE_SEQUENTIAL_SMKS  = 0x80200000, 
     1433    TAPE_DRIVE_REVERSE_POSITION = 0x80400000, 
     1434    TAPE_DRIVE_SPACE_IMMEDIATE  = 0x80800000, 
     1435    TAPE_DRIVE_WRITE_SETMARKS   = 0x81000000, 
     1436    TAPE_DRIVE_WRITE_FILEMARKS  = 0x82000000, 
     1437    TAPE_DRIVE_WRITE_SHORT_FMKS = 0x84000000, 
     1438    TAPE_DRIVE_WRITE_LONG_FMKS  = 0x88000000, 
     1439    TAPE_DRIVE_WRITE_MARK_IMMED = 0x90000000, 
     1440    TAPE_DRIVE_FORMAT           = 0xA0000000, 
     1441    TAPE_DRIVE_FORMAT_IMMEDIATE = 0xC0000000, 
     1442    TAPE_DRIVE_HIGH_FEATURES    = 0x80000000; 
     1443 
     1444enum : DWORD { 
     1445    TAPE_FIXED_PARTITIONS     = 0, 
     1446    TAPE_SELECT_PARTITIONS    = 1, 
     1447    TAPE_INITIATOR_PARTITIONS = 2 
     1448
     1449 
     1450enum : DWORD { 
     1451    TAPE_SETMARKS, 
     1452    TAPE_FILEMARKS, 
     1453    TAPE_SHORT_FILEMARKS, 
     1454    TAPE_LONG_FILEMARKS 
     1455
     1456 
     1457enum : DWORD { 
     1458    TAPE_ERASE_SHORT, 
     1459    TAPE_ERASE_LONG 
     1460
     1461 
     1462enum : DWORD { 
     1463    TAPE_LOAD, 
     1464    TAPE_UNLOAD, 
     1465    TAPE_TENSION, 
     1466    TAPE_LOCK, 
     1467    TAPE_UNLOCK, 
     1468    TAPE_FORMAT 
     1469
     1470 
     1471enum : ULONG32 { 
     1472    VER_PLATFORM_WIN32s, 
     1473    VER_PLATFORM_WIN32_WINDOWS, 
     1474    VER_PLATFORM_WIN32_NT 
     1475
     1476 
     1477enum : UCHAR { 
     1478    VER_NT_WORKSTATION = 1, 
     1479    VER_NT_DOMAIN_CONTROLLER, 
     1480    VER_NT_SERVER 
     1481
     1482 
     1483const USHORT 
     1484    VER_SUITE_SMALLBUSINESS            = 0x0001, 
     1485    VER_SUITE_ENTERPRISE               = 0x0002, 
     1486    VER_SUITE_BACKOFFICE               = 0x0004, 
     1487    VER_SUITE_TERMINAL                 = 0x0010, 
     1488    VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x0020, 
     1489    VER_SUITE_DATACENTER               = 0x0080, 
     1490    VER_SUITE_PERSONAL                 = 0x0200, 
     1491    VER_SUITE_BLADE                    = 0x0400; 
     1492 
     1493const ULONG 
     1494    WT_EXECUTEDEFAULT            = 0x00000000, 
     1495    WT_EXECUTEINIOTHREAD         = 0x00000001, 
     1496    WT_EXECUTEINWAITTHREAD       = 0x00000004, 
     1497    WT_EXECUTEONLYONCE           = 0x00000008, 
     1498    WT_EXECUTELONGFUNCTION       = 0x00000010, 
     1499    WT_EXECUTEINTIMERTHREAD      = 0x00000020, 
     1500    WT_EXECUTEINPERSISTENTTHREAD = 0x00000080, 
     1501    WT_TRANSFER_IMPERSONATION    = 0x00000100; 
     1502 
     1503static if (_WIN32_WINNT_ONLY) { 
     1504    static if (_WIN32_WINNT >= 0x500) { 
     1505        const DWORD 
     1506            VER_MINORVERSION     = 0x01, 
     1507            VER_MAJORVERSION     = 0x02, 
     1508            VER_BUILDNUMBER      = 0x04, 
     1509            VER_PLATFORMID       = 0x08, 
     1510            VER_SERVICEPACKMINOR = 0x10, 
     1511            VER_SERVICEPACKMAJOR = 0x20, 
     1512            VER_SUITENAME        = 0x40, 
     1513            VER_PRODUCT_TYPE     = 0x80; 
     1514 
     1515        enum : DWORD { 
     1516            VER_EQUAL = 1, 
     1517            VER_GREATER, 
     1518            VER_GREATER_EQUAL, 
     1519            VER_LESS, 
     1520            VER_LESS_EQUAL, 
     1521            VER_AND, 
     1522            VER_OR // = 7 
     1523        } 
     1524    } 
     1525 
     1526    static if (_WIN32_WINNT >= 0x501) { 
     1527        enum : ULONG { 
     1528            ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION       = 1, 
     1529            ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, 
     1530            ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION, 
     1531            ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION, 
     1532            ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION, 
     1533            ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION, 
     1534            ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION, // = 7 
     1535            ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES             = 9 
     1536        } 
     1537    } 
    15001538} 
    15011539 
    15021540// Macros 
    1503 BYTE BTYPE(BYTE x) { return cast(BYTE)(x & N_BTMASK); } 
     1541BYTE BTYPE(BYTE x) { return cast(BYTE) (x & N_BTMASK); } 
    15041542bool ISPTR(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT); } 
    15051543bool ISFCN(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); } 
    15061544bool ISARY(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT); } 
    15071545bool ISTAG(uint x) { 
    1508         return x == IMAGE_SYM_CLASS_STRUCT_TAG || x == IMAGE_SYM_CLASS_UNION_TAG || x == IMAGE_SYM_CLASS_ENUM_TAG; } 
     1546    return x == IMAGE_SYM_CLASS_STRUCT_TAG 
     1547        || x == IMAGE_SYM_CLASS_UNION_TAG 
     1548        || x == IMAGE_SYM_CLASS_ENUM_TAG; 
     1549
    15091550uint INCREF(uint x) { 
    1510     return ((x&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|(x&N_BTMASK); } 
    1511 uint DECREF(uint x) { return ((x >>> N_TSHIFT) & ~N_BTMASK)|(x & N_BTMASK); } 
    1512  
    1513 const TLS_MINIMUM_AVAILABLE=64; 
    1514 const IO_REPARSE_TAG_RESERVED_ZERO = 0; 
    1515 const IO_REPARSE_TAG_RESERVED_ONE = 1; 
    1516 const IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE; 
    1517 //MACRO #define IsReparseTagMicrosoft(x) ((x)&0x80000000) 
    1518  
    1519 //MACRO #define IsReparseTagHighLatency(x) ((x)&0x40000000) 
    1520  
    1521 //MACRO #define IsReparseTagNameSurrogate(x) ((x)&0x20000000) 
    1522  
    1523 const IO_REPARSE_TAG_VALID_VALUES=0xE000FFFF; 
    1524 //MACRO #define IsReparseTagValid(x) (!((x)&~IO_REPARSE_TAG_VALID_VALUES)&&((x)>IO_REPARSE_TAG_RESERVED_RANGE)) 
    1525  
    1526 const IO_REPARSE_TAG_SYMBOLIC_LINK=IO_REPARSE_TAG_RESERVED_ZERO; 
    1527 const IO_REPARSE_TAG_MOUNT_POINT=0xA0000003; 
     1551    return ((x & ~N_BTMASK) << N_TSHIFT) | (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT) 
     1552      | (x & N_BTMASK); 
     1553
     1554uint DECREF(uint x) { return ((x >>> N_TSHIFT) & ~N_BTMASK) | (x & N_BTMASK); } 
     1555 
     1556const DWORD TLS_MINIMUM_AVAILABLE = 64; 
     1557 
     1558const ULONG 
     1559    IO_REPARSE_TAG_RESERVED_ZERO  = 0, 
     1560    IO_REPARSE_TAG_RESERVED_ONE   = 1, 
     1561    IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE, 
     1562    IO_REPARSE_TAG_SYMBOLIC_LINK  = IO_REPARSE_TAG_RESERVED_ZERO, 
     1563    IO_REPARSE_TAG_MOUNT_POINT    = 0xA0000003, 
     1564    IO_REPARSE_TAG_VALID_VALUES   = 0xE000FFFF; 
     1565 
     1566/*  Although these are semantically boolean, they are documented and 
     1567 *  implemented to return ULONG; this behaviour is preserved for compatibility 
     1568 */ 
     1569ULONG IsReparseTagMicrosoft(ULONG x)     { return x & 0x80000000; } 
     1570ULONG IsReparseTagHighLatency(ULONG x)   { return x & 0x40000000; } 
     1571ULONG IsReparseTagNameSurrogate(ULONG x) { return x & 0x20000000; } 
     1572 
     1573bool IsReparseTagValid(ULONG x) { 
     1574    return !(x & ~IO_REPARSE_TAG_VALID_VALUES) && (x > IO_REPARSE_TAG_RESERVED_RANGE); 
     1575
    15281576 
    15291577import win32.basetyps; 
     
    15541602 
    15551603struct ACCESS_ALLOWED_ACE { 
    1556     ACE_HEADER Header; 
     1604    ACE_HEADER Header; 
    15571605    ACCESS_MASK Mask; 
    1558     DWORD SidStart; 
     1606    DWORD       SidStart; 
    15591607} 
    15601608alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE; 
    15611609 
    15621610struct ACCESS_DENIED_ACE { 
    1563     ACE_HEADER Header; 
     1611    ACE_HEADER Header; 
    15641612    ACCESS_MASK Mask; 
    1565     DWORD SidStart; 
     1613    DWORD       SidStart; 
    15661614} 
    15671615alias ACCESS_DENIED_ACE* PACCESS_DENIED_ACE; 
    15681616 
    15691617struct SYSTEM_AUDIT_ACE { 
    1570     ACE_HEADER Header; 
     1618    ACE_HEADER Header; 
    15711619    ACCESS_MASK Mask; 
    1572     DWORD SidStart; 
     1620    DWORD       SidStart; 
    15731621} 
    15741622alias SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; 
    15751623 
    15761624struct SYSTEM_ALARM_ACE { 
    1577     ACE_HEADER Header; 
     1625    ACE_HEADER Header; 
    15781626    ACCESS_MASK Mask; 
    1579     DWORD SidStart; 
     1627    DWORD       SidStart; 
    15801628} 
    15811629alias SYSTEM_ALARM_ACE* PSYSTEM_ALARM_ACE; 
    15821630 
    15831631struct ACCESS_ALLOWED_OBJECT_ACE { 
    1584     ACE_HEADER Header; 
     1632    ACE_HEADER Header; 
    15851633    ACCESS_MASK Mask; 
    1586     DWORD Flags; 
    1587     GUID ObjectType; 
    1588     GUID InheritedObjectType; 
    1589     DWORD SidStart; 
     1634    DWORD       Flags; 
     1635    GUID        ObjectType; 
     1636    GUID        InheritedObjectType; 
     1637    DWORD       SidStart; 
    15901638} 
    15911639alias ACCESS_ALLOWED_OBJECT_ACE* PACCESS_ALLOWED_OBJECT_ACE; 
    15921640 
    15931641struct ACCESS_DENIED_OBJECT_ACE { 
    1594     ACE_HEADER Header; 
     1642    ACE_HEADER Header; 
    15951643    ACCESS_MASK Mask; 
    1596     DWORD Flags; 
    1597     GUID ObjectType; 
    1598     GUID InheritedObjectType; 
    1599     DWORD SidStart; 
     1644    DWORD       Flags; 
     1645    GUID        ObjectType; 
     1646    GUID        InheritedObjectType; 
     1647    DWORD       SidStart; 
    16001648} 
    16011649alias ACCESS_DENIED_OBJECT_ACE* PACCESS_DENIED_OBJECT_ACE; 
    16021650 
    16031651struct SYSTEM_AUDIT_OBJECT_ACE { 
    1604     ACE_HEADER Header; 
     1652    ACE_HEADER Header; 
    16051653    ACCESS_MASK Mask; 
    1606     DWORD Flags; 
    1607     GUID ObjectType; 
    1608     GUID InheritedObjectType; 
    1609     DWORD SidStart; 
     1654    DWORD       Flags; 
     1655    GUID        ObjectType; 
     1656    GUID        InheritedObjectType; 
     1657    DWORD       SidStart; 
    16101658} 
    16111659alias SYSTEM_AUDIT_OBJECT_ACE* PSYSTEM_AUDIT_OBJECT_ACE; 
    16121660 
    16131661struct SYSTEM_ALARM_OBJECT_ACE { 
    1614     ACE_HEADER Header; 
     1662    ACE_HEADER Header; 
    16151663    ACCESS_MASK Mask; 
    1616     DWORD Flags; 
    1617     GUID ObjectType; 
    1618     GUID InheritedObjectType; 
    1619     DWORD SidStart; 
     1664    DWORD       Flags; 
     1665    GUID        ObjectType; 
     1666    GUID        InheritedObjectType; 
     1667    DWORD       SidStart; 
    16201668} 
    16211669alias SYSTEM_ALARM_OBJECT_ACE* PSYSTEM_ALARM_OBJECT_ACE; 
     
    16351683 
    16361684struct ACL_SIZE_INFORMATION { 
    1637     DWORD   AceCount; 
    1638     DWORD   AclBytesInUse; 
    1639     DWORD   AclBytesFree; 
    1640 
    1641  
    1642 version(X86) { 
    1643     const SIZE_OF_80387_REGISTERS=80; 
    1644     const CONTEXT_i386=0x10000; 
    1645     const CONTEXT_i486=0x10000; 
    1646     const CONTEXT_CONTROL=(CONTEXT_i386|0x00000001L); 
    1647     const CONTEXT_INTEGER=(CONTEXT_i386|0x00000002L); 
    1648     const CONTEXT_SEGMENTS=(CONTEXT_i386|0x00000004L); 
    1649     const CONTEXT_FLOATING_POINT=(CONTEXT_i386|0x00000008L); 
    1650     const CONTEXT_DEBUG_REGISTERS=(CONTEXT_i386|0x00000010L); 
    1651     const CONTEXT_EXTENDED_REGISTERS=(CONTEXT_i386|0x00000020L); 
    1652     const CONTEXT_FULL=(CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS); 
    1653     const MAXIMUM_SUPPORTED_EXTENSION=512; 
     1685    DWORD AceCount; 
     1686    DWORD AclBytesInUse; 
     1687    DWORD AclBytesFree; 
     1688
     1689 
     1690version (X86) { 
     1691    // ??? 
     1692    const SIZE_OF_80387_REGISTERS     = 80; 
     1693    const CONTEXT_i386                = 0x010000; 
     1694    const CONTEXT_i486                = 0x010000; 
     1695    const CONTEXT_CONTROL             = CONTEXT_i386 | 0x01; 
     1696    const CONTEXT_INTEGER             = CONTEXT_i386 | 0x02; 
     1697    const CONTEXT_SEGMENTS            = CONTEXT_i386 | 0x04; 
     1698    const CONTEXT_FLOATING_POINT      = CONTEXT_i386 | 0x08; 
     1699    const CONTEXT_DEBUG_REGISTERS     = CONTEXT_i386 | 0x10; 
     1700    const CONTEXT_EXTENDED_REGISTERS  = CONTEXT_i386 | 0x20; 
     1701    const CONTEXT_FULL                = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS; 
     1702    const MAXIMUM_SUPPORTED_EXTENSION = 512; 
    16541703 
    16551704    struct FLOATING_SAVE_AREA { 
     
    16941743 
    16951744} else { 
    1696     pragma(msg, "Unsupported CPU"); 
    1697     static assert(0); 
     1745    static assert(false, "Unsupported CPU"); 
    16981746    // Versions for PowerPC, Alpha, SHX, and MIPS removed. 
    16991747} 
    1700  
    17011748 
    17021749alias CONTEXT* PCONTEXT, LPCONTEXT; 
     
    17051752    DWORD ExceptionCode; 
    17061753    DWORD ExceptionFlags; 
    1707     EXCEPTION_RECORD *ExceptionRecord; 
     1754    EXCEPTION_RECORD* ExceptionRecord; 
    17081755    PVOID ExceptionAddress; 
    17091756    DWORD NumberParameters; 
    1710     DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
     1757    DWORD[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation
    17111758} 
    17121759alias EXCEPTION_RECORD* PEXCEPTION_RECORD, LPEXCEPTION_RECORD; 
     
    17141761struct EXCEPTION_POINTERS { 
    17151762    PEXCEPTION_RECORD ExceptionRecord; 
    1716     PCONTEXT ContextRecord; 
     1763    PCONTEXT          ContextRecord; 
    17171764} 
    17181765alias EXCEPTION_POINTERS* PEXCEPTION_POINTERS, LPEXCEPTION_POINTERS; 
     
    17421789 
    17431790align(4) struct LUID_AND_ATTRIBUTES { 
    1744     LUID  Luid; 
    1745     DWORD Attributes; 
     1791    LUID  Luid; 
     1792    DWORD Attributes; 
    17461793} 
    17471794alias LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES; 
     
    17571804 
    17581805struct SECURITY_ATTRIBUTES { 
    1759     DWORD nLength; 
     1806    DWORD nLength; 
    17601807    LPVOID lpSecurityDescriptor; 
    1761     BOOL bInheritHandle; 
     1808    BOOL   bInheritHandle; 
    17621809} 
    17631810alias SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES; 
    17641811 
    17651812struct SECURITY_QUALITY_OF_SERVICE { 
    1766     DWORD Length; 
    1767     SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 
     1813    DWORD   Length; 
     1814    SECURITY_IMPERSONATION_LEVEL   ImpersonationLevel; 
    17681815    SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; 
    17691816    BOOLEAN EffectiveOnly; 
     
    17751822struct SE_IMPERSONATION_STATE { 
    17761823    PACCESS_TOKEN Token; 
    1777     BOOLEAN CopyOnOpen; 
    1778     BOOLEAN EffectiveOnly; 
     1824    BOOLEAN       CopyOnOpen; 
     1825    BOOLEAN       EffectiveOnly; 
    17791826    SECURITY_IMPERSONATION_LEVEL Level; 
    17801827} 
     
    17991846 
    18001847struct SID_AND_ATTRIBUTES { 
    1801     PSID Sid; 
     1848    PSID Sid; 
    18021849    DWORD Attributes; 
    18031850} 
     
    18051852 
    18061853struct TOKEN_SOURCE { 
    1807     CHAR SourceName[TOKEN_SOURCE_LENGTH]
     1854    CHAR[TOKEN_SOURCE_LENGTH] SourceName
    18081855    LUID SourceIdentifier; 
    18091856} 
     
    18111858 
    18121859struct TOKEN_CONTROL { 
    1813     LUID TokenId; 
    1814     LUID AuthenticationId; 
    1815     LUID ModifiedId; 
     1860    LUID         TokenId; 
     1861    LUID         AuthenticationId; 
     1862    LUID         ModifiedId; 
    18161863    TOKEN_SOURCE TokenSource; 
    18171864} 
     
    18561903 
    18571904struct TOKEN_STATISTICS { 
    1858     LUID TokenId; 
    1859     LUID AuthenticationId; 
     1905    LUID          TokenId; 
     1906    LUID          AuthenticationId; 
    18601907    LARGE_INTEGER ExpirationTime; 
    1861     TOKEN_TYPE TokenType; 
     1908    TOKEN_TYPE    TokenType; 
    18621909    SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 
    1863     DWORD DynamicCharged; 
    1864     DWORD DynamicAvailable; 
    1865     DWORD GroupCount; 
    1866     DWORD PrivilegeCount; 
    1867     LUID ModifiedId; 
     1910    DWORD         DynamicCharged; 
     1911    DWORD         DynamicAvailable; 
     1912    DWORD         GroupCount; 
     1913    DWORD         PrivilegeCount; 
     1914    LUID          ModifiedId; 
    18681915} 
    18691916alias TOKEN_STATISTICS* PTOKEN_STATISTICS; 
     
    18721919    SID_AND_ATTRIBUTES User; 
    18731920} 
    1874 alias TOKEN_USER *PTOKEN_USER; 
     1921alias TOKEN_USER* PTOKEN_USER; 
    18751922 
    18761923alias DWORD SECURITY_INFORMATION; 
     
    18911938 
    18921939enum TOKEN_INFORMATION_CLASS { 
    1893     TokenUser=1, 
     1940    TokenUser = 1, 
    18941941    TokenGroups, 
    18951942    TokenPrivileges, 
     
    19111958 
    19121959enum SID_NAME_USE { 
    1913     SidTypeUser=1, 
     1960    SidTypeUser = 1, 
    19141961    SidTypeGroup, 
    19151962    SidTypeDomain, 
     
    19341981 
    19351982struct IO_COUNTERS { 
    1936     ULONGLONG ReadOperationCount; 
    1937     ULONGLONG WriteOperationCount; 
    1938     ULONGLONG OtherOperationCount; 
     1983    ULONGLONG ReadOperationCount; 
     1984    ULONGLONG WriteOperationCount; 
     1985    ULONGLONG OtherOperationCount; 
    19391986    ULONGLONG ReadTransferCount; 
    19401987    ULONGLONG WriteTransferCount; 
     
    19471994    DWORD Action; 
    19481995    DWORD FileNameLength; 
    1949     WCHAR FileName[1]; 
     1996    WCHAR _FileName; 
     1997 
     1998    WCHAR* FileName() { return &_FileName; } 
    19501999} 
    19512000alias FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION; 
    19522001 
    19532002struct TAPE_ERASE { 
    1954     DWORD Type; 
     2003    DWORD   Type; 
    19552004    BOOLEAN Immediate; 
    19562005} 
     
    19622011    BOOLEAN DataPadding; 
    19632012    BOOLEAN ReportSetmarks; 
    1964     DWORD DefaultBlockSize; 
    1965     DWORD MaximumBlockSize; 
    1966     DWORD MinimumBlockSize; 
    1967     DWORD MaximumPartitionCount; 
    1968     DWORD FeaturesLow; 
    1969     DWORD FeaturesHigh; 
    1970     DWORD EOTWarningZoneSize; 
     2013    DWORD   DefaultBlockSize; 
     2014    DWORD   MaximumBlockSize; 
     2015    DWORD   MinimumBlockSize; 
     2016    DWORD   MaximumPartitionCount; 
     2017    DWORD   FeaturesLow; 
     2018    DWORD   FeaturesHigh; 
     2019    DWORD   EOTWarningZoneSize; 
    19712020} 
    19722021alias TAPE_GET_DRIVE_PARAMETERS* PTAPE_GET_DRIVE_PARAMETERS; 
     
    19752024    LARGE_INTEGER Capacity; 
    19762025    LARGE_INTEGER Remaining; 
    1977     DWORD BlockSize; 
    1978     DWORD PartitionCount; 
    1979     BOOLEAN WriteProtected; 
     2026    DWORD         BlockSize; 
     2027    DWORD         PartitionCount; 
     2028    BOOLEAN       WriteProtected; 
    19802029} 
    19812030alias TAPE_GET_MEDIA_PARAMETERS* PTAPE_GET_MEDIA_PARAMETERS; 
     
    19902039 
    19912040struct TAPE_PREPARE { 
    1992     DWORD Operation; 
     2041    DWORD   Operation; 
    19932042    BOOLEAN Immediate; 
    19942043} 
     
    20002049    BOOLEAN DataPadding; 
    20012050    BOOLEAN ReportSetmarks; 
    2002     ULONG EOTWarningZoneSize; 
     2051    ULONG   EOTWarningZoneSize; 
    20032052} 
    20042053alias TAPE_SET_DRIVE_PARAMETERS* PTAPE_SET_DRIVE_PARAMETERS; 
     
    20102059 
    20112060struct TAPE_SET_POSITION { 
    2012     DWORD Method; 
    2013     DWORD Partition; 
     2061    DWORD         Method; 
     2062    DWORD         Partition; 
    20142063    LARGE_INTEGER Offset; 
    2015     BOOLEAN Immediate; 
     2064    BOOLEAN       Immediate; 
    20162065} 
    20172066alias TAPE_SET_POSITION* PTAPE_SET_POSITION; 
    20182067 
    20192068struct TAPE_WRITE_MARKS { 
    2020     DWORD Type; 
    2021     DWORD Count; 
     2069    DWORD   Type; 
     2070    DWORD   Count; 
    20222071    BOOLEAN Immediate; 
    20232072} 
     
    20452094    WORD Length; 
    20462095    WORD Flags; 
    2047     BYTE Text[1]; 
     2096    BYTE _Text; 
     2097 
     2098    BYTE* Text() { return &_Text; } 
    20482099} 
    20492100alias MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY; 
     
    20582109struct MESSAGE_RESOURCE_DATA { 
    20592110    DWORD NumberOfBlocks; 
    2060     MESSAGE_RESOURCE_BLOCK Blocks[1]; 
     2111    MESSAGE_RESOURCE_BLOCK _Blocks; 
     2112 
     2113    MESSAGE_RESOURCE_BLOCK* Blocks() { return &_Blocks; } 
    20612114} 
    20622115alias MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA; 
    20632116 
    20642117struct LIST_ENTRY { 
    2065     LIST_ENTRY *Flink; 
    2066     LIST_ENTRY *Blink; 
     2118    LIST_ENTRY* Flink; 
     2119    LIST_ENTRY* Blink; 
    20672120} 
    20682121alias LIST_ENTRY* PLIST_ENTRY; 
    20692122 
    20702123struct SINGLE_LIST_ENTRY { 
    2071     SINGLE_LIST_ENTRY *Next; 
    2072 
    2073 alias SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY; 
    2074  
    2075  
    2076 //#ifndef _SLIST_HEADER_ 
    2077 //#define _SLIST_HEADER_ 
    2078 alias  SINGLE_LIST_ENTRY SLIST_ENTRY; 
    2079 alias PSINGLE_LIST_ENTRY PSLIST_ENTRY; 
     2124    SINGLE_LIST_ENTRY* Next; 
     2125
     2126alias SINGLE_LIST_ENTRY SLIST_ENTRY; 
     2127alias SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY, PSLIST_ENTRY; 
     2128 
    20802129union SLIST_HEADER { 
    2081     ULONGLONG Alignment; 
     2130    ULONGLONG       Alignment; 
    20822131    struct { 
    20832132        SLIST_ENTRY Next; 
    2084         WORD Depth; 
    2085         WORD Sequence; 
     2133        WORD        Depth; 
     2134        WORD        Sequence; 
    20862135    } 
    20872136} 
    20882137alias SLIST_HEADER* PSLIST_HEADER; 
    2089 // #endif /* !_SLIST_HEADER_ */ 
    20902138 
    20912139struct RTL_CRITICAL_SECTION_DEBUG { 
    2092     WORD Type; 
    2093     WORD CreatorBackTraceIndex; 
    2094     RTL_CRITICAL_SECTION *CriticalSection; 
     2140    WORD       Type; 
     2141    WORD       CreatorBackTraceIndex; 
     2142    RTL_CRITICAL_SECTION* CriticalSection; 
    20952143    LIST_ENTRY ProcessLocksList; 
    2096     DWORD EntryCount; 
    2097     DWORD ContentionCount; 
    2098     DWORD Spare[2]
     2144    DWORD      EntryCount; 
     2145    DWORD      ContentionCount; 
     2146    DWORD[2]   Spare
    20992147} 
    21002148alias RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG; 
     
    21022150struct RTL_CRITICAL_SECTION { 
    21032151    PRTL_CRITICAL_SECTION_DEBUG DebugInfo; 
    2104     LONG LockCount; 
    2105     LONG RecursionCount; 
     2152    LONG   LockCount; 
     2153    LONG   RecursionCount; 
    21062154    HANDLE OwningThread; 
    21072155    HANDLE LockSemaphore; 
    2108     DWORD Reserved; 
     2156    DWORD Reserved; 
    21092157} 
    21102158alias RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; 
     
    21172165    DWORD TimeWritten; 
    21182166    DWORD EventID; 
    2119     WORD EventType; 
    2120     WORD NumStrings; 
    2121     WORD EventCategory; 
    2122     WORD ReservedFlags; 
     2167    WORD EventType; 
     2168    WORD NumStrings; 
     2169    WORD EventCategory; 
     2170    WORD ReservedFlags; 
    21232171    DWORD ClosingRecordNumber; 
    21242172    DWORD StringOffset; 
     
    21312179 
    21322180struct OSVERSIONINFOA { 
    2133     DWORD dwOSVersionInfoSize; 
    2134     DWORD dwMajorVersion; 
    2135     DWORD dwMinorVersion; 
    2136     DWORD dwBuildNumber; 
    2137     DWORD dwPlatformId; 
    2138     CHAR szCSDVersion[128]
     2181    DWORD     dwOSVersionInfoSize; 
     2182    DWORD     dwMajorVersion; 
     2183    DWORD     dwMinorVersion; 
     2184    DWORD     dwBuildNumber; 
     2185    DWORD     dwPlatformId; 
     2186    CHAR[128] szCSDVersion
    21392187} 
    21402188alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA; 
    21412189 
    21422190struct OSVERSIONINFOW { 
    2143     DWORD dwOSVersionInfoSize; 
    2144     DWORD dwMajorVersion; 
    2145     DWORD dwMinorVersion; 
    2146     DWORD dwBuildNumber; 
    2147     DWORD dwPlatformId; 
    2148     WCHAR szCSDVersion[128]
     2191    DWORD      dwOSVersionInfoSize; 
     2192    DWORD      dwMajorVersion; 
     2193    DWORD      dwMinorVersion; 
     2194    DWORD      dwBuildNumber; 
     2195    DWORD      dwPlatformId; 
     2196    WCHAR[128] szCSDVersion
    21492197} 
    21502198alias OSVERSIONINFOW* POSVERSIONINFOW, LPOSVERSIONINFOW; 
    21512199 
    21522200struct OSVERSIONINFOEXA { 
    2153     DWORD dwOSVersionInfoSize; 
    2154     DWORD dwMajorVersion; 
    2155     DWORD dwMinorVersion; 
    2156     DWORD dwBuildNumber; 
    2157     DWORD dwPlatformId; 
    2158     CHAR szCSDVersion[128]
    2159     WORD wServicePackMajor; 
    2160     WORD wServicePackMinor; 
    2161     WORD wSuiteMask; 
    2162     BYTE wProductType; 
    2163     BYTE wReserved; 
     2201    DWORD     dwOSVersionInfoSize; 
     2202    DWORD     dwMajorVersion; 
     2203    DWORD     dwMinorVersion; 
     2204    DWORD     dwBuildNumber; 
     2205    DWORD     dwPlatformId; 
     2206    CHAR[128] szCSDVersion
     2207    WORD      wServicePackMajor; 
     2208    WORD      wServicePackMinor; 
     2209    WORD      wSuiteMask; 
     2210    BYTE      wProductType; 
     2211    BYTE      wReserved; 
    21642212} 
    21652213alias OSVERSIONINFOEXA* POSVERSIONINFOEXA, LPOSVERSIONINFOEXA; 
    21662214 
    21672215struct OSVERSIONINFOEXW { 
    2168     DWORD dwOSVersionInfoSize; 
    2169     DWORD dwMajorVersion; 
    2170     DWORD dwMinorVersion; 
    2171     DWORD dwBuildNumber; 
    2172     DWORD dwPlatformId; 
    2173     WCHAR szCSDVersion[128]
    2174     WORD wServicePackMajor; 
    2175     WORD wServicePackMinor; 
    2176     WORD wSuiteMask; 
    2177     BYTE wProductType; 
    2178     BYTE wReserved; 
     2216    DWORD      dwOSVersionInfoSize; 
     2217    DWORD      dwMajorVersion; 
     2218    DWORD      dwMinorVersion; 
     2219    DWORD      dwBuildNumber; 
     2220    DWORD      dwPlatformId; 
     2221    WCHAR[128] szCSDVersion
     2222    WORD       wServicePackMajor; 
     2223    WORD       wServicePackMinor; 
     2224    WORD       wSuiteMask; 
     2225    BYTE       wProductType; 
     2226    BYTE       wReserved; 
    21792227} 
    21802228alias OSVERSIONINFOEXW* POSVERSIONINFOEXW, LPOSVERSIONINFOEXW; 
    21812229 
    21822230align(2) struct IMAGE_VXD_HEADER { 
    2183     WORD e32_magic; 
    2184     BYTE e32_border; 
    2185     BYTE e32_worder; 
    2186     DWORD e32_level; 
    2187     WORD e32_cpu; 
    2188     WORD e32_os; 
    2189     DWORD e32_ver; 
    2190     DWORD e32_mflags; 
    2191     DWORD e32_mpages; 
    2192     DWORD e32_startobj; 
    2193     DWORD e32_eip; 
    2194     DWORD e32_stackobj; 
    2195     DWORD e32_esp; 
    2196     DWORD e32_pagesize; 
    2197     DWORD e32_lastpagesize; 
    2198     DWORD e32_fixupsize; 
    2199     DWORD e32_fixupsum; 
    2200     DWORD e32_ldrsize; 
    2201     DWORD e32_ldrsum; 
    2202     DWORD e32_objtab; 
    2203     DWORD e32_objcnt; 
    2204     DWORD e32_objmap; 
    2205     DWORD e32_itermap; 
    2206     DWORD e32_rsrctab; 
    2207     DWORD e32_rsrccnt; 
    2208     DWORD e32_restab; 
    2209     DWORD e32_enttab; 
    2210     DWORD e32_dirtab; 
    2211     DWORD e32_dircnt; 
    2212     DWORD e32_fpagetab; 
    2213     DWORD e32_frectab; 
    2214     DWORD e32_impmod; 
    2215     DWORD e32_impmodcnt; 
    2216     DWORD e32_impproc; 
    2217     DWORD e32_pagesum; 
    2218     DWORD e32_datapage; 
    2219     DWORD e32_preload; 
    2220     DWORD e32_nrestab; 
    2221     DWORD e32_cbnrestab; 
    2222     DWORD e32_nressum; 
    2223     DWORD e32_autodata; 
    2224     DWORD e32_debuginfo; 
    2225     DWORD e32_debuglen; 
    2226     DWORD e32_instpreload; 
    2227     DWORD e32_instdemand; 
    2228     DWORD e32_heapsize; 
    2229     BYTE e32_res3[12]
    2230     DWORD e32_winresoff; 
    2231     DWORD e32_winreslen; 
    2232     WORD e32_devid; 
    2233     WORD e32_ddkver; 
     2231    WORD     e32_magic; 
     2232    BYTE     e32_border; 
     2233    BYTE     e32_worder; 
     2234    DWORD    e32_level; 
     2235    WORD     e32_cpu; 
     2236    WORD     e32_os; 
     2237    DWORD    e32_ver; 
     2238    DWORD    e32_mflags; 
     2239    DWORD    e32_mpages; 
     2240    DWORD    e32_startobj; 
     2241    DWORD    e32_eip; 
     2242    DWORD    e32_stackobj; 
     2243    DWORD    e32_esp; 
     2244    DWORD    e32_pagesize; 
     2245    DWORD    e32_lastpagesize; 
     2246    DWORD    e32_fixupsize; 
     2247    DWORD    e32_fixupsum; 
     2248    DWORD    e32_ldrsize; 
     2249    DWORD    e32_ldrsum; 
     2250    DWORD    e32_objtab; 
     2251    DWORD    e32_objcnt; 
     2252    DWORD    e32_objmap; 
     2253    DWORD    e32_itermap; 
     2254    DWORD    e32_rsrctab; 
     2255    DWORD    e32_rsrccnt; 
     2256    DWORD    e32_restab; 
     2257    DWORD    e32_enttab; 
     2258    DWORD    e32_dirtab; 
     2259    DWORD    e32_dircnt; 
     2260    DWORD    e32_fpagetab; 
     2261    DWORD    e32_frectab; 
     2262    DWORD    e32_impmod; 
     2263    DWORD    e32_impmodcnt; 
     2264    DWORD    e32_impproc; 
     2265    DWORD    e32_pagesum; 
     2266    DWORD    e32_datapage; 
     2267    DWORD    e32_preload; 
     2268    DWORD    e32_nrestab; 
     2269    DWORD    e32_cbnrestab; 
     2270    DWORD    e32_nressum; 
     2271    DWORD    e32_autodata; 
     2272    DWORD    e32_debuginfo; 
     2273    DWORD    e32_debuglen; 
     2274    DWORD    e32_instpreload; 
     2275    DWORD    e32_instdemand; 
     2276    DWORD    e32_heapsize; 
     2277    BYTE[12] e32_res3
     2278    DWORD    e32_winresoff; 
     2279    DWORD    e32_winreslen; 
     2280    WORD     e32_devid; 
     2281    WORD     e32_ddkver; 
    22342282} 
    22352283alias IMAGE_VXD_HEADER* PIMAGE_VXD_HEADER; 
     
    22372285align(4): 
    22382286struct IMAGE_FILE_HEADER { 
    2239     WORD Machine; 
    2240     WORD NumberOfSections; 
     2287    WORD Machine; 
     2288    WORD NumberOfSections; 
    22412289    DWORD TimeDateStamp; 
    22422290    DWORD PointerToSymbolTable; 
    22432291    DWORD NumberOfSymbols; 
    2244     WORD SizeOfOptionalHeader; 
    2245     WORD Characteristics; 
     2292    WORD SizeOfOptionalHeader; 
     2293    WORD Characteristics; 
    22462294} 
    22472295alias IMAGE_FILE_HEADER* PIMAGE_FILE_HEADER; 
    22482296// const IMAGE_SIZEOF_FILE_HEADER = IMAGE_FILE_HEADER.sizeof; 
    2249  
    22502297 
    22512298struct IMAGE_DATA_DIRECTORY { 
     
    22562303 
    22572304struct IMAGE_OPTIONAL_HEADER { 
    2258     WORD Magic; 
    2259     BYTE MajorLinkerVersion; 
    2260     BYTE MinorLinkerVersion; 
     2305    WORD Magic; 
     2306    BYTE MajorLinkerVersion; 
     2307    BYTE MinorLinkerVersion; 
    22612308    DWORD SizeOfCode; 
    22622309    DWORD SizeOfInitializedData; 
     
    22682315    DWORD SectionAlignment; 
    22692316    DWORD FileAlignment; 
    2270     WORD MajorOperatingSystemVersion; 
    2271     WORD MinorOperatingSystemVersion; 
    2272     WORD MajorImageVersion; 
    2273     WORD MinorImageVersion; 
    2274     WORD MajorSubsystemVersion; 
    2275     WORD MinorSubsystemVersion; 
     2317    WORD MajorOperatingSystemVersion; 
     2318    WORD MinorOperatingSystemVersion; 
     2319    WORD MajorImageVersion; 
     2320    WORD MinorImageVersion; 
     2321    WORD MajorSubsystemVersion; 
     2322    WORD MinorSubsystemVersion; 
    22762323    DWORD Reserved1; 
    22772324    DWORD SizeOfImage; 
    22782325    DWORD SizeOfHeaders; 
    22792326    DWORD CheckSum; 
    2280     WORD Subsystem; 
    2281     WORD DllCharacteristics; 
     2327    WORD Subsystem; 
     2328    WORD DllCharacteristics; 
    22822329    DWORD SizeOfStackReserve; 
    22832330    DWORD SizeOfStackCommit; 
     
    22862333    DWORD LoaderFlags; 
    22872334    DWORD NumberOfRvaAndSizes; 
    2288     IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]
     2335    IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory
    22892336} 
    22902337alias IMAGE_OPTIONAL_HEADER* PIMAGE_OPTIONAL_HEADER; 
    22912338 
    22922339struct IMAGE_ROM_OPTIONAL_HEADER { 
    2293     WORD Magic; 
    2294     BYTE MajorLinkerVersion; 
    2295     BYTE MinorLinkerVersion; 
    2296     DWORD SizeOfCode; 
    2297     DWORD SizeOfInitializedData; 
    2298     DWORD SizeOfUninitializedData; 
    2299     DWORD AddressOfEntryPoint; 
    2300     DWORD BaseOfCode; 
    2301     DWORD BaseOfData; 
    2302     DWORD BaseOfBss; 
    2303     DWORD GprMask; 
    2304     DWORD CprMask[4]
    2305     DWORD GpValue; 
     2340    WORD     Magic; 
     2341    BYTE     MajorLinkerVersion; 
     2342    BYTE     MinorLinkerVersion; 
     2343    DWORD    SizeOfCode; 
     2344    DWORD    SizeOfInitializedData; 
     2345    DWORD    SizeOfUninitializedData; 
     2346    DWORD    AddressOfEntryPoint; 
     2347    DWORD    BaseOfCode; 
     2348    DWORD    BaseOfData; 
     2349    DWORD    BaseOfBss; 
     2350    DWORD    GprMask; 
     2351    DWORD[4] CprMask
     2352    DWORD    GpValue; 
    23062353} 
    23072354alias IMAGE_ROM_OPTIONAL_HEADER* PIMAGE_ROM_OPTIONAL_HEADER; 
     
    23092356align(2): 
    23102357struct IMAGE_DOS_HEADER { 
    2311     WORD e_magic; 
    2312     WORD e_cblp; 
    2313     WORD e_cp; 
    2314     WORD e_crlc; 
    2315     WORD e_cparhdr; 
    2316     WORD e_minalloc; 
    2317     WORD e_maxalloc; 
    2318     WORD e_ss; 
    2319     WORD e_sp; 
    2320     WORD e_csum; 
    2321     WORD e_ip; 
    2322     WORD e_cs; 
    2323     WORD e_lfarlc; 
    2324     WORD e_ovno; 
    2325     WORD e_res[4]
    2326     WORD e_oemid; 
    2327     WORD e_oeminfo; 
    2328     WORD e_res2[10]
    2329     LONG e_lfanew; 
     2358    WORD     e_magic; 
     2359    WORD     e_cblp; 
     2360    WORD     e_cp; 
     2361    WORD     e_crlc; 
     2362    WORD     e_cparhdr; 
     2363    WORD     e_minalloc; 
     2364    WORD     e_maxalloc; 
     2365    WORD     e_ss; 
     2366    WORD     e_sp; 
     2367    WORD     e_csum; 
     2368    WORD     e_ip; 
     2369    WORD     e_cs; 
     2370    WORD     e_lfarlc; 
     2371    WORD     e_ovno; 
     2372    WORD[4] e_res
     2373    WORD     e_oemid; 
     2374    WORD     e_oeminfo; 
     2375    WORD[10] e_res2
     2376    LONG     e_lfanew; 
    23302377} 
    23312378alias IMAGE_DOS_HEADER* PIMAGE_DOS_HEADER; 
     
    23662413 
    23672414align(4) struct IMAGE_NT_HEADERS { 
    2368     DWORD Signature; 
    2369     IMAGE_FILE_HEADER FileHeader; 
     2415    DWORD                 Signature; 
     2416    IMAGE_FILE_HEADER     FileHeader; 
    23702417    IMAGE_OPTIONAL_HEADER OptionalHeader; 
    23712418} 
     
    23732420 
    23742421struct IMAGE_ROM_HEADERS { 
    2375     IMAGE_FILE_HEADER FileHeader; 
     2422    IMAGE_FILE_HEADER         FileHeader; 
    23762423    IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; 
    23772424} 
     
    23792426 
    23802427struct IMAGE_SECTION_HEADER { 
    2381     BYTE Name[IMAGE_SIZEOF_SHORT_NAME]
     2428    BYTE[IMAGE_SIZEOF_SHORT_NAME] Name
    23822429    union _Misc { 
    23832430        DWORD PhysicalAddress; 
     
    23902437    DWORD PointerToRelocations; 
    23912438    DWORD PointerToLinenumbers; 
    2392     WORD NumberOfRelocations; 
    2393     WORD NumberOfLinenumbers; 
     2439    WORD NumberOfRelocations; 
     2440    WORD NumberOfLinenumbers; 
    23942441    DWORD Characteristics; 
    23952442} 
    2396 alias IMAGE_SECTION_HEADER *PIMAGE_SECTION_HEADER; 
     2443alias IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER; 
    23972444 
    23982445struct IMAGE_SYMBOL { 
    23992446    union _N { 
    2400         BYTE ShortName[8]
     2447        BYTE[8]   ShortName
    24012448        struct Name { 
    24022449            DWORD Short; 
    24032450            DWORD Long; 
    24042451        } 
    2405         PBYTE LongName[2]
     2452        PBYTE[2]  LongName
    24062453    } 
    2407     _N N; 
     2454    _N    N; 
    24082455    DWORD Value; 
    24092456    SHORT SectionNumber; 
    2410     WORD Type; 
    2411     BYTE StorageClass; 
    2412     BYTE NumberOfAuxSymbols; 
     2457    WORD Type; 
     2458    BYTE StorageClass; 
     2459    BYTE NumberOfAuxSymbols; 
    24132460} 
    24142461alias IMAGE_SYMBOL* PIMAGE_SYMBOL; 
    24152462 
    24162463union IMAGE_AUX_SYMBOL { 
    2417     struct Sym { 
    2418         DWORD TagIndex; 
     2464    struct _Sym { 
     2465        DWORD           TagIndex; 
    24192466        union _Misc { 
    2420             struct LnSz { 
    2421                 WORD Linenumber; 
    2422                 WORD Size; 
     2467            struct _LnSz { 
     2468                WORD    Linenumber; 
     2469                WORD    Size; 
    24232470            } 
    2424             DWORD TotalSize; 
     2471            _LnSz       LnSz; 
     2472            DWORD       TotalSize; 
    24252473        } 
    24262474        _Misc Misc; 
    24272475        union _FcnAry { 
    2428             struct Function { 
    2429                 DWORD PointerToLinenumber; 
    2430                 DWORD PointerToNextFunction; 
     2476            struct _Function { 
     2477                DWORD   PointerToLinenumber; 
     2478                DWORD   PointerToNextFunction; 
    24312479            } 
    2432             struct Array { 
    2433                 WORD Dimension[4]; 
     2480            _Function   Function; 
     2481            struct _Array { 
     2482                WORD[4] Dimension; 
    24342483            } 
     2484            _Array      Array; 
    24352485        } 
    2436         _FcnAry FcnAry; 
    2437         WORD TvIndex; 
     2486        _FcnAry         FcnAry; 
     2487        WORD            TvIndex; 
    24382488    } 
    2439     struct File { 
    2440         BYTE Name[IMAGE_SIZEOF_SYMBOL]; 
     2489    _Sym                Sym; 
     2490    struct _File { 
     2491        BYTE[IMAGE_SIZEOF_SYMBOL] Name; 
    24412492    } 
    2442     struct Section { 
    2443         DWORD Length; 
    2444         WORD NumberOfRelocations; 
    2445         WORD NumberOfLinenumbers; 
    2446         DWORD CheckSum; 
    2447         SHORT Number; 
    2448         BYTE Selection; 
     2493    _File               File; 
     2494    struct _Section { 
     2495        DWORD           Length; 
     2496        WORD            NumberOfRelocations; 
     2497        WORD            NumberOfLinenumbers; 
     2498        DWORD           CheckSum; 
     2499        SHORT           Number; 
     2500        BYTE            Selection; 
    24492501    } 
     2502    _Section            Section; 
    24502503} 
    24512504alias IMAGE_AUX_SYMBOL* PIMAGE_AUX_SYMBOL; 
     
    24682521        DWORD RelocCount; 
    24692522    } 
    2470     DWORD SymbolTableIndex; 
    2471     WORD Type; 
     2523    DWORD     SymbolTableIndex; 
     2524    WORD      Type; 
    24722525} 
    24732526alias IMAGE_RELOCATION* PIMAGE_RELOCATION; 
     
    24852538    } 
    24862539    _Type Type; 
    2487     WORD Linenumber; 
     2540    WORD Linenumber; 
    24882541} 
    24892542alias IMAGE_LINENUMBER* PIMAGE_LINENUMBER; 
     
    24912544align(4): 
    24922545struct IMAGE_ARCHIVE_MEMBER_HEADER { 
    2493     BYTE Name[16]
    2494     BYTE Date[12]
    2495     BYTE UserID[6]
    2496     BYTE GroupID[6]
    2497     BYTE Mode[8]
    2498     BYTE Size[10]
    2499     BYTE EndHeader[2]
     2546    BYTE[16] Name
     2547    BYTE[12] Date
     2548    BYTE[6]  UserID
     2549    BYTE[6]  GroupID
     2550    BYTE[8]  Mode
     2551    BYTE[10] Size
     2552    BYTE[2]  EndHeader
    25002553} 
    25012554alias IMAGE_ARCHIVE_MEMBER_HEADER* PIMAGE_ARCHIVE_MEMBER_HEADER; 
     
    25042557    DWORD Characteristics; 
    25052558    DWORD TimeDateStamp; 
    2506     WORD MajorVersion; 
    2507     WORD MinorVersion; 
     2559    WORD MajorVersion; 
     2560    WORD MinorVersion; 
    25082561    DWORD Name; 
    25092562    DWORD Base; 
     
    25182571struct IMAGE_IMPORT_BY_NAME { 
    25192572    WORD Hint; 
    2520     BYTE Name[1]; 
     2573    BYTE _Name; 
     2574 
     2575    BYTE* Name() { 
     2576        return &_Name; 
     2577    } 
    25212578} 
    25222579alias IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME; 
     
    25442601alias IMAGE_THUNK_DATA64* PIMAGE_THUNK_DATA64; 
    25452602 
    2546 version(Win64) { 
     2603version (Win64) { 
    25472604    alias IMAGE_THUNK_DATA64  IMAGE_THUNK_DATA; 
    25482605    alias PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA; 
     
    25662623struct IMAGE_BOUND_IMPORT_DESCRIPTOR { 
    25672624    DWORD TimeDateStamp; 
    2568     WORD OffsetModuleName; 
    2569     WORD NumberOfModuleForwarderRefs; 
     2625    WORD OffsetModuleName; 
     2626    WORD NumberOfModuleForwarderRefs; 
    25702627} 
    25712628alias IMAGE_BOUND_IMPORT_DESCRIPTOR* PIMAGE_BOUND_IMPORT_DESCRIPTOR; 
     
    25732630struct IMAGE_BOUND_FORWARDER_REF { 
    25742631    DWORD TimeDateStamp; 
    2575     WORD OffsetModuleName; 
    2576     WORD Reserved; 
     2632    WORD OffsetModuleName; 
     2633    WORD Reserved; 
    25772634} 
    25782635alias IMAGE_BOUND_FORWARDER_REF* PIMAGE_BOUND_FORWARDER_REF; 
    2579  
    2580 extern (Windows): 
    2581 alias void function (PVOID,DWORD,PVOID)  PIMAGE_TLS_CALLBACK; 
    25822636 
    25832637struct IMAGE_TLS_DIRECTORY32 { 
     
    25962650    ULONGLONG AddressOfIndex; 
    25972651    ULONGLONG AddressOfCallBacks; 
    2598     DWORD SizeOfZeroFill; 
    2599     DWORD Characteristics; 
    2600 } 
    2601 alias IMAGE_TLS_DIRECTORY64 *PIMAGE_TLS_DIRECTORY64; 
     2652    DWORD     SizeOfZeroFill; 
     2653    DWORD     Characteristics; 
     2654} 
     2655alias IMAGE_TLS_DIRECTORY64* PIMAGE_TLS_DIRECTORY64; 
    26022656 
    26032657version (Win64) { 
     
    26122666    DWORD Characteristics; 
    26132667    DWORD TimeDateStamp; 
    2614     WORD MajorVersion; 
    2615     WORD MinorVersion; 
    2616     WORD NumberOfNamedEntries; 
    2617     WORD NumberOfIdEntries; 
    2618 } IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY; 
     2668    WORD  MajorVersion; 
     2669    WORD  MinorVersion; 
     2670    WORD  NumberOfNamedEntries; 
     2671    WORD  NumberOfIdEntries; 
     2672
     2673alias IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY; 
    26192674 
    26202675struct IMAGE_RESOURCE_DIRECTORY_ENTRY { 
    26212676    union { 
    2622         struct { 
    2623 //            DWORD NameOffset:31; 
    2624 //            DWORD NameIsString:1; 
    2625         } 
     2677        /+struct { 
     2678          DWORD NameOffset:31; 
     2679          DWORD NameIsString:1; 
     2680        }+/ 
    26262681        DWORD Name; 
    26272682        WORD Id; 
    26282683    } 
    2629     union { 
    2630         DWORD OffsetToData; 
    2631         struct { 
    2632 //          DWORD OffsetToDirectory:31; 
    2633 //          DWORD DataIsDirectory:1; 
    2634         } 
     2684    DWORD OffsetToData; 
     2685        /+struct { 
     2686            DWORD OffsetToDirectory:31; 
     2687            DWORD DataIsDirectory:1; 
     2688        }+/ 
     2689 
     2690    uint NameOffset()        { return Name & 0x7FFFFFFF; } 
     2691    bool NameIsString()      { return cast(bool) Name & 0x80000000; } 
     2692    uint OffsetToDirectory() { return OffsetToData & 0x7FFFFFFF; } 
     2693    bool DataIsDirectory()   { return cast(bool) OffsetToData & 0x80000000; } 
     2694 
     2695    uint NameOffset(uint n) { 
     2696        Name = (Name & 0x80000000) | (n & 0x7FFFFFFF); 
     2697        return n & 0x7FFFFFFF; 
     2698    } 
     2699 
     2700    bool NameIsString(bool n) { 
     2701        Name = (Name & 0x7FFFFFFF) | (n << 31); return n; 
     2702    } 
     2703 
     2704    uint OffsetToDirectory(uint o) { 
     2705        OffsetToData = (OffsetToData & 0x80000000) | (o & 0x7FFFFFFF); 
     2706        return o & 0x7FFFFFFF; 
     2707    } 
     2708 
     2709    bool DataIsDirectory(bool d) { 
     2710        OffsetToData = (OffsetToData & 0x7FFFFFFF) | (d << 31); return d; 
    26352711    } 
    26362712} 
     
    26392715struct IMAGE_RESOURCE_DIRECTORY_STRING { 
    26402716    WORD Length; 
    2641     CHAR NameString[1]; 
     2717    CHAR _NameString; 
     2718 
     2719    CHAR* NameString() { return &_NameString; } 
    26422720} 
    26432721alias IMAGE_RESOURCE_DIRECTORY_STRING* PIMAGE_RESOURCE_DIRECTORY_STRING; 
    26442722 
    26452723struct IMAGE_RESOURCE_DIR_STRING_U { 
    2646     WORD Length; 
    2647     WCHAR NameString[1]; 
     2724    WORD  Length; 
     2725    WCHAR _NameString; 
     2726 
     2727    WCHAR* NameString() { return &_NameString; } 
    26482728} 
    26492729alias IMAGE_RESOURCE_DIR_STRING_U* PIMAGE_RESOURCE_DIR_STRING_U; 
     
    26582738 
    26592739struct IMAGE_LOAD_CONFIG_DIRECTORY { 
    2660     DWORD Characteristics; 
    2661     DWORD TimeDateStamp; 
    2662     WORD MajorVersion; 
    2663     WORD MinorVersion; 
    2664     DWORD GlobalFlagsClear; 
    2665     DWORD GlobalFlagsSet; 
    2666     DWORD CriticalSectionDefaultTimeout; 
    2667     DWORD DeCommitFreeBlockThreshold; 
    2668     DWORD DeCommitTotalFreeThreshold; 
    2669     PVOID LockPrefixTable; 
    2670     DWORD MaximumAllocationSize; 
    2671     DWORD VirtualMemoryThreshold; 
    2672     DWORD ProcessHeapFlags; 
    2673     DWORD Reserved[4]
     2740    DWORD    Characteristics; 
     2741    DWORD    TimeDateStamp; 
     2742    WORD     MajorVersion; 
     2743    WORD     MinorVersion; 
     2744    DWORD    GlobalFlagsClear; 
     2745    DWORD    GlobalFlagsSet; 
     2746    DWORD    CriticalSectionDefaultTimeout; 
     2747    DWORD    DeCommitFreeBlockThreshold; 
     2748    DWORD    DeCommitTotalFreeThreshold; 
     2749    PVOID    LockPrefixTable; 
     2750    DWORD    MaximumAllocationSize; 
     2751    DWORD    VirtualMemoryThreshold; 
     2752    DWORD    ProcessHeapFlags; 
     2753    DWORD[4] Reserved
    26742754} 
    26752755alias IMAGE_LOAD_CONFIG_DIRECTORY* PIMAGE_LOAD_CONFIG_DIRECTORY; 
     
    26872767    DWORD Characteristics; 
    26882768    DWORD TimeDateStamp; 
    2689     WORD MajorVersion; 
    2690     WORD MinorVersion; 
     2769    WORD MajorVersion; 
     2770    WORD MinorVersion; 
    26912771    DWORD Type; 
    26922772    DWORD SizeOfData; 
     
    26972777 
    26982778struct FPO_DATA { 
    2699     DWORD ulOffStart; 
    2700     DWORD cbProcSize; 
    2701     DWORD cdwLocals; 
    2702     WORD cdwParams; 
    2703     WORD bitField_FixForD; // FIXME 
    2704 /* FIXME 
    2705     WORD cbProlog:8; 
     2779    DWORD ulOffStart; 
     2780    DWORD cbProcSize; 
     2781    DWORD cdwLocals; 
     2782    WORD   cdwParams; 
     2783    ubyte  cbProlog; 
     2784    ubyte  _bf; 
     2785/+ 
    27062786    WORD cbRegs:3; 
    27072787    WORD fHasSEH:1; 
     
    27092789    WORD reserved:1; 
    27102790    WORD cbFrame:2; 
    2711 */ 
     2791+/ 
     2792    ubyte cbRegs()  { return _bf & 0x07; } 
     2793    bool fHasSEH()  { return _bf & 0x08; } 
     2794    bool fUseBP()   { return _bf & 0x10; } 
     2795    bool reserved() { return _bf & 0x20; } 
     2796    ubyte cbFrame() { return _bf >> 6; } 
     2797 
     2798    ubyte cbRegs(ubyte c) { 
     2799        _bf = cast(ubyte) ((_bf & ~0x07) | (c & 0x07)); 
     2800        return c & 0x07; 
     2801    } 
     2802 
     2803    bool fHasSEH(bool f)  { _bf = (&bf & ~0x08) | (f << 3); return f; } 
     2804    bool fUseBP(bool f)   { _bf = (&bf & ~0x10) | (f << 4); return f; } 
     2805    bool reserved(bool r) { _bf = (&bf & ~0x20) | (r << 5); return r; } 
     2806 
     2807    ubyte cbFrame(ubyte c) { 
     2808        _bf = cast(ubyte) ((_bf & ~0xC0) | ((c & 0x03) << 6)); 
     2809        return c & 0x03; 
     2810    } 
    27122811} 
    27132812alias FPO_DATA* PFPO_DATA; 
    27142813 
    27152814struct IMAGE_DEBUG_MISC { 
    2716     DWORD DataType; 
    2717     DWORD Length; 
     2815    DWORD   DataType; 
     2816    DWORD   Length; 
    27182817    BOOLEAN Unicode; 
    2719     BYTE Reserved[3]; 
    2720     BYTE Data[1]; 
     2818    BYTE[3] Reserved; 
     2819    BYTE    _Data; 
     2820 
     2821    BYTE*   Data() { return &_Data; } 
    27212822} 
    27222823alias IMAGE_DEBUG_MISC* PIMAGE_DEBUG_MISC; 
     
    27302831 
    27312832struct IMAGE_SEPARATE_DEBUG_HEADER { 
    2732     WORD Signature; 
    2733     WORD Flags; 
    2734     WORD Machine; 
    2735     WORD Characteristics; 
    2736     DWORD TimeDateStamp; 
    2737     DWORD CheckSum; 
    2738     DWORD ImageBase; 
    2739     DWORD SizeOfImage; 
    2740     DWORD NumberOfSections; 
    2741     DWORD ExportedNamesSize; 
    2742     DWORD DebugDirectorySize; 
    2743     DWORD SectionAlignment; 
    2744     DWORD Reserved[2]
     2833    WORD     Signature; 
     2834    WORD     Flags; 
     2835    WORD     Machine; 
     2836    WORD     Characteristics; 
     2837    DWORD    TimeDateStamp; 
     2838    DWORD    CheckSum; 
     2839    DWORD    ImageBase; 
     2840    DWORD    SizeOfImage; 
     2841    DWORD    NumberOfSections; 
     2842    DWORD    ExportedNamesSize; 
     2843    DWORD    DebugDirectorySize; 
     2844    DWORD    SectionAlignment; 
     2845    DWORD[2] Reserved
    27452846} 
    27462847alias IMAGE_SEPARATE_DEBUG_HEADER* PIMAGE_SEPARATE_DEBUG_HEADER; 
     
    27942895    WORD   ReparseDataLength; 
    27952896    WORD   Reserved; 
    2796     union _u { 
    2797         struct GenericReparseBuffer { 
    2798             BYTE   DataBuffer[1]; 
     2897    union { 
     2898        struct _GenericReparseBuffer { 
     2899            BYTE  _DataBuffer; 
     2900 
     2901            BYTE* DataBuffer() { return &_DataBuffer; } 
    27992902        } 
    2800         struct SymbolicLinkReparseBuffer { 
    2801             WORD   SubstituteNameOffset; 
    2802             WORD   SubstituteNameLength; 
    2803             WORD   PrintNameOffset; 
    2804             WORD   PrintNameLength; 
    2805             WCHAR PathBuffer[1]; 
     2903        _GenericReparseBuffer GenericReparseBuffer; 
     2904        struct _SymbolicLinkReparseBuffer { 
     2905            WORD  SubstituteNameOffset; 
     2906            WORD  SubstituteNameLength; 
     2907            WORD  PrintNameOffset; 
     2908            WORD  PrintNameLength; 
     2909            // ??? This is in MinGW, but absent in MSDN docs 
     2910            // ULONG Flags; 
     2911            WCHAR _PathBuffer; 
     2912 
     2913            WCHAR* PathBuffer() { return &_PathBuffer; } 
    28062914        } 
    2807         struct MountPointReparseBuffer { 
    2808             WORD   SubstituteNameOffset; 
    2809             WORD   SubstituteNameLength; 
    2810             WORD   PrintNameOffset; 
    2811             WORD   PrintNameLength; 
    2812             WCHAR PathBuffer[1]; 
     2915        _SymbolicLinkReparseBuffer SymbolicLinkReparseBuffer; 
     2916        struct _MountPointReparseBuffer { 
     2917            WORD  SubstituteNameOffset; 
     2918            WORD  SubstituteNameLength; 
     2919            WORD  PrintNameOffset; 
     2920            WORD  PrintNameLength; 
     2921            WCHAR _PathBuffer; 
     2922 
     2923            WCHAR* PathBuffer() { return &_PathBuffer; } 
    28132924        } 
     2925        _MountPointReparseBuffer MountPointReparseBuffer; 
    28142926    } 
    2815     _u u; 
    28162927} 
    28172928alias REPARSE_DATA_BUFFER *PREPARSE_DATA_BUFFER; 
    28182929 
    28192930struct REPARSE_GUID_DATA_BUFFER { 
    2820     DWORD  ReparseTag; 
    2821     WORD   ReparseDataLength; 
    2822     WORD   Reserved; 
    2823     GUID   ReparseGuid; 
    2824     struct GenericReparseBuffer { 
    2825         BYTE DataBuffer[1]; 
     2931    DWORD    ReparseTag; 
     2932    WORD     ReparseDataLength; 
     2933    WORD     Reserved; 
     2934    GUID     ReparseGuid; 
     2935    struct _GenericReparseBuffer { 
     2936        BYTE _DataBuffer; 
     2937 
     2938        BYTE* DataBuffer() { return &_DataBuffer; } 
    28262939    } 
     2940    _GenericReparseBuffer GenericReparseBuffer; 
    28272941} 
    28282942alias REPARSE_GUID_DATA_BUFFER* PREPARSE_GUID_DATA_BUFFER; 
    28292943 
    2830 const REPARSE_DATA_BUFFER_HEADER_SIZE = REPARSE_DATA_BUFFER.u.GenericReparseBuffer.DataBuffer.offsetof; 
    2831 const size_t REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = REPARSE_GUID_DATA_BUFFER.GenericReparseBuffer.DataBuffer.offsetof; 
    2832 const MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384; 
     2944const size_t 
     2945    REPARSE_DATA_BUFFER_HEADER_SIZE = REPARSE_DATA_BUFFER.GenericReparseBuffer.offsetof, 
     2946    REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = REPARSE_GUID_DATA_BUFFER.GenericReparseBuffer.offsetof, 
     2947    MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384; 
    28332948 
    28342949 
    28352950struct REPARSE_POINT_INFORMATION { 
    2836     WORD   ReparseDataLength; 
    2837     WORD   UnparsedNameLength; 
     2951    WORD ReparseDataLength; 
     2952    WORD UnparsedNameLength; 
    28382953} 
    28392954alias REPARSE_POINT_INFORMATION* PREPARSE_POINT_INFORMATION; 
    28402955 
    28412956union FILE_SEGMENT_ELEMENT { 
    2842     PVOID64 Buffer; 
     2957    PVOID64   Buffer; 
    28432958    ULONGLONG Alignment; 
    28442959} 
     
    28462961 
    28472962// JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants 
    2848 const JOB_OBJECT_LIMIT_WORKINGSET=0x0001; 
    2849 const JOB_OBJECT_LIMIT_PROCESS_TIME=0x0002; 
    2850 const JOB_OBJECT_LIMIT_JOB_TIME=0x0004; 
    2851 const JOB_OBJECT_LIMIT_ACTIVE_PROCESS=0x0008; 
    2852 const JOB_OBJECT_LIMIT_AFFINITY=0x0010; 
    2853 const JOB_OBJECT_LIMIT_PRIORITY_CLASS=0x0020; 
    2854 const JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME=0x0040; 
    2855 const JOB_OBJECT_LIMIT_SCHEDULING_CLASS=0x0080; 
    2856 const JOB_OBJECT_LIMIT_PROCESS_MEMORY=0x0100; 
    2857 const JOB_OBJECT_LIMIT_JOB_MEMORY=0x0200; 
    2858 const JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION=0x0400; 
    2859 const JOB_OBJECT_BREAKAWAY_OK=0x0800; 
    2860 const JOB_OBJECT_SILENT_BREAKAWAY=0x1000; 
     2963const DWORD 
     2964    JOB_OBJECT_LIMIT_WORKINGSET                 = 0x0001, 
     2965    JOB_OBJECT_LIMIT_PROCESS_TIME               = 0x0002, 
     2966    JOB_OBJECT_LIMIT_JOB_TIME                   = 0x0004, 
     2967    JOB_OBJECT_LIMIT_ACTIVE_PROCESS             = 0x0008, 
     2968    JOB_OBJECT_LIMIT_AFFINITY                   = 0x0010, 
     2969    JOB_OBJECT_LIMIT_PRIORITY_CLASS             = 0x0020, 
     2970    JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME          = 0x0040, 
     2971    JOB_OBJECT_LIMIT_SCHEDULING_CLASS           = 0x0080, 
     2972    JOB_OBJECT_LIMIT_PROCESS_MEMORY             = 0x0100, 
     2973    JOB_OBJECT_LIMIT_JOB_MEMORY                 = 0x0200, 
     2974    JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x0400, 
     2975    JOB_OBJECT_BREAKAWAY_OK                     = 0x0800, 
     2976    JOB_OBJECT_SILENT_BREAKAWAY                 = 0x1000; 
    28612977 
    28622978// JOBOBJECT_BASIC_UI_RESTRICTIONS.UIRestrictionsClass constants 
    2863 const JOB_OBJECT_UILIMIT_HANDLES=0x0001; 
    2864 const JOB_OBJECT_UILIMIT_READCLIPBOARD=0x0002; 
    2865 const JOB_OBJECT_UILIMIT_WRITECLIPBOARD=0x0004; 
    2866 const JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS=0x0008; 
    2867 const JOB_OBJECT_UILIMIT_DISPLAYSETTINGS=0x0010; 
    2868 const JOB_OBJECT_UILIMIT_GLOBALATOMS=0x0020; 
    2869 const JOB_OBJECT_UILIMIT_DESKTOP=0x0040; 
    2870 const JOB_OBJECT_UILIMIT_EXITWINDOWS=0x0080; 
     2979const DWORD 
     2980    JOB_OBJECT_UILIMIT_HANDLES          = 0x0001, 
     2981    JOB_OBJECT_UILIMIT_READCLIPBOARD    = 0x0002, 
     2982    JOB_OBJECT_UILIMIT_WRITECLIPBOARD   = 0x0004, 
     2983    JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x0008, 
     2984    JOB_OBJECT_UILIMIT_DISPLAYSETTINGS  = 0x0010, 
     2985    JOB_OBJECT_UILIMIT_GLOBALATOMS      = 0x0020, 
     2986    JOB_OBJECT_UILIMIT_DESKTOP          = 0x0040, 
     2987    JOB_OBJECT_UILIMIT_EXITWINDOWS      = 0x0080; 
    28712988 
    28722989// JOBOBJECT_SECURITY_LIMIT_INFORMATION.SecurityLimitFlags constants 
    2873 const JOB_OBJECT_SECURITY_NO_ADMIN=0x0001; 
    2874 const JOB_OBJECT_SECURITY_RESTRICTED_TOKEN=0x0002; 
    2875 const JOB_OBJECT_SECURITY_ONLY_TOKEN=0x0004; 
    2876 const JOB_OBJECT_SECURITY_FILTER_TOKENS=0x0008; 
     2990const DWORD 
     2991    JOB_OBJECT_SECURITY_NO_ADMIN         = 0x0001, 
     2992    JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x0002, 
     2993    JOB_OBJECT_SECURITY_ONLY_TOKEN       = 0x0004, 
     2994    JOB_OBJECT_SECURITY_FILTER_TOKENS    = 0x0008; 
    28772995 
    28782996// JOBOBJECT_END_OF_JOB_TIME_INFORMATION.EndOfJobTimeAction constants 
    2879 const JOB_OBJECT_TERMINATE_AT_END_OF_JOB=0; 
    2880 const JOB_OBJECT_POST_AT_END_OF_JOB=1; 
    2881  
    2882 const JOB_OBJECT_MSG_END_OF_JOB_TIME=1; 
    2883 const JOB_OBJECT_MSG_END_OF_PROCESS_TIME=2; 
    2884 const JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT=3; 
    2885 const JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO=4; 
    2886 const JOB_OBJECT_MSG_NEW_PROCESS=6; 
    2887 const JOB_OBJECT_MSG_EXIT_PROCESS=7; 
    2888 const JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS=8; 
    2889 const JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT=9; 
    2890 const JOB_OBJECT_MSG_JOB_MEMORY_LIMIT=10; 
     2997enum : DWORD { 
     2998    JOB_OBJECT_TERMINATE_AT_END_OF_JOB, 
     2999    JOB_OBJECT_POST_AT_END_OF_JOB 
     3000
     3001 
     3002enum : DWORD { 
     3003    JOB_OBJECT_MSG_END_OF_JOB_TIME = 1, 
     3004    JOB_OBJECT_MSG_END_OF_PROCESS_TIME, 
     3005    JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT, 
     3006    JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO, 
     3007    JOB_OBJECT_MSG_NEW_PROCESS, 
     3008    JOB_OBJECT_MSG_EXIT_PROCESS, 
     3009    JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS, 
     3010    JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT, 
     3011    JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 
     3012
    28913013 
    28923014enum JOBOBJECTINFOCLASS { 
     
    29093031    LARGE_INTEGER ThisPeriodTotalUserTime; 
    29103032    LARGE_INTEGER ThisPeriodTotalKernelTime; 
    2911     DWORD TotalPageFaultCount; 
    2912     DWORD TotalProcesses; 
    2913     DWORD ActiveProcesses; 
    2914     DWORD TotalTerminatedProcesses; 
     3033    DWORD         TotalPageFaultCount; 
     3034    DWORD         TotalProcesses; 
     3035    DWORD         ActiveProcesses; 
     3036    DWORD         TotalTerminatedProcesses; 
    29153037} 
    29163038alias JOBOBJECT_BASIC_ACCOUNTING_INFORMATION* PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; 
     3039 
    29173040struct JOBOBJECT_BASIC_LIMIT_INFORMATION { 
    29183041    LARGE_INTEGER PerProcessUserTimeLimit; 
    29193042    LARGE_INTEGER PerJobUserTimeLimit; 
    2920     DWORD LimitFlags; 
    2921     SIZE_T MinimumWorkingSetSize; 
    2922     SIZE_T MaximumWorkingSetSize; 
    2923     DWORD ActiveProcessLimit; 
    2924     ULONG_PTR Affinity; 
    2925     DWORD PriorityClass; 
    2926     DWORD SchedulingClass; 
     3043    DWORD         LimitFlags; 
     3044    SIZE_T        MinimumWorkingSetSize; 
     3045    SIZE_T        MaximumWorkingSetSize; 
     3046    DWORD         ActiveProcessLimit; 
     3047    ULONG_PTR     Affinity; 
     3048    DWORD         PriorityClass; 
     3049    DWORD         SchedulingClass; 
    29273050} 
    29283051alias JOBOBJECT_BASIC_LIMIT_INFORMATION* PJOBOBJECT_BASIC_LIMIT_INFORMATION; 
    29293052 
    29303053struct JOBOBJECT_BASIC_PROCESS_ID_LIST { 
    2931     DWORD NumberOfAssignedProcesses; 
    2932     DWORD NumberOfProcessIdsInList; 
    2933     ULONG_PTR ProcessIdList[1]; 
    2934 
    2935 alias JOBOBJECT_BASIC_PROCESS_ID_LIST *PJOBOBJECT_BASIC_PROCESS_ID_LIST; 
     3054    DWORD     NumberOfAssignedProcesses; 
     3055    DWORD     NumberOfProcessIdsInList; 
     3056    ULONG_PTR _ProcessIdList; 
     3057 
     3058    ULONG_PTR* ProcessIdList() { return &_ProcessIdList; } 
     3059
     3060alias JOBOBJECT_BASIC_PROCESS_ID_LIST* PJOBOBJECT_BASIC_PROCESS_ID_LIST; 
    29363061 
    29373062struct JOBOBJECT_BASIC_UI_RESTRICTIONS { 
    29383063    DWORD UIRestrictionsClass; 
    29393064} 
    2940 alias JOBOBJECT_BASIC_UI_RESTRICTIONS *PJOBOBJECT_BASIC_UI_RESTRICTIONS; 
     3065alias JOBOBJECT_BASIC_UI_RESTRICTIONS* PJOBOBJECT_BASIC_UI_RESTRICTIONS; 
    29413066 
    29423067struct JOBOBJECT_SECURITY_LIMIT_INFORMATION { 
    2943     DWORD SecurityLimitFlags; 
    2944     HANDLE JobToken; 
    2945     PTOKEN_GROUPS SidsToDisable; 
     3068    DWORD             SecurityLimitFlags; 
     3069    HANDLE            JobToken; 
     3070    PTOKEN_GROUPS     SidsToDisable; 
    29463071    PTOKEN_PRIVILEGES PrivilegesToDelete; 
    2947     PTOKEN_GROUPS RestrictedSids; 
     3072    PTOKEN_GROUPS     RestrictedSids; 
    29483073} 
    29493074alias JOBOBJECT_SECURITY_LIMIT_INFORMATION* PJOBOBJECT_SECURITY_LIMIT_INFORMATION; 
     
    29553080 
    29563081struct JOBOBJECT_ASSOCIATE_COMPLETION_PORT { 
    2957     PVOID CompletionKey; 
     3082    PVOID CompletionKey; 
    29583083    HANDLE CompletionPort; 
    29593084} 
     
    29693094    JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; 
    29703095    IO_COUNTERS IoInfo; 
    2971     SIZE_T ProcessMemoryLimit; 
    2972     SIZE_T JobMemoryLimit; 
    2973     SIZE_T PeakProcessMemoryUsed; 
    2974     SIZE_T PeakJobMemoryUsed; 
     3096    SIZE_T      ProcessMemoryLimit; 
     3097    SIZE_T      JobMemoryLimit; 
     3098    SIZE_T      PeakProcessMemoryUsed; 
     3099    SIZE_T      PeakJobMemoryUsed; 
    29753100} 
    29763101alias JOBOBJECT_EXTENDED_LIMIT_INFORMATION* PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; 
     
    29813106alias JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION; 
    29823107 
    2983 /* MinGW: Making these defines conditional on WINVER will break ddk includes */ 
     3108// MinGW: Making these defines conditional on WINVER will break ddk includes 
    29843109//static if (WINVER >= 0x0500) { 
    29853110 
    2986 const ES_SYSTEM_REQUIRED=0x00000001; 
    2987 const ES_DISPLAY_REQUIRED=0x00000002; 
    2988 const ES_USER_PRESENT=0x00000004; 
    2989 const ES_CONTINUOUS=0x80000000; 
     3111const DWORD 
     3112    ES_SYSTEM_REQUIRED  = 0x00000001, 
     3113    ES_DISPLAY_REQUIRED = 0x00000002, 
     3114    ES_USER_PRESENT     = 0x00000004, 
     3115    ES_CONTINUOUS       = 0x80000000; 
    29903116 
    29913117enum LATENCY_TIME { 
     
    30333159align(4): 
    30343160struct BATTERY_REPORTING_SCALE { 
    3035     DWORD Granularity; 
    3036     DWORD Capacity; 
     3161    DWORD Granularity; 
     3162    DWORD Capacity; 
    30373163} 
    30383164alias BATTERY_REPORTING_SCALE* PBATTERY_REPORTING_SCALE; 
    30393165 
    30403166struct POWER_ACTION_POLICY { 
    3041     POWER_ACTION  Action; 
    3042     ULONG  Flags; 
    3043     ULONG  EventCode; 
    3044 
    3045 alias POWER_ACTION_POLICY *PPOWER_ACTION_POLICY; 
    3046  
    3047 /* POWER_ACTION_POLICY.Flags constants */ 
    3048 const POWER_ACTION_QUERY_ALLOWED  = 0x00000001; 
    3049 const POWER_ACTION_UI_ALLOWED   = 0x00000002; 
    3050 const POWER_ACTION_OVERRIDE_APPS  = 0x00000004; 
    3051 const POWER_ACTION_LIGHTEST_FIRST = 0x10000000; 
    3052 const POWER_ACTION_LOCK_CONSOLE = 0x20000000; 
    3053 const POWER_ACTION_DISABLE_WAKES  = 0x40000000; 
    3054 const POWER_ACTION_CRITICAL     = 0x80000000; 
    3055  
    3056 /* POWER_ACTION_POLICY.EventCode constants */ 
    3057 const POWER_LEVEL_USER_NOTIFY_TEXT  = 0x00000001; 
    3058 const POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002; 
    3059 const POWER_LEVEL_USER_NOTIFY_EXEC  = 0x00000004; 
    3060 const POWER_USER_NOTIFY_BUTTON  = 0x00000008; 
    3061 const POWER_USER_NOTIFY_SHUTDOWN    = 0x00000010; 
    3062 const POWER_FORCE_TRIGGER_RESET = 0x80000000; 
    3063  
    3064 const DISCHARGE_POLICY_CRITICAL=0; 
    3065 const DISCHARGE_POLICY_LOW=1; 
    3066 const NUM_DISCHARGE_POLICIES=4; 
    3067  
    3068 const PO_THROTTLE_NONE=0; 
    3069 const PO_THROTTLE_CONSTANT=1; 
    3070 const PO_THROTTLE_DEGRADE=2; 
    3071 const PO_THROTTLE_ADAPTIVE=3; 
    3072 const PO_THROTTLE_MAXIMUM=4; 
     3167    POWER_ACTION Action; 
     3168    ULONG        Flags; 
     3169    ULONG        EventCode; 
     3170
     3171alias POWER_ACTION_POLICY* PPOWER_ACTION_POLICY; 
     3172 
     3173// POWER_ACTION_POLICY.Flags constants 
     3174const ULONG 
     3175    POWER_ACTION_QUERY_ALLOWED  = 0x00000001, 
     3176    POWER_ACTION_UI_ALLOWED     = 0x00000002, 
     3177    POWER_ACTION_OVERRIDE_APPS  = 0x00000004, 
     3178    POWER_ACTION_LIGHTEST_FIRST = 0x10000000, 
     3179    POWER_ACTION_LOCK_CONSOLE   = 0x20000000, 
     3180    POWER_ACTION_DISABLE_WAKES  = 0x40000000, 
     3181    POWER_ACTION_CRITICAL       = 0x80000000; 
     3182 
     3183// POWER_ACTION_POLICY.EventCode constants 
     3184const ULONG 
     3185    POWER_LEVEL_USER_NOTIFY_TEXT  = 0x00000001, 
     3186    POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002, 
     3187    POWER_LEVEL_USER_NOTIFY_EXEC  = 0x00000004, 
     3188    POWER_USER_NOTIFY_BUTTON      = 0x00000008, 
     3189    POWER_USER_NOTIFY_SHUTDOWN    = 0x00000010, 
     3190    POWER_FORCE_TRIGGER_RESET     = 0x80000000; 
     3191 
     3192const size_t 
     3193    DISCHARGE_POLICY_CRITICAL = 0, 
     3194    DISCHARGE_POLICY_LOW      = 1, 
     3195    NUM_DISCHARGE_POLICIES    = 4; 
     3196 
     3197enum : BYTE { 
     3198    PO_THROTTLE_NONE, 
     3199    PO_THROTTLE_CONSTANT, 
     3200    PO_THROTTLE_DEGRADE, 
     3201    PO_THROTTLE_ADAPTIVE, 
     3202    PO_THROTTLE_MAXIMUM 
     3203
    30733204 
    30743205struct SYSTEM_POWER_LEVEL { 
    3075     BOOLEAN  Enable; 
    3076     UCHAR  Spare[3]
    3077     ULONG  BatteryLevel; 
    3078     POWER_ACTION_POLICY PowerPolicy; 
     3206    BOOLEAN             Enable; 
     3207    UCHAR[3]            Spare
     3208    ULONG               BatteryLevel; 
     3209    POWER_ACTION_POLICY PowerPolicy; 
    30793210    SYSTEM_POWER_STATE  MinSystemState; 
    30803211} 
     
    30823213 
    30833214struct SYSTEM_POWER_POLICY { 
    3084     ULONG  Revision; 
    3085     POWER_ACTION_POLICY PowerButton; 
    3086     POWER_ACTION_POLICY SleepButton; 
    3087     POWER_ACTION_POLICY LidClose; 
     3215    ULONG               Revision; 
     3216    POWER_ACTION_POLICY PowerButton; 
     3217    POWER_ACTION_POLICY SleepButton; 
     3218    POWER_ACTION_POLICY LidClose; 
    30883219    SYSTEM_POWER_STATE  LidOpenWake; 
    3089     ULONG  Reserved; 
    3090     POWER_ACTION_POLICY Idle; 
    3091     ULONG  IdleTimeout; 
    3092     UCHAR  IdleSensitivity; 
    3093     UCHAR  DynamicThrottle; 
    3094     UCHAR  Spare2[2]
     3220    ULONG               Reserved; 
     3221    POWER_ACTION_POLICY Idle; 
     3222    ULONG               IdleTimeout; 
     3223    UCHAR               IdleSensitivity; 
     3224    UCHAR               DynamicThrottle; 
     3225    UCHAR[2]            Spare2
    30953226    SYSTEM_POWER_STATE  MinSleep; 
    30963227    SYSTEM_POWER_STATE  MaxSleep; 
    30973228    SYSTEM_POWER_STATE  ReducedLatencySleep; 
    3098     ULONG  WinLogonFlags; 
    3099     ULONG  Spare3; 
    3100     ULONG  DozeS4Timeout; 
    3101     ULONG  BroadcastCapacityResolution; 
    3102     SYSTEM_POWER_LEVEL  DischargePolicy[NUM_DISCHARGE_POLICIES]
    3103     ULONG  VideoTimeout; 
    3104     BOOLEAN  VideoDimDisplay; 
    3105     ULONG  VideoReserved[3]
    3106     ULONG  SpindownTimeout; 
    3107     BOOLEAN  OptimizeForPower; 
    3108     UCHAR  FanThrottleTolerance; 
    3109     UCHAR  ForcedThrottle; 
    3110     UCHAR  MinThrottle; 
    3111     POWER_ACTION_POLICY OverThrottled; 
     3229    ULONG               WinLogonFlags; 
     3230    ULONG               Spare3; 
     3231    ULONG               DozeS4Timeout; 
     3232    ULONG               BroadcastCapacityResolution; 
     3233    SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy
     3234    ULONG               VideoTimeout; 
     3235    BOOLEAN             VideoDimDisplay; 
     3236    ULONG[3]            VideoReserved
     3237    ULONG               SpindownTimeout; 
     3238    BOOLEAN             OptimizeForPower; 
     3239    UCHAR               FanThrottleTolerance; 
     3240    UCHAR               ForcedThrottle; 
     3241    UCHAR               MinThrottle; 
     3242    POWER_ACTION_POLICY OverThrottled; 
    31123243} 
    31133244alias SYSTEM_POWER_POLICY* PSYSTEM_POWER_POLICY; 
    31143245 
    31153246struct SYSTEM_POWER_CAPABILITIES { 
    3116     BOOLEAN  PowerButtonPresent; 
    3117     BOOLEAN  SleepButtonPresent; 
    3118     BOOLEAN  LidPresent; 
    3119     BOOLEAN  SystemS1; 
    3120     BOOLEAN  SystemS2; 
    3121     BOOLEAN  SystemS3; 
    3122     BOOLEAN  SystemS4; 
    3123     BOOLEAN  SystemS5; 
    3124     BOOLEAN  HiberFilePresent; 
    3125     BOOLEAN  FullWake; 
    3126     BOOLEAN  VideoDimPresent; 
    3127     BOOLEAN  ApmPresent; 
    3128     BOOLEAN  UpsPresent; 
    3129     BOOLEAN  ThermalControl; 
    3130     BOOLEAN  ProcessorThrottle; 
    3131     UCHAR  ProcessorMinThrottle; 
    3132     UCHAR  ProcessorMaxThrottle; 
    3133     UCHAR  spare2[4]
    3134     BOOLEAN  DiskSpinDown; 
    3135     UCHAR  spare3[8]
    3136     BOOLEAN  SystemBatteriesPresent; 
    3137     BOOLEAN  BatteriesAreShortTerm; 
    3138     BATTERY_REPORTING_SCALE  BatteryScale[3]
    3139     SYSTEM_POWER_STATE  AcOnLineWake; 
    3140     SYSTEM_POWER_STATE  SoftLidWake; 
    3141     SYSTEM_POWER_STATE  RtcWake; 
    3142     SYSTEM_POWER_STATE  MinDeviceWakeState; 
    3143     SYSTEM_POWER_STATE  DefaultLowLatencyWake; 
     3247    BOOLEAN                    PowerButtonPresent; 
     3248    BOOLEAN                    SleepButtonPresent; 
     3249    BOOLEAN                    LidPresent; 
     3250    BOOLEAN                    SystemS1; 
     3251    BOOLEAN                    SystemS2; 
     3252    BOOLEAN                    SystemS3; 
     3253    BOOLEAN                    SystemS4; 
     3254    BOOLEAN                    SystemS5; 
     3255    BOOLEAN                    HiberFilePresent; 
     3256    BOOLEAN                    FullWake; 
     3257    BOOLEAN                    VideoDimPresent; 
     3258    BOOLEAN                    ApmPresent; 
     3259    BOOLEAN                    UpsPresent; 
     3260    BOOLEAN                    ThermalControl; 
     3261    BOOLEAN                    ProcessorThrottle; 
     3262    UCHAR                      ProcessorMinThrottle; 
     3263    UCHAR                      ProcessorMaxThrottle; 
     3264    UCHAR[4]                   spare2
     3265    BOOLEAN                    DiskSpinDown; 
     3266    UCHAR[8]                   spare3
     3267    BOOLEAN                    SystemBatteriesPresent; 
     3268    BOOLEAN                    BatteriesAreShortTerm; 
     3269    BATTERY_REPORTING_SCALE[3] BatteryScale
     3270    SYSTEM_POWER_STATE         AcOnLineWake; 
     3271    SYSTEM_POWER_STATE         SoftLidWake; 
     3272    SYSTEM_POWER_STATE         RtcWake; 
     3273    SYSTEM_POWER_STATE         MinDeviceWakeState; 
     3274    SYSTEM_POWER_STATE         DefaultLowLatencyWake; 
    31443275} 
    31453276alias SYSTEM_POWER_CAPABILITIES* PSYSTEM_POWER_CAPABILITIES; 
    31463277 
    31473278struct SYSTEM_BATTERY_STATE { 
    3148     BOOLEAN  AcOnLine; 
    3149     BOOLEAN  BatteryPresent; 
    3150     BOOLEAN  Charging; 
    3151     BOOLEAN  Discharging; 
    3152     BOOLEAN  Spare1[4]
    3153     ULONG  MaxCapacity; 
    3154     ULONG  RemainingCapacity; 
    3155     ULONG  Rate; 
    3156     ULONG  EstimatedTime; 
    3157     ULONG  DefaultAlert1; 
    3158     ULONG  DefaultAlert2; 
     3279    BOOLEAN    AcOnLine; 
     3280    BOOLEAN    BatteryPresent; 
     3281    BOOLEAN    Charging; 
     3282    BOOLEAN    Discharging; 
     3283    BOOLEAN[4] Spare1
     3284    ULONG      MaxCapacity; 
     3285    ULONG      RemainingCapacity; 
     3286    ULONG      Rate; 
     3287    ULONG      EstimatedTime; 
     3288    ULONG      DefaultAlert1; 
     3289    ULONG      DefaultAlert2; 
    31593290} 
    31603291alias SYSTEM_BATTERY_STATE* PSYSTEM_BATTERY_STATE; 
     
    31863317} 
    31873318 
    3188 static if (_WIN32_WINNT >= 0x0500) { 
    3189     alias LONG function (PEXCEPTION_POINTERS)  PVECTORED_EXCEPTION_HANDLER; 
    3190 } 
    31913319//#if 1 /* (WIN32_WINNT >= 0x0500) */ 
    31923320struct SYSTEM_POWER_INFORMATION { 
    3193     ULONG MaxIdlenessAllowed; 
    3194     ULONG Idleness; 
    3195     ULONG TimeRemaining; 
    3196     UCHAR CoolingMode; 
     3321    ULONG MaxIdlenessAllowed; 
     3322    ULONG Idleness; 
     3323    ULONG TimeRemaining; 
     3324    UCHAR CoolingMode; 
    31973325} 
    31983326alias SYSTEM_POWER_INFORMATION* PSYSTEM_POWER_INFORMATION; 
    31993327//#endif 
    32003328 
    3201 static if (_WIN32_WINNT >= 0x0501) { 
    3202  
     3329struct PROCESSOR_POWER_POLICY_INFO { 
     3330    ULONG    TimeCheck; 
     3331    ULONG    DemoteLimit; 
     3332    ULONG    PromoteLimit; 
     3333    UCHAR    DemotePercent; 
     3334    UCHAR    PromotePercent; 
     3335    UCHAR[2] Spare; 
     3336    uint     _bf; 
     3337 
     3338    bool AllowDemotion()  { return _bf & 1; } 
     3339    bool AllowPromotion() { return _bf & 2; } 
     3340 
     3341    bool AllowDemotion(bool a)  { _bf = (_bf & ~1) | a; return a; } 
     3342    bool AllowPromotion(bool a) { _bf = (_bf & ~2) | (a << 1); return a; } 
     3343/+ 
     3344    ULONG  AllowDemotion : 1; 
     3345    ULONG  AllowPromotion : 1; 
     3346    ULONG  Reserved : 30; 
     3347+/ 
     3348
     3349alias PROCESSOR_POWER_POLICY_INFO* PPROCESSOR_POWER_POLICY_INFO; 
     3350 
     3351struct PROCESSOR_POWER_POLICY { 
     3352    ULONG    Revision; 
     3353    UCHAR    DynamicThrottle; 
     3354    UCHAR[3] Spare; 
     3355    ULONG    Reserved; 
     3356    ULONG    PolicyCount; 
     3357    PROCESSOR_POWER_POLICY_INFO[3] Policy; 
     3358
     3359alias PROCESSOR_POWER_POLICY* PPROCESSOR_POWER_POLICY; 
     3360 
     3361struct ADMINISTRATOR_POWER_POLICY { 
     3362    SYSTEM_POWER_STATE MinSleep; 
     3363    SYSTEM_POWER_STATE MaxSleep; 
     3364    ULONG              MinVideoTimeout; 
     3365    ULONG              MaxVideoTimeout; 
     3366    ULONG              MinSpindownTimeout; 
     3367    ULONG              MaxSpindownTimeout; 
     3368
     3369alias ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY; 
     3370 
     3371//}//#endif /* WINVER >= 0x0500 */ 
     3372 
     3373extern (Windows) { 
     3374    alias void function(PVOID, DWORD, PVOID) PIMAGE_TLS_CALLBACK; 
     3375 
     3376    static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { 
     3377        alias LONG function(PEXCEPTION_POINTERS) PVECTORED_EXCEPTION_HANDLER; 
     3378        alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACKFUNC; 
     3379    } 
     3380
     3381 
     3382static if (WINVER >= 0x501) { 
    32033383    enum HEAP_INFORMATION_CLASS { 
    32043384        HeapCompatibilityInformation 
     
    32133393 
    32143394    struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { 
    3215         DWORD ulFlags; 
    3216         DWORD ulEncodedAssemblyIdentityLength; 
    3217         DWORD ulManifestPathType; 
    3218         DWORD ulManifestPathLength; 
     3395        DWORD         ulFlags; 
     3396        DWORD         ulEncodedAssemblyIdentityLength; 
     3397        DWORD         ulManifestPathType; 
     3398        DWORD         ulManifestPathLength; 
    32193399        LARGE_INTEGER liManifestLastWriteTime; 
    3220         DWORD ulPolicyPathType; 
    3221         DWORD ulPolicyPathLength; 
     3400        DWORD         ulPolicyPathType; 
     3401        DWORD         ulPolicyPathLength; 
    32223402        LARGE_INTEGER liPolicyLastWriteTime; 
    3223         DWORD ulMetadataSatelliteRosterIndex; 
    3224         DWORD ulManifestVersionMajor; 
    3225         DWORD ulManifestVersionMinor; 
    3226         DWORD ulPolicyVersionMajor; 
    3227         DWORD ulPolicyVersionMinor; 
    3228         DWORD ulAssemblyDirectoryNameLength; 
    3229         PCWSTR lpAssemblyEncodedAssemblyIdentity; 
    3230         PCWSTR lpAssemblyManifestPath; 
    3231         PCWSTR lpAssemblyPolicyPath; 
    3232         PCWSTR lpAssemblyDirectoryName; 
     3403        DWORD         ulMetadataSatelliteRosterIndex; 
     3404        DWORD         ulManifestVersionMajor; 
     3405        DWORD         ulManifestVersionMinor; 
     3406        DWORD         ulPolicyVersionMajor; 
     3407        DWORD         ulPolicyVersionMinor; 
     3408        DWORD         ulAssemblyDirectoryNameLength; 
     3409        PCWSTR        lpAssemblyEncodedAssemblyIdentity; 
     3410        PCWSTR        lpAssemblyManifestPath; 
     3411        PCWSTR        lpAssemblyPolicyPath; 
     3412        PCWSTR        lpAssemblyDirectoryName; 
    32333413    } 
    3234     alias ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
    3235        PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION, 
    3236        PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; 
     3414    alias ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
     3415      PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION, 
     3416      PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; 
    32373417 
    32383418    struct ACTIVATION_CONTEXT_DETAILED_INFORMATION { 
    3239         DWORD dwFlags; 
    3240         DWORD ulFormatVersion; 
    3241         DWORD ulAssemblyCount; 
    3242         DWORD ulRootManifestPathType; 
    3243         DWORD ulRootManifestPathChars; 
    3244         DWORD ulRootConfigurationPathType; 
    3245         DWORD ulRootConfigurationPathChars; 
    3246         DWORD ulAppDirPathType; 
    3247         DWORD ulAppDirPathChars; 
     3419        DWORD dwFlags; 
     3420        DWORD ulFormatVersion; 
     3421        DWORD ulAssemblyCount; 
     3422        DWORD ulRootManifestPathType; 
     3423        DWORD ulRootManifestPathChars; 
     3424        DWORD ulRootConfigurationPathType; 
     3425        DWORD ulRootConfigurationPathChars; 
     3426        DWORD ulAppDirPathType; 
     3427        DWORD ulAppDirPathChars; 
    32483428        PCWSTR lpRootManifestPath; 
    32493429        PCWSTR lpRootConfigurationPath; 
    32503430        PCWSTR lpAppDirPath; 
    32513431    } 
    3252     alias ACTIVATION_CONTEXT_DETAILED_INFORMATION
    3253        PACTIVATION_CONTEXT_DETAILED_INFORMATION, 
    3254        PCACTIVATION_CONTEXT_DETAILED_INFORMATION; 
     3432    alias ACTIVATION_CONTEXT_DETAILED_INFORMATION
     3433      PACTIVATION_CONTEXT_DETAILED_INFORMATION, 
     3434      PCACTIVATION_CONTEXT_DETAILED_INFORMATION; 
    32553435 
    32563436    struct ACTIVATION_CONTEXT_QUERY_INDEX { 
     
    32583438        ULONG ulFileIndexInAssembly; 
    32593439    } 
    3260     alias ACTIVATION_CONTEXT_QUERY_INDEX * 
    3261         PACTIVATION_CONTEXT_QUERY_INDEX, 
    3262         PCACTIVATION_CONTEXT_QUERY_INDEX; 
     3440    alias ACTIVATION_CONTEXT_QUERY_INDEX* 
     3441      PACTIVATION_CONTEXT_QUERY_INDEX, PCACTIVATION_CONTEXT_QUERY_INDEX; 
    32633442 
    32643443    struct ASSEMBLY_FILE_DETAILED_INFORMATION { 
    3265         DWORD ulFlags; 
    3266         DWORD ulFilenameLength; 
    3267         DWORD ulPathLength; 
     3444        DWORD ulFlags; 
     3445        DWORD ulFilenameLength; 
     3446        DWORD ulPathLength; 
    32683447        PCWSTR lpFileName; 
    32693448        PCWSTR lpFilePath; 
    32703449    } 
    3271     alias ASSEMBLY_FILE_DETAILED_INFORMATION * 
    3272         PASSEMBLY_FILE_DETAILED_INFORMATION, 
    3273         PCASSEMBLY_FILE_DETAILED_INFORMATION; 
    3274  
    3275 }// #endif /* (WIN32_WINNT >= 0x0501) */ 
    3276  
    3277 struct PROCESSOR_POWER_POLICY_INFO { 
    3278     ULONG  TimeCheck; 
    3279     ULONG  DemoteLimit; 
    3280     ULONG  PromoteLimit; 
    3281     UCHAR  DemotePercent; 
    3282     UCHAR  PromotePercent; 
    3283     UCHAR  Spare[2]; 
    3284  
    3285  
    3286     ULONG replace_for_D; // FIXME 
    3287 /* 
    3288     ULONG  AllowDemotion : 1; 
    3289     ULONG  AllowPromotion : 1; 
    3290     ULONG  Reserved : 30; 
    3291 */ 
    3292 
    3293 alias PROCESSOR_POWER_POLICY_INFO *PPROCESSOR_POWER_POLICY_INFO; 
    3294  
    3295 struct PROCESSOR_POWER_POLICY { 
    3296     ULONG  Revision; 
    3297     UCHAR  DynamicThrottle; 
    3298     UCHAR  Spare[3]; 
    3299     ULONG  Reserved; 
    3300     ULONG  PolicyCount; 
    3301     PROCESSOR_POWER_POLICY_INFO  Policy[3]; 
    3302 
    3303 alias PROCESSOR_POWER_POLICY* PPROCESSOR_POWER_POLICY; 
    3304  
    3305 struct ADMINISTRATOR_POWER_POLICY { 
    3306     SYSTEM_POWER_STATE  MinSleep; 
    3307     SYSTEM_POWER_STATE  MaxSleep; 
    3308     ULONG  MinVideoTimeout; 
    3309     ULONG  MaxVideoTimeout; 
    3310     ULONG  MinSpindownTimeout; 
    3311     ULONG  MaxSpindownTimeout; 
    3312 
    3313 alias ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY; 
    3314  
    3315 //}//#endif /* WINVER >= 0x0500 */ 
    3316  
    3317 static if (_WIN32_WINNT >= 0x0500) { 
    3318     alias void function (PVOID, BOOLEAN) WAITORTIMERCALLBACKFUNC; 
    3319 
    3320  
    3321 version(Unicode) { 
     3450    alias ASSEMBLY_FILE_DETAILED_INFORMATION* 
     3451      PASSEMBLY_FILE_DETAILED_INFORMATION, 
     3452      PCASSEMBLY_FILE_DETAILED_INFORMATION; 
     3453
     3454 
     3455version (Unicode) { 
    33223456    alias OSVERSIONINFOW OSVERSIONINFO; 
    33233457    alias OSVERSIONINFOEXW OSVERSIONINFOEX; 
     
    33313465 
    33323466 
    3333 static if (_WIN32_WINNT >= 0x0500) { 
    3334     ULONGLONG VerSetConditionMask(ULONGLONG,DWORD,BYTE); 
     3467static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { 
     3468    extern (Windows) ULONGLONG VerSetConditionMask(ULONGLONG, DWORD, BYTE); 
    33353469} 
    33363470