Changeset 216
- Timestamp:
- 10/10/07 15:57:16 (4 years ago)
- Files:
-
- trunk/win32/dde.d (modified) (4 diffs)
- trunk/win32/winnt.d (modified) (72 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/win32/dde.d
r183 r216 32 32 ubyte _bf; 33 33 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); } 37 37 38 38 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; } 45 45 } 46 46 … … 49 49 short cfFormat; 50 50 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); } 54 54 55 55 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; } 62 62 } 63 63 … … 67 67 byte _Value; 68 68 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; } 74 76 75 77 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 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); } 79 96 80 97 byte* Value() { return &_Value; } 81 98 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 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); } 96 116 97 117 ushort unused(ushort u) { 98 118 _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; } 125 125 } 126 126 … … 130 130 byte _rgb; 131 131 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; } 137 139 138 140 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; } 149 149 } 150 150 trunk/win32/winnt.d
r215 r216 9 9 \***********************************************************************/ 10 10 module win32.winnt; 11 12 // FIXME: Two bitfields and a macro need to be fixed.13 // FIXME: clean up Windows version support14 11 15 12 public import win32.basetsd, win32.windef, win32.winerror; … … 51 48 alias wchar* LPCWCH, PCWCH, LPCWSTR, PCWSTR; 52 49 53 version (Unicode) {50 version (Unicode) { 54 51 alias WCHAR TCHAR, _TCHAR; 55 52 } else { … … 103 100 NO_PROPAGATE_INHERIT_ACE = 0x04, 104 101 INHERIT_ONLY_ACE = 0x08, 105 VALID_INHERIT_FLAGS = 0x10, 102 INHERITED_ACE = 0x10, 103 VALID_INHERIT_FLAGS = 0x1F, 106 104 SUCCESSFUL_ACCESS_ACE_FLAG = 0x40, 107 105 FAILED_ACCESS_ACE_FLAG = 0x80; … … 257 255 FILE_SUPPORTS_OBJECT_IDS = 0x00010000, 258 256 FILE_SUPPORTS_ENCRYPTION = 0x00020000, 259 FILE_NAMED_STREAMS = 0x00040000; 257 FILE_NAMED_STREAMS = 0x00040000, 258 FILE_READ_ONLY_VOLUME = 0x00080000; 260 259 261 260 // These are not documented on MSDN … … 634 633 } 635 634 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 650 635 WORD MAKELANGID(USHORT p, USHORT s) { return (s << 10) | p; } 651 636 WORD PRIMARYLANGID(WORD lgid) { return lgid & 0x3FF; } … … 1184 1169 1185 1170 ulong IMAGE_ORDINAL64(ulong Ordinal) { return Ordinal & 0xFFFF; } 1186 uint IMAGE_ORDINAL32(uint Ordinal) { return Ordinal & 0xFFFF; }1171 uint IMAGE_ORDINAL32(uint Ordinal) { return Ordinal & 0xFFFF; } 1187 1172 1188 1173 bool IMAGE_SNAP_BY_ORDINAL32(uint Ordinal) { … … 1257 1242 IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000; 1258 1243 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; 1244 const 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 1256 enum : 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 1264 enum : DWORD { 1265 SERVICE_ERROR_IGNORE = 0, 1266 SERVICE_ERROR_NORMAL = 1, 1267 SERVICE_ERROR_SEVERE = 2, 1268 SERVICE_ERROR_CRITICAL = 3 1269 } 1270 1271 1272 const 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; 1291 1286 1292 1287 enum SECURITY_IMPERSONATION_LEVEL { … … 1297 1292 } 1298 1293 alias SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL; 1294 1299 1295 alias 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 1296 alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE; 1297 1298 const size_t SECURITY_DESCRIPTOR_MIN_LENGTH = 20; 1299 1300 const DWORD 1301 SECURITY_DESCRIPTOR_REVISION = 1, 1302 SECURITY_DESCRIPTOR_REVISION1 = 1; 1303 1304 const DWORD 1305 SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001, 1306 SE_PRIVILEGE_ENABLED = 0x00000002, 1307 SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000; 1308 1309 const DWORD PRIVILEGE_SET_ALL_NECESSARY = 1; 1310 1311 const SECURITY_IMPERSONATION_LEVEL 1312 SECURITY_MAX_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, 1313 DEFAULT_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation; 1314 1315 const BOOLEAN 1316 SECURITY_DYNAMIC_TRACKING = true, 1317 SECURITY_STATIC_TRACKING = false; 1318 1319 // also in ddk/ntifs.h 1320 const 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 1346 const size_t TOKEN_SOURCE_LENGTH = 8; 1347 // end ddk/ntifs.h 1348 1349 enum : DWORD { 1350 DLL_PROCESS_DETACH, 1351 DLL_PROCESS_ATTACH, 1352 DLL_THREAD_ATTACH, 1353 DLL_THREAD_DETACH 1354 } 1355 1356 enum : 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 1365 enum : DWORD { 1366 TAPE_ABSOLUTE_POSITION, 1367 TAPE_LOGICAL_POSITION, 1368 TAPE_PSEUDO_LOGICAL_POSITION 1369 } 1370 1371 enum : 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 1384 const 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 1410 const 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 1444 enum : DWORD { 1445 TAPE_FIXED_PARTITIONS = 0, 1446 TAPE_SELECT_PARTITIONS = 1, 1447 TAPE_INITIATOR_PARTITIONS = 2 1448 } 1449 1450 enum : DWORD { 1451 TAPE_SETMARKS, 1452 TAPE_FILEMARKS, 1453 TAPE_SHORT_FILEMARKS, 1454 TAPE_LONG_FILEMARKS 1455 } 1456 1457 enum : DWORD { 1458 TAPE_ERASE_SHORT, 1459 TAPE_ERASE_LONG 1460 } 1461 1462 enum : DWORD { 1463 TAPE_LOAD, 1464 TAPE_UNLOAD, 1465 TAPE_TENSION, 1466 TAPE_LOCK, 1467 TAPE_UNLOCK, 1468 TAPE_FORMAT 1469 } 1470 1471 enum : ULONG32 { 1472 VER_PLATFORM_WIN32s, 1473 VER_PLATFORM_WIN32_WINDOWS, 1474 VER_PLATFORM_WIN32_NT 1475 } 1476 1477 enum : UCHAR { 1478 VER_NT_WORKSTATION = 1, 1479 VER_NT_DOMAIN_CONTROLLER, 1480 VER_NT_SERVER 1481 } 1482 1483 const 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 1493 const 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 1503 static 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 } 1500 1538 } 1501 1539 1502 1540 // Macros 1503 BYTE BTYPE(BYTE x) { return cast(BYTE) (x & N_BTMASK); }1541 BYTE BTYPE(BYTE x) { return cast(BYTE) (x & N_BTMASK); } 1504 1542 bool ISPTR(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT); } 1505 1543 bool ISFCN(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); } 1506 1544 bool ISARY(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT); } 1507 1545 bool 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 } 1509 1550 uint 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 } 1554 uint DECREF(uint x) { return ((x >>> N_TSHIFT) & ~N_BTMASK) | (x & N_BTMASK); } 1555 1556 const DWORD TLS_MINIMUM_AVAILABLE = 64; 1557 1558 const 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 */ 1569 ULONG IsReparseTagMicrosoft(ULONG x) { return x & 0x80000000; } 1570 ULONG IsReparseTagHighLatency(ULONG x) { return x & 0x40000000; } 1571 ULONG IsReparseTagNameSurrogate(ULONG x) { return x & 0x20000000; } 1572 1573 bool IsReparseTagValid(ULONG x) { 1574 return !(x & ~IO_REPARSE_TAG_VALID_VALUES) && (x > IO_REPARSE_TAG_RESERVED_RANGE); 1575 } 1528 1576 1529 1577 import win32.basetyps; … … 1554 1602 1555 1603 struct ACCESS_ALLOWED_ACE { 1556 ACE_HEADER Header;1604 ACE_HEADER Header; 1557 1605 ACCESS_MASK Mask; 1558 DWORD SidStart;1606 DWORD SidStart; 1559 1607 } 1560 1608 alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE; 1561 1609 1562 1610 struct ACCESS_DENIED_ACE { 1563 ACE_HEADER Header;1611 ACE_HEADER Header; 1564 1612 ACCESS_MASK Mask; 1565 DWORD SidStart;1613 DWORD SidStart; 1566 1614 } 1567 1615 alias ACCESS_DENIED_ACE* PACCESS_DENIED_ACE; 1568 1616 1569 1617 struct SYSTEM_AUDIT_ACE { 1570 ACE_HEADER Header;1618 ACE_HEADER Header; 1571 1619 ACCESS_MASK Mask; 1572 DWORD SidStart;1620 DWORD SidStart; 1573 1621 } 1574 1622 alias SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; 1575 1623 1576 1624 struct SYSTEM_ALARM_ACE { 1577 ACE_HEADER Header;1625 ACE_HEADER Header; 1578 1626 ACCESS_MASK Mask; 1579 DWORD SidStart;1627 DWORD SidStart; 1580 1628 } 1581 1629 alias SYSTEM_ALARM_ACE* PSYSTEM_ALARM_ACE; 1582 1630 1583 1631 struct ACCESS_ALLOWED_OBJECT_ACE { 1584 ACE_HEADER Header;1632 ACE_HEADER Header; 1585 1633 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; 1590 1638 } 1591 1639 alias ACCESS_ALLOWED_OBJECT_ACE* PACCESS_ALLOWED_OBJECT_ACE; 1592 1640 1593 1641 struct ACCESS_DENIED_OBJECT_ACE { 1594 ACE_HEADER Header;1642 ACE_HEADER Header; 1595 1643 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; 1600 1648 } 1601 1649 alias ACCESS_DENIED_OBJECT_ACE* PACCESS_DENIED_OBJECT_ACE; 1602 1650 1603 1651 struct SYSTEM_AUDIT_OBJECT_ACE { 1604 ACE_HEADER Header;1652 ACE_HEADER Header; 1605 1653 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; 1610 1658 } 1611 1659 alias SYSTEM_AUDIT_OBJECT_ACE* PSYSTEM_AUDIT_OBJECT_ACE; 1612 1660 1613 1661 struct SYSTEM_ALARM_OBJECT_ACE { 1614 ACE_HEADER Header;1662 ACE_HEADER Header; 1615 1663 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; 1620 1668 } 1621 1669 alias SYSTEM_ALARM_OBJECT_ACE* PSYSTEM_ALARM_OBJECT_ACE; … … 1635 1683 1636 1684 struct 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 1690 version (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; 1654 1703 1655 1704 struct FLOATING_SAVE_AREA { … … 1694 1743 1695 1744 } else { 1696 pragma(msg, "Unsupported CPU"); 1697 static assert(0); 1745 static assert(false, "Unsupported CPU"); 1698 1746 // Versions for PowerPC, Alpha, SHX, and MIPS removed. 1699 1747 } 1700 1701 1748 1702 1749 alias CONTEXT* PCONTEXT, LPCONTEXT; … … 1705 1752 DWORD ExceptionCode; 1706 1753 DWORD ExceptionFlags; 1707 EXCEPTION_RECORD *ExceptionRecord;1754 EXCEPTION_RECORD* ExceptionRecord; 1708 1755 PVOID ExceptionAddress; 1709 1756 DWORD NumberParameters; 1710 DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];1757 DWORD[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; 1711 1758 } 1712 1759 alias EXCEPTION_RECORD* PEXCEPTION_RECORD, LPEXCEPTION_RECORD; … … 1714 1761 struct EXCEPTION_POINTERS { 1715 1762 PEXCEPTION_RECORD ExceptionRecord; 1716 PCONTEXT ContextRecord;1763 PCONTEXT ContextRecord; 1717 1764 } 1718 1765 alias EXCEPTION_POINTERS* PEXCEPTION_POINTERS, LPEXCEPTION_POINTERS; … … 1742 1789 1743 1790 align(4) struct LUID_AND_ATTRIBUTES { 1744 LUID Luid;1745 DWORD Attributes;1791 LUID Luid; 1792 DWORD Attributes; 1746 1793 } 1747 1794 alias LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES; … … 1757 1804 1758 1805 struct SECURITY_ATTRIBUTES { 1759 DWORD nLength;1806 DWORD nLength; 1760 1807 LPVOID lpSecurityDescriptor; 1761 BOOL bInheritHandle;1808 BOOL bInheritHandle; 1762 1809 } 1763 1810 alias SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES; 1764 1811 1765 1812 struct SECURITY_QUALITY_OF_SERVICE { 1766 DWORD Length;1767 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;1813 DWORD Length; 1814 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 1768 1815 SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; 1769 1816 BOOLEAN EffectiveOnly; … … 1775 1822 struct SE_IMPERSONATION_STATE { 1776 1823 PACCESS_TOKEN Token; 1777 BOOLEAN CopyOnOpen;1778 BOOLEAN EffectiveOnly;1824 BOOLEAN CopyOnOpen; 1825 BOOLEAN EffectiveOnly; 1779 1826 SECURITY_IMPERSONATION_LEVEL Level; 1780 1827 } … … 1799 1846 1800 1847 struct SID_AND_ATTRIBUTES { 1801 PSID Sid;1848 PSID Sid; 1802 1849 DWORD Attributes; 1803 1850 } … … 1805 1852 1806 1853 struct TOKEN_SOURCE { 1807 CHAR SourceName[TOKEN_SOURCE_LENGTH];1854 CHAR[TOKEN_SOURCE_LENGTH] SourceName; 1808 1855 LUID SourceIdentifier; 1809 1856 } … … 1811 1858 1812 1859 struct TOKEN_CONTROL { 1813 LUID TokenId;1814 LUID AuthenticationId;1815 LUID ModifiedId;1860 LUID TokenId; 1861 LUID AuthenticationId; 1862 LUID ModifiedId; 1816 1863 TOKEN_SOURCE TokenSource; 1817 1864 } … … 1856 1903 1857 1904 struct TOKEN_STATISTICS { 1858 LUID TokenId;1859 LUID AuthenticationId;1905 LUID TokenId; 1906 LUID AuthenticationId; 1860 1907 LARGE_INTEGER ExpirationTime; 1861 TOKEN_TYPE TokenType;1908 TOKEN_TYPE TokenType; 1862 1909 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; 1868 1915 } 1869 1916 alias TOKEN_STATISTICS* PTOKEN_STATISTICS; … … 1872 1919 SID_AND_ATTRIBUTES User; 1873 1920 } 1874 alias TOKEN_USER *PTOKEN_USER;1921 alias TOKEN_USER* PTOKEN_USER; 1875 1922 1876 1923 alias DWORD SECURITY_INFORMATION; … … 1891 1938 1892 1939 enum TOKEN_INFORMATION_CLASS { 1893 TokenUser =1,1940 TokenUser = 1, 1894 1941 TokenGroups, 1895 1942 TokenPrivileges, … … 1911 1958 1912 1959 enum SID_NAME_USE { 1913 SidTypeUser =1,1960 SidTypeUser = 1, 1914 1961 SidTypeGroup, 1915 1962 SidTypeDomain, … … 1934 1981 1935 1982 struct IO_COUNTERS { 1936 ULONGLONG ReadOperationCount;1937 ULONGLONG WriteOperationCount;1938 ULONGLONG OtherOperationCount;1983 ULONGLONG ReadOperationCount; 1984 ULONGLONG WriteOperationCount; 1985 ULONGLONG OtherOperationCount; 1939 1986 ULONGLONG ReadTransferCount; 1940 1987 ULONGLONG WriteTransferCount; … … 1947 1994 DWORD Action; 1948 1995 DWORD FileNameLength; 1949 WCHAR FileName[1]; 1996 WCHAR _FileName; 1997 1998 WCHAR* FileName() { return &_FileName; } 1950 1999 } 1951 2000 alias FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION; 1952 2001 1953 2002 struct TAPE_ERASE { 1954 DWORD Type;2003 DWORD Type; 1955 2004 BOOLEAN Immediate; 1956 2005 } … … 1962 2011 BOOLEAN DataPadding; 1963 2012 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; 1971 2020 } 1972 2021 alias TAPE_GET_DRIVE_PARAMETERS* PTAPE_GET_DRIVE_PARAMETERS; … … 1975 2024 LARGE_INTEGER Capacity; 1976 2025 LARGE_INTEGER Remaining; 1977 DWORD BlockSize;1978 DWORD PartitionCount;1979 BOOLEAN WriteProtected;2026 DWORD BlockSize; 2027 DWORD PartitionCount; 2028 BOOLEAN WriteProtected; 1980 2029 } 1981 2030 alias TAPE_GET_MEDIA_PARAMETERS* PTAPE_GET_MEDIA_PARAMETERS; … … 1990 2039 1991 2040 struct TAPE_PREPARE { 1992 DWORD Operation;2041 DWORD Operation; 1993 2042 BOOLEAN Immediate; 1994 2043 } … … 2000 2049 BOOLEAN DataPadding; 2001 2050 BOOLEAN ReportSetmarks; 2002 ULONG EOTWarningZoneSize;2051 ULONG EOTWarningZoneSize; 2003 2052 } 2004 2053 alias TAPE_SET_DRIVE_PARAMETERS* PTAPE_SET_DRIVE_PARAMETERS; … … 2010 2059 2011 2060 struct TAPE_SET_POSITION { 2012 DWORD Method;2013 DWORD Partition;2061 DWORD Method; 2062 DWORD Partition; 2014 2063 LARGE_INTEGER Offset; 2015 BOOLEAN Immediate;2064 BOOLEAN Immediate; 2016 2065 } 2017 2066 alias TAPE_SET_POSITION* PTAPE_SET_POSITION; 2018 2067 2019 2068 struct TAPE_WRITE_MARKS { 2020 DWORD Type;2021 DWORD Count;2069 DWORD Type; 2070 DWORD Count; 2022 2071 BOOLEAN Immediate; 2023 2072 } … … 2045 2094 WORD Length; 2046 2095 WORD Flags; 2047 BYTE Text[1]; 2096 BYTE _Text; 2097 2098 BYTE* Text() { return &_Text; } 2048 2099 } 2049 2100 alias MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY; … … 2058 2109 struct MESSAGE_RESOURCE_DATA { 2059 2110 DWORD NumberOfBlocks; 2060 MESSAGE_RESOURCE_BLOCK Blocks[1]; 2111 MESSAGE_RESOURCE_BLOCK _Blocks; 2112 2113 MESSAGE_RESOURCE_BLOCK* Blocks() { return &_Blocks; } 2061 2114 } 2062 2115 alias MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA; 2063 2116 2064 2117 struct LIST_ENTRY { 2065 LIST_ENTRY *Flink;2066 LIST_ENTRY *Blink;2118 LIST_ENTRY* Flink; 2119 LIST_ENTRY* Blink; 2067 2120 } 2068 2121 alias LIST_ENTRY* PLIST_ENTRY; 2069 2122 2070 2123 struct 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 } 2126 alias SINGLE_LIST_ENTRY SLIST_ENTRY; 2127 alias SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY, PSLIST_ENTRY; 2128 2080 2129 union SLIST_HEADER { 2081 ULONGLONG Alignment;2130 ULONGLONG Alignment; 2082 2131 struct { 2083 2132 SLIST_ENTRY Next; 2084 WORD Depth;2085 WORD Sequence;2133 WORD Depth; 2134 WORD Sequence; 2086 2135 } 2087 2136 } 2088 2137 alias SLIST_HEADER* PSLIST_HEADER; 2089 // #endif /* !_SLIST_HEADER_ */2090 2138 2091 2139 struct 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; 2095 2143 LIST_ENTRY ProcessLocksList; 2096 DWORD EntryCount;2097 DWORD ContentionCount;2098 DWORD Spare[2];2144 DWORD EntryCount; 2145 DWORD ContentionCount; 2146 DWORD[2] Spare; 2099 2147 } 2100 2148 alias RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG; … … 2102 2150 struct RTL_CRITICAL_SECTION { 2103 2151 PRTL_CRITICAL_SECTION_DEBUG DebugInfo; 2104 LONG LockCount;2105 LONG RecursionCount;2152 LONG LockCount; 2153 LONG RecursionCount; 2106 2154 HANDLE OwningThread; 2107 2155 HANDLE LockSemaphore; 2108 DWORD Reserved;2156 DWORD Reserved; 2109 2157 } 2110 2158 alias RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; … … 2117 2165 DWORD TimeWritten; 2118 2166 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; 2123 2171 DWORD ClosingRecordNumber; 2124 2172 DWORD StringOffset; … … 2131 2179 2132 2180 struct 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; 2139 2187 } 2140 2188 alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA; 2141 2189 2142 2190 struct 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; 2149 2197 } 2150 2198 alias OSVERSIONINFOW* POSVERSIONINFOW, LPOSVERSIONINFOW; 2151 2199 2152 2200 struct 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; 2164 2212 } 2165 2213 alias OSVERSIONINFOEXA* POSVERSIONINFOEXA, LPOSVERSIONINFOEXA; 2166 2214 2167 2215 struct 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; 2179 2227 } 2180 2228 alias OSVERSIONINFOEXW* POSVERSIONINFOEXW, LPOSVERSIONINFOEXW; 2181 2229 2182 2230 align(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; 2234 2282 } 2235 2283 alias IMAGE_VXD_HEADER* PIMAGE_VXD_HEADER; … … 2237 2285 align(4): 2238 2286 struct IMAGE_FILE_HEADER { 2239 WORD Machine;2240 WORD NumberOfSections;2287 WORD Machine; 2288 WORD NumberOfSections; 2241 2289 DWORD TimeDateStamp; 2242 2290 DWORD PointerToSymbolTable; 2243 2291 DWORD NumberOfSymbols; 2244 WORD SizeOfOptionalHeader;2245 WORD Characteristics;2292 WORD SizeOfOptionalHeader; 2293 WORD Characteristics; 2246 2294 } 2247 2295 alias IMAGE_FILE_HEADER* PIMAGE_FILE_HEADER; 2248 2296 // const IMAGE_SIZEOF_FILE_HEADER = IMAGE_FILE_HEADER.sizeof; 2249 2250 2297 2251 2298 struct IMAGE_DATA_DIRECTORY { … … 2256 2303 2257 2304 struct IMAGE_OPTIONAL_HEADER { 2258 WORD Magic;2259 BYTE MajorLinkerVersion;2260 BYTE MinorLinkerVersion;2305 WORD Magic; 2306 BYTE MajorLinkerVersion; 2307 BYTE MinorLinkerVersion; 2261 2308 DWORD SizeOfCode; 2262 2309 DWORD SizeOfInitializedData; … … 2268 2315 DWORD SectionAlignment; 2269 2316 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; 2276 2323 DWORD Reserved1; 2277 2324 DWORD SizeOfImage; 2278 2325 DWORD SizeOfHeaders; 2279 2326 DWORD CheckSum; 2280 WORD Subsystem;2281 WORD DllCharacteristics;2327 WORD Subsystem; 2328 WORD DllCharacteristics; 2282 2329 DWORD SizeOfStackReserve; 2283 2330 DWORD SizeOfStackCommit; … … 2286 2333 DWORD LoaderFlags; 2287 2334 DWORD NumberOfRvaAndSizes; 2288 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];2335 IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; 2289 2336 } 2290 2337 alias IMAGE_OPTIONAL_HEADER* PIMAGE_OPTIONAL_HEADER; 2291 2338 2292 2339 struct 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; 2306 2353 } 2307 2354 alias IMAGE_ROM_OPTIONAL_HEADER* PIMAGE_ROM_OPTIONAL_HEADER; … … 2309 2356 align(2): 2310 2357 struct 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; 2330 2377 } 2331 2378 alias IMAGE_DOS_HEADER* PIMAGE_DOS_HEADER; … … 2366 2413 2367 2414 align(4) struct IMAGE_NT_HEADERS { 2368 DWORD Signature;2369 IMAGE_FILE_HEADER FileHeader;2415 DWORD Signature; 2416 IMAGE_FILE_HEADER FileHeader; 2370 2417 IMAGE_OPTIONAL_HEADER OptionalHeader; 2371 2418 } … … 2373 2420 2374 2421 struct IMAGE_ROM_HEADERS { 2375 IMAGE_FILE_HEADER FileHeader;2422 IMAGE_FILE_HEADER FileHeader; 2376 2423 IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; 2377 2424 } … … 2379 2426 2380 2427 struct IMAGE_SECTION_HEADER { 2381 BYTE Name[IMAGE_SIZEOF_SHORT_NAME];2428 BYTE[IMAGE_SIZEOF_SHORT_NAME] Name; 2382 2429 union _Misc { 2383 2430 DWORD PhysicalAddress; … … 2390 2437 DWORD PointerToRelocations; 2391 2438 DWORD PointerToLinenumbers; 2392 WORD NumberOfRelocations;2393 WORD NumberOfLinenumbers;2439 WORD NumberOfRelocations; 2440 WORD NumberOfLinenumbers; 2394 2441 DWORD Characteristics; 2395 2442 } 2396 alias IMAGE_SECTION_HEADER *PIMAGE_SECTION_HEADER;2443 alias IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER; 2397 2444 2398 2445 struct IMAGE_SYMBOL { 2399 2446 union _N { 2400 BYTE ShortName[8];2447 BYTE[8] ShortName; 2401 2448 struct Name { 2402 2449 DWORD Short; 2403 2450 DWORD Long; 2404 2451 } 2405 PBYTE LongName[2];2452 PBYTE[2] LongName; 2406 2453 } 2407 _N N;2454 _N N; 2408 2455 DWORD Value; 2409 2456 SHORT SectionNumber; 2410 WORD Type;2411 BYTE StorageClass;2412 BYTE NumberOfAuxSymbols;2457 WORD Type; 2458 BYTE StorageClass; 2459 BYTE NumberOfAuxSymbols; 2413 2460 } 2414 2461 alias IMAGE_SYMBOL* PIMAGE_SYMBOL; 2415 2462 2416 2463 union IMAGE_AUX_SYMBOL { 2417 struct Sym {2418 DWORD TagIndex;2464 struct _Sym { 2465 DWORD TagIndex; 2419 2466 union _Misc { 2420 struct LnSz {2421 WORD Linenumber;2422 WORD Size;2467 struct _LnSz { 2468 WORD Linenumber; 2469 WORD Size; 2423 2470 } 2424 DWORD TotalSize; 2471 _LnSz LnSz; 2472 DWORD TotalSize; 2425 2473 } 2426 2474 _Misc Misc; 2427 2475 union _FcnAry { 2428 struct Function {2429 DWORD PointerToLinenumber;2430 DWORD PointerToNextFunction;2476 struct _Function { 2477 DWORD PointerToLinenumber; 2478 DWORD PointerToNextFunction; 2431 2479 } 2432 struct Array { 2433 WORD Dimension[4]; 2480 _Function Function; 2481 struct _Array { 2482 WORD[4] Dimension; 2434 2483 } 2484 _Array Array; 2435 2485 } 2436 _FcnAry FcnAry;2437 WORD TvIndex;2486 _FcnAry FcnAry; 2487 WORD TvIndex; 2438 2488 } 2439 struct File { 2440 BYTE Name[IMAGE_SIZEOF_SYMBOL]; 2489 _Sym Sym; 2490 struct _File { 2491 BYTE[IMAGE_SIZEOF_SYMBOL] Name; 2441 2492 } 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; 2449 2501 } 2502 _Section Section; 2450 2503 } 2451 2504 alias IMAGE_AUX_SYMBOL* PIMAGE_AUX_SYMBOL; … … 2468 2521 DWORD RelocCount; 2469 2522 } 2470 DWORD SymbolTableIndex;2471 WORD Type;2523 DWORD SymbolTableIndex; 2524 WORD Type; 2472 2525 } 2473 2526 alias IMAGE_RELOCATION* PIMAGE_RELOCATION; … … 2485 2538 } 2486 2539 _Type Type; 2487 WORD Linenumber;2540 WORD Linenumber; 2488 2541 } 2489 2542 alias IMAGE_LINENUMBER* PIMAGE_LINENUMBER; … … 2491 2544 align(4): 2492 2545 struct 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; 2500 2553 } 2501 2554 alias IMAGE_ARCHIVE_MEMBER_HEADER* PIMAGE_ARCHIVE_MEMBER_HEADER; … … 2504 2557 DWORD Characteristics; 2505 2558 DWORD TimeDateStamp; 2506 WORD MajorVersion;2507 WORD MinorVersion;2559 WORD MajorVersion; 2560 WORD MinorVersion; 2508 2561 DWORD Name; 2509 2562 DWORD Base; … … 2518 2571 struct IMAGE_IMPORT_BY_NAME { 2519 2572 WORD Hint; 2520 BYTE Name[1]; 2573 BYTE _Name; 2574 2575 BYTE* Name() { 2576 return &_Name; 2577 } 2521 2578 } 2522 2579 alias IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME; … … 2544 2601 alias IMAGE_THUNK_DATA64* PIMAGE_THUNK_DATA64; 2545 2602 2546 version (Win64) {2603 version (Win64) { 2547 2604 alias IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; 2548 2605 alias PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA; … … 2566 2623 struct IMAGE_BOUND_IMPORT_DESCRIPTOR { 2567 2624 DWORD TimeDateStamp; 2568 WORD OffsetModuleName;2569 WORD NumberOfModuleForwarderRefs;2625 WORD OffsetModuleName; 2626 WORD NumberOfModuleForwarderRefs; 2570 2627 } 2571 2628 alias IMAGE_BOUND_IMPORT_DESCRIPTOR* PIMAGE_BOUND_IMPORT_DESCRIPTOR; … … 2573 2630 struct IMAGE_BOUND_FORWARDER_REF { 2574 2631 DWORD TimeDateStamp; 2575 WORD OffsetModuleName;2576 WORD Reserved;2632 WORD OffsetModuleName; 2633 WORD Reserved; 2577 2634 } 2578 2635 alias IMAGE_BOUND_FORWARDER_REF* PIMAGE_BOUND_FORWARDER_REF; 2579 2580 extern (Windows):2581 alias void function (PVOID,DWORD,PVOID) PIMAGE_TLS_CALLBACK;2582 2636 2583 2637 struct IMAGE_TLS_DIRECTORY32 { … … 2596 2650 ULONGLONG AddressOfIndex; 2597 2651 ULONGLONG AddressOfCallBacks; 2598 DWORD SizeOfZeroFill;2599 DWORD Characteristics;2600 } 2601 alias IMAGE_TLS_DIRECTORY64 *PIMAGE_TLS_DIRECTORY64;2652 DWORD SizeOfZeroFill; 2653 DWORD Characteristics; 2654 } 2655 alias IMAGE_TLS_DIRECTORY64* PIMAGE_TLS_DIRECTORY64; 2602 2656 2603 2657 version (Win64) { … … 2612 2666 DWORD Characteristics; 2613 2667 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 } 2673 alias IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY; 2619 2674 2620 2675 struct IMAGE_RESOURCE_DIRECTORY_ENTRY { 2621 2676 union { 2622 struct {2623 //DWORD NameOffset:31;2624 //DWORD NameIsString:1;2625 } 2677 /+struct { 2678 DWORD NameOffset:31; 2679 DWORD NameIsString:1; 2680 }+/ 2626 2681 DWORD Name; 2627 2682 WORD Id; 2628 2683 } 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; 2635 2711 } 2636 2712 } … … 2639 2715 struct IMAGE_RESOURCE_DIRECTORY_STRING { 2640 2716 WORD Length; 2641 CHAR NameString[1]; 2717 CHAR _NameString; 2718 2719 CHAR* NameString() { return &_NameString; } 2642 2720 } 2643 2721 alias IMAGE_RESOURCE_DIRECTORY_STRING* PIMAGE_RESOURCE_DIRECTORY_STRING; 2644 2722 2645 2723 struct IMAGE_RESOURCE_DIR_STRING_U { 2646 WORD Length; 2647 WCHAR NameString[1]; 2724 WORD Length; 2725 WCHAR _NameString; 2726 2727 WCHAR* NameString() { return &_NameString; } 2648 2728 } 2649 2729 alias IMAGE_RESOURCE_DIR_STRING_U* PIMAGE_RESOURCE_DIR_STRING_U; … … 2658 2738 2659 2739 struct 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; 2674 2754 } 2675 2755 alias IMAGE_LOAD_CONFIG_DIRECTORY* PIMAGE_LOAD_CONFIG_DIRECTORY; … … 2687 2767 DWORD Characteristics; 2688 2768 DWORD TimeDateStamp; 2689 WORD MajorVersion;2690 WORD MinorVersion;2769 WORD MajorVersion; 2770 WORD MinorVersion; 2691 2771 DWORD Type; 2692 2772 DWORD SizeOfData; … … 2697 2777 2698 2778 struct FPO_DATA { 2699 DWORD ulOffStart;2700 DWORD cbProcSize;2701 DWORD cdwLocals;2702 WORD cdwParams;2703 WORD bitField_FixForD; // FIXME2704 /* FIXME 2705 WORD cbProlog:8; 2779 DWORD ulOffStart; 2780 DWORD cbProcSize; 2781 DWORD cdwLocals; 2782 WORD cdwParams; 2783 ubyte cbProlog; 2784 ubyte _bf; 2785 /+ 2706 2786 WORD cbRegs:3; 2707 2787 WORD fHasSEH:1; … … 2709 2789 WORD reserved:1; 2710 2790 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 } 2712 2811 } 2713 2812 alias FPO_DATA* PFPO_DATA; 2714 2813 2715 2814 struct IMAGE_DEBUG_MISC { 2716 DWORD DataType;2717 DWORD Length;2815 DWORD DataType; 2816 DWORD Length; 2718 2817 BOOLEAN Unicode; 2719 BYTE Reserved[3]; 2720 BYTE Data[1]; 2818 BYTE[3] Reserved; 2819 BYTE _Data; 2820 2821 BYTE* Data() { return &_Data; } 2721 2822 } 2722 2823 alias IMAGE_DEBUG_MISC* PIMAGE_DEBUG_MISC; … … 2730 2831 2731 2832 struct 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; 2745 2846 } 2746 2847 alias IMAGE_SEPARATE_DEBUG_HEADER* PIMAGE_SEPARATE_DEBUG_HEADER; … … 2794 2895 WORD ReparseDataLength; 2795 2896 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; } 2799 2902 } 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; } 2806 2914 } 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; } 2813 2924 } 2925 _MountPointReparseBuffer MountPointReparseBuffer; 2814 2926 } 2815 _u u;2816 2927 } 2817 2928 alias REPARSE_DATA_BUFFER *PREPARSE_DATA_BUFFER; 2818 2929 2819 2930 struct 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; } 2826 2939 } 2940 _GenericReparseBuffer GenericReparseBuffer; 2827 2941 } 2828 2942 alias REPARSE_GUID_DATA_BUFFER* PREPARSE_GUID_DATA_BUFFER; 2829 2943 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; 2944 const 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; 2833 2948 2834 2949 2835 2950 struct REPARSE_POINT_INFORMATION { 2836 WORD ReparseDataLength;2837 WORD UnparsedNameLength;2951 WORD ReparseDataLength; 2952 WORD UnparsedNameLength; 2838 2953 } 2839 2954 alias REPARSE_POINT_INFORMATION* PREPARSE_POINT_INFORMATION; 2840 2955 2841 2956 union FILE_SEGMENT_ELEMENT { 2842 PVOID64 Buffer;2957 PVOID64 Buffer; 2843 2958 ULONGLONG Alignment; 2844 2959 } … … 2846 2961 2847 2962 // 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; 2963 const 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; 2861 2977 2862 2978 // 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; 2979 const 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; 2871 2988 2872 2989 // 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; 2990 const 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; 2877 2995 2878 2996 // 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; 2997 enum : DWORD { 2998 JOB_OBJECT_TERMINATE_AT_END_OF_JOB, 2999 JOB_OBJECT_POST_AT_END_OF_JOB 3000 } 3001 3002 enum : 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 } 2891 3013 2892 3014 enum JOBOBJECTINFOCLASS { … … 2909 3031 LARGE_INTEGER ThisPeriodTotalUserTime; 2910 3032 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; 2915 3037 } 2916 3038 alias JOBOBJECT_BASIC_ACCOUNTING_INFORMATION* PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; 3039 2917 3040 struct JOBOBJECT_BASIC_LIMIT_INFORMATION { 2918 3041 LARGE_INTEGER PerProcessUserTimeLimit; 2919 3042 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; 2927 3050 } 2928 3051 alias JOBOBJECT_BASIC_LIMIT_INFORMATION* PJOBOBJECT_BASIC_LIMIT_INFORMATION; 2929 3052 2930 3053 struct 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 } 3060 alias JOBOBJECT_BASIC_PROCESS_ID_LIST* PJOBOBJECT_BASIC_PROCESS_ID_LIST; 2936 3061 2937 3062 struct JOBOBJECT_BASIC_UI_RESTRICTIONS { 2938 3063 DWORD UIRestrictionsClass; 2939 3064 } 2940 alias JOBOBJECT_BASIC_UI_RESTRICTIONS *PJOBOBJECT_BASIC_UI_RESTRICTIONS;3065 alias JOBOBJECT_BASIC_UI_RESTRICTIONS* PJOBOBJECT_BASIC_UI_RESTRICTIONS; 2941 3066 2942 3067 struct JOBOBJECT_SECURITY_LIMIT_INFORMATION { 2943 DWORD SecurityLimitFlags;2944 HANDLE JobToken;2945 PTOKEN_GROUPS SidsToDisable;3068 DWORD SecurityLimitFlags; 3069 HANDLE JobToken; 3070 PTOKEN_GROUPS SidsToDisable; 2946 3071 PTOKEN_PRIVILEGES PrivilegesToDelete; 2947 PTOKEN_GROUPS RestrictedSids;3072 PTOKEN_GROUPS RestrictedSids; 2948 3073 } 2949 3074 alias JOBOBJECT_SECURITY_LIMIT_INFORMATION* PJOBOBJECT_SECURITY_LIMIT_INFORMATION; … … 2955 3080 2956 3081 struct JOBOBJECT_ASSOCIATE_COMPLETION_PORT { 2957 PVOID CompletionKey;3082 PVOID CompletionKey; 2958 3083 HANDLE CompletionPort; 2959 3084 } … … 2969 3094 JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; 2970 3095 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; 2975 3100 } 2976 3101 alias JOBOBJECT_EXTENDED_LIMIT_INFORMATION* PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; … … 2981 3106 alias JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION; 2982 3107 2983 / * MinGW: Making these defines conditional on WINVER will break ddk includes */3108 // MinGW: Making these defines conditional on WINVER will break ddk includes 2984 3109 //static if (WINVER >= 0x0500) { 2985 3110 2986 const ES_SYSTEM_REQUIRED=0x00000001; 2987 const ES_DISPLAY_REQUIRED=0x00000002; 2988 const ES_USER_PRESENT=0x00000004; 2989 const ES_CONTINUOUS=0x80000000; 3111 const DWORD 3112 ES_SYSTEM_REQUIRED = 0x00000001, 3113 ES_DISPLAY_REQUIRED = 0x00000002, 3114 ES_USER_PRESENT = 0x00000004, 3115 ES_CONTINUOUS = 0x80000000; 2990 3116 2991 3117 enum LATENCY_TIME { … … 3033 3159 align(4): 3034 3160 struct BATTERY_REPORTING_SCALE { 3035 DWORD Granularity;3036 DWORD Capacity;3161 DWORD Granularity; 3162 DWORD Capacity; 3037 3163 } 3038 3164 alias BATTERY_REPORTING_SCALE* PBATTERY_REPORTING_SCALE; 3039 3165 3040 3166 struct 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 } 3171 alias POWER_ACTION_POLICY* PPOWER_ACTION_POLICY; 3172 3173 // POWER_ACTION_POLICY.Flags constants 3174 const 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 3184 const 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 3192 const size_t 3193 DISCHARGE_POLICY_CRITICAL = 0, 3194 DISCHARGE_POLICY_LOW = 1, 3195 NUM_DISCHARGE_POLICIES = 4; 3196 3197 enum : BYTE { 3198 PO_THROTTLE_NONE, 3199 PO_THROTTLE_CONSTANT, 3200 PO_THROTTLE_DEGRADE, 3201 PO_THROTTLE_ADAPTIVE, 3202 PO_THROTTLE_MAXIMUM 3203 } 3073 3204 3074 3205 struct 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; 3079 3210 SYSTEM_POWER_STATE MinSystemState; 3080 3211 } … … 3082 3213 3083 3214 struct 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; 3088 3219 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; 3095 3226 SYSTEM_POWER_STATE MinSleep; 3096 3227 SYSTEM_POWER_STATE MaxSleep; 3097 3228 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; 3112 3243 } 3113 3244 alias SYSTEM_POWER_POLICY* PSYSTEM_POWER_POLICY; 3114 3245 3115 3246 struct 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; 3144 3275 } 3145 3276 alias SYSTEM_POWER_CAPABILITIES* PSYSTEM_POWER_CAPABILITIES; 3146 3277 3147 3278 struct 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; 3159 3290 } 3160 3291 alias SYSTEM_BATTERY_STATE* PSYSTEM_BATTERY_STATE; … … 3186 3317 } 3187 3318 3188 static if (_WIN32_WINNT >= 0x0500) {3189 alias LONG function (PEXCEPTION_POINTERS) PVECTORED_EXCEPTION_HANDLER;3190 }3191 3319 //#if 1 /* (WIN32_WINNT >= 0x0500) */ 3192 3320 struct 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; 3197 3325 } 3198 3326 alias SYSTEM_POWER_INFORMATION* PSYSTEM_POWER_INFORMATION; 3199 3327 //#endif 3200 3328 3201 static if (_WIN32_WINNT >= 0x0501) { 3202 3329 struct 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 } 3349 alias PROCESSOR_POWER_POLICY_INFO* PPROCESSOR_POWER_POLICY_INFO; 3350 3351 struct 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 } 3359 alias PROCESSOR_POWER_POLICY* PPROCESSOR_POWER_POLICY; 3360 3361 struct 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 } 3369 alias ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY; 3370 3371 //}//#endif /* WINVER >= 0x0500 */ 3372 3373 extern (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 3382 static if (WINVER >= 0x501) { 3203 3383 enum HEAP_INFORMATION_CLASS { 3204 3384 HeapCompatibilityInformation … … 3213 3393 3214 3394 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; 3219 3399 LARGE_INTEGER liManifestLastWriteTime; 3220 DWORD ulPolicyPathType;3221 DWORD ulPolicyPathLength;3400 DWORD ulPolicyPathType; 3401 DWORD ulPolicyPathLength; 3222 3402 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; 3233 3413 } 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; 3237 3417 3238 3418 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; 3248 3428 PCWSTR lpRootManifestPath; 3249 3429 PCWSTR lpRootConfigurationPath; 3250 3430 PCWSTR lpAppDirPath; 3251 3431 } 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; 3255 3435 3256 3436 struct ACTIVATION_CONTEXT_QUERY_INDEX { … … 3258 3438 ULONG ulFileIndexInAssembly; 3259 3439 } 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; 3263 3442 3264 3443 struct ASSEMBLY_FILE_DETAILED_INFORMATION { 3265 DWORD ulFlags;3266 DWORD ulFilenameLength;3267 DWORD ulPathLength;3444 DWORD ulFlags; 3445 DWORD ulFilenameLength; 3446 DWORD ulPathLength; 3268 3447 PCWSTR lpFileName; 3269 3448 PCWSTR lpFilePath; 3270 3449 } 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 3455 version (Unicode) { 3322 3456 alias OSVERSIONINFOW OSVERSIONINFO; 3323 3457 alias OSVERSIONINFOEXW OSVERSIONINFOEX; … … 3331 3465 3332 3466 3333 static if (_WIN32_WINNT >= 0x0500) {3334 ULONGLONG VerSetConditionMask(ULONGLONG,DWORD,BYTE);3467 static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { 3468 extern (Windows) ULONGLONG VerSetConditionMask(ULONGLONG, DWORD, BYTE); 3335 3469 } 3336 3470
