Artifact 386a11e84035806804f2bc60e62f1cbe592fbe7f:
- File
src/win32/basetsd.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a /*************** 0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0d 0a 2a 20 20 20 20 ********\..* 0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0060: 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 74 baset 0070: 73 64 2e 64 20 20 20 20 20 20 20 20 20 20 20 20 sd.d 0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0090: 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 20 20 *..* 00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0d *. 00e0: 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .* 00f0: 20 20 20 20 20 20 20 20 20 57 69 6e 64 6f 77 73 Windows 0100: 20 41 50 49 20 68 65 61 64 65 72 20 6d 6f 64 75 API header modu 0110: 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 le 0120: 20 20 20 20 20 20 20 20 20 2a 0d 0a 2a 20 20 20 *..* 0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0170: 20 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 20 *..* 0180: 20 20 20 20 20 54 72 61 6e 73 6c 61 74 65 64 20 Translated 0190: 66 72 6f 6d 20 4d 69 6e 47 57 20 41 50 49 20 66 from MinGW API f 01a0: 6f 72 20 4d 53 2d 57 69 6e 64 6f 77 73 20 33 2e or MS-Windows 3. 01b0: 31 32 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 12 * 01c0: 0d 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..* 01d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 79 by 01e0: 20 53 74 65 77 61 72 74 20 47 6f 72 64 6f 6e 20 Stewart Gordon 01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0200: 20 20 20 20 20 20 20 20 20 20 2a 0d 0a 2a 20 20 *..* 0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0250: 20 20 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 *..* 0260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0270: 50 6c 61 63 65 64 20 69 6e 74 6f 20 70 75 62 6c Placed into publ 0280: 69 63 20 64 6f 6d 61 69 6e 20 20 20 20 20 20 20 ic domain 0290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 02a0: 2a 0d 0a 5c 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a *..\************ 02b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 02c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 02d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 02e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 6d 6f ***********/..mo 02f0: 64 75 6c 65 20 77 69 6e 33 32 2e 62 61 73 65 74 dule win32.baset 0300: 73 64 3b 0d 0a 0d 0a 2f 2a 09 54 68 69 73 20 74 sd;..../*.This t 0310: 65 6d 70 6c 61 74 65 20 69 73 20 75 73 65 64 20 emplate is used 0320: 69 6e 20 74 68 65 73 65 20 6d 6f 64 75 6c 65 73 in these modules 0330: 20 74 6f 20 64 65 63 6c 61 72 65 20 63 6f 6e 73 to declare cons 0340: 74 61 6e 74 20 70 6f 69 6e 74 65 72 20 74 79 70 tant pointer typ 0350: 65 73 2c 0d 0a 20 2a 09 69 6e 20 6f 72 64 65 72 es,.. *.in order 0360: 20 74 6f 20 73 75 70 70 6f 72 74 20 62 6f 74 68 to support both 0370: 20 44 20 31 2e 78 20 61 6e 64 20 32 2e 78 2e 0d D 1.x and 2.x.. 0380: 0a 20 2a 09 53 69 6e 63 65 20 72 65 6d 6f 76 65 . *.Since remove 0390: 64 20 2d 20 6e 6f 77 20 73 75 70 70 6f 72 74 69 d - now supporti 03a0: 6e 67 20 6f 6e 6c 79 20 44 32 0d 0a 20 2a 2f 0d ng only D2.. */. 03b0: 0a 2f 2a 74 65 6d 70 6c 61 74 65 20 43 50 74 72 ./*template CPtr 03c0: 28 54 29 20 7b 0d 0a 09 76 65 72 73 69 6f 6e 20 (T) {...version 03d0: 28 44 5f 56 65 72 73 69 6f 6e 32 29 20 7b 0d 0a (D_Version2) {.. 03e0: 09 09 2f 2f 20 6d 75 73 74 20 75 73 65 20 6d 69 ..// must use mi 03f0: 78 69 6e 20 73 6f 20 74 68 61 74 20 69 74 20 64 xin so that it d 0400: 6f 65 73 6e 27 74 20 63 61 75 73 65 20 61 20 73 oesn't cause a s 0410: 79 6e 74 61 78 20 65 72 72 6f 72 20 75 6e 64 65 yntax error unde 0420: 72 20 44 31 0d 0a 09 09 6d 69 78 69 6e 28 22 61 r D1....mixin("a 0430: 6c 69 61 73 20 63 6f 6e 73 74 28 54 29 2a 20 43 lias const(T)* C 0440: 50 74 72 3b 22 29 3b 0d 0a 09 7d 20 65 6c 73 65 Ptr;");...} else 0450: 20 7b 0d 0a 09 09 61 6c 69 61 73 20 54 2a 20 43 {....alias T* C 0460: 50 74 72 3b 0d 0a 09 7d 0d 0a 7d 2a 2f 0d 0a 0d Ptr;...}..}*/... 0470: 0a 2f 2a 09 5b 43 79 62 65 72 53 68 61 64 6f 77 ./*.[CyberShadow 0480: 20 56 50 20 32 30 31 31 2e 31 32 2e 32 32 5d 20 VP 2011.12.22] 0490: 74 79 70 65 64 65 66 20 69 73 20 6e 6f 77 20 64 typedef is now d 04a0: 65 70 72 65 63 61 74 65 64 20 69 6e 20 44 32 2e eprecated in D2. 04b0: 0d 0a 20 2a 2f 0d 0a 74 65 6d 70 6c 61 74 65 20 .. */..template 04c0: 54 79 70 65 44 65 66 28 54 29 20 7b 0d 0a 09 76 TypeDef(T) {...v 04d0: 65 72 73 69 6f 6e 20 28 44 5f 56 65 72 73 69 6f ersion (D_Versio 04e0: 6e 32 29 20 7b 0d 0a 09 09 61 6c 69 61 73 20 54 n2) {....alias T 04f0: 20 54 79 70 65 44 65 66 3b 0d 0a 09 7d 20 65 6c TypeDef;...} el 0500: 73 65 20 7b 0d 0a 09 09 2f 2f 20 6d 75 73 74 20 se {....// must 0510: 75 73 65 20 6d 69 78 69 6e 20 73 6f 20 74 68 61 use mixin so tha 0520: 74 20 69 74 20 64 6f 65 73 6e 27 74 20 63 61 75 t it doesn't cau 0530: 73 65 20 61 20 64 65 70 72 65 63 61 74 69 6f 6e se a deprecation 0540: 20 65 72 72 6f 72 20 75 6e 64 65 72 20 44 32 0d error under D2. 0550: 0a 09 09 6d 69 78 69 6e 28 22 74 79 70 65 64 65 ...mixin("typede 0560: 66 20 54 20 54 79 70 65 44 65 66 3b 22 29 3b 0d f T TypeDef;");. 0570: 0a 09 7d 0d 0a 7d 0d 0a 0d 0a 2f 2f 20 5b 53 6e ..}..}....// [Sn 0580: 61 6b 45 20 32 30 30 39 2d 30 32 2d 32 33 5d 20 akE 2009-02-23] 0590: 4d 6f 76 65 64 20 48 41 4e 44 4c 45 20 64 65 66 Moved HANDLE def 05a0: 69 6e 69 74 69 6f 6e 20 68 65 72 65 20 66 72 6f inition here fro 05b0: 6d 20 77 69 6e 6e 74 2e 64 20 74 6f 20 61 76 6f m winnt.d to avo 05c0: 69 64 0d 0a 2f 2f 20 27 66 6f 72 77 61 74 64 20 id..// 'forwatd 05d0: 74 65 6d 70 6c 61 74 65 20 72 65 66 65 72 65 6e template referen 05e0: 63 65 27 20 74 6f 20 43 50 74 72 20 66 72 6f 6d ce' to CPtr from 05f0: 20 77 69 6e 6e 74 2e 64 20 63 61 75 73 65 64 20 winnt.d caused 0600: 62 79 20 61 20 63 69 72 63 75 6c 61 72 0d 0a 2f by a circular../ 0610: 2f 20 69 6d 70 6f 72 74 2e 0d 0a 0d 0a 61 6c 69 / import.....ali 0620: 61 73 20 54 79 70 65 44 65 66 21 28 76 6f 69 64 as TypeDef!(void 0630: 2a 29 20 48 41 4e 44 4c 45 3b 0d 0a 2f 2b 73 74 *) HANDLE;../+st 0640: 72 75 63 74 20 48 41 4e 44 4c 45 20 7b 0d 0a 20 ruct HANDLE {.. 0650: 20 20 20 63 6f 6e 73 74 28 76 6f 69 64 29 2a 20 const(void)* 0660: 68 3b 0d 0a 20 20 20 20 61 6c 69 61 73 20 68 20 h;.. alias h 0670: 74 68 69 73 3b 0d 0a 7d 2b 2f 0d 0a 0d 0a 70 61 this;..}+/....pa 0680: 63 6b 61 67 65 20 74 65 6d 70 6c 61 74 65 20 44 ckage template D 0690: 45 43 4c 41 52 45 5f 48 41 4e 44 4c 45 28 73 74 ECLARE_HANDLE(st 06a0: 72 69 6e 67 20 6e 61 6d 65 2c 20 62 61 73 65 20 ring name, base 06b0: 3d 20 48 41 4e 44 4c 45 29 20 7b 0d 0a 20 20 20 = HANDLE) {.. 06c0: 20 6d 69 78 69 6e 20 28 22 61 6c 69 61 73 20 22 mixin ("alias " 06d0: 20 7e 20 62 61 73 65 2e 73 74 72 69 6e 67 6f 66 ~ base.stringof 06e0: 20 7e 20 22 20 22 20 7e 20 6e 61 6d 65 20 7e 20 ~ " " ~ name ~ 06f0: 22 3b 22 29 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 ";");..}..alias 0700: 48 41 4e 44 4c 45 2a 20 50 48 41 4e 44 4c 45 2c HANDLE* PHANDLE, 0710: 20 4c 50 48 41 4e 44 4c 45 3b 0d 0a 0d 0a 76 65 LPHANDLE;....ve 0720: 72 73 69 6f 6e 20 28 57 69 6e 36 34 29 20 7b 0d rsion (Win64) {. 0730: 0a 09 61 6c 69 61 73 20 6c 6f 6e 67 20 5f 5f 69 ..alias long __i 0740: 6e 74 33 32 36 34 3b 0d 0a 09 63 6f 6e 73 74 20 nt3264;...const 0750: 75 6c 6f 6e 67 20 41 44 44 52 45 53 53 5f 54 41 ulong ADDRESS_TA 0760: 47 5f 42 49 54 20 3d 20 30 78 34 30 30 30 30 30 G_BIT = 0x400000 0770: 30 30 30 30 30 3b 0d 0a 0d 0a 09 61 6c 69 61 73 00000;.....alias 0780: 20 6c 6f 6e 67 20 49 4e 54 5f 50 54 52 2c 20 4c long INT_PTR, L 0790: 4f 4e 47 5f 50 54 52 3b 0d 0a 09 61 6c 69 61 73 ONG_PTR;...alias 07a0: 20 6c 6f 6e 67 2a 20 50 49 4e 54 5f 50 54 52 2c long* PINT_PTR, 07b0: 20 50 4c 4f 4e 47 5f 50 54 52 3b 0d 0a 09 61 6c PLONG_PTR;...al 07c0: 69 61 73 20 75 6c 6f 6e 67 20 55 49 4e 54 5f 50 ias ulong UINT_P 07d0: 54 52 2c 20 55 4c 4f 4e 47 5f 50 54 52 2c 20 48 TR, ULONG_PTR, H 07e0: 41 4e 44 4c 45 5f 50 54 52 3b 0d 0a 09 61 6c 69 ANDLE_PTR;...ali 07f0: 61 73 20 75 6c 6f 6e 67 2a 20 50 55 49 4e 54 5f as ulong* PUINT_ 0800: 50 54 52 2c 20 50 55 4c 4f 4e 47 5f 50 54 52 3b PTR, PULONG_PTR; 0810: 0d 0a 09 61 6c 69 61 73 20 69 6e 74 20 48 41 4c ...alias int HAL 0820: 46 5f 50 54 52 3b 0d 0a 09 61 6c 69 61 73 20 69 F_PTR;...alias i 0830: 6e 74 2a 20 50 48 41 4c 46 5f 50 54 52 3b 0d 0a nt* PHALF_PTR;.. 0840: 09 61 6c 69 61 73 20 75 69 6e 74 20 55 48 41 4c .alias uint UHAL 0850: 46 5f 50 54 52 3b 0d 0a 09 61 6c 69 61 73 20 75 F_PTR;...alias u 0860: 69 6e 74 2a 20 50 55 48 41 4c 46 5f 50 54 52 3b int* PUHALF_PTR; 0870: 0d 0a 0d 0a 09 75 69 6e 74 20 48 61 6e 64 6c 65 .....uint Handle 0880: 54 6f 55 4c 6f 6e 67 28 76 6f 69 64 2a 20 68 29 ToULong(void* h) 0890: 20 7b 20 72 65 74 75 72 6e 28 63 61 73 74 28 75 { return(cast(u 08a0: 69 6e 74 29 20 63 61 73 74 28 55 4c 4f 4e 47 5f int) cast(ULONG_ 08b0: 50 54 52 29 20 68 29 3b 20 7d 0d 0a 09 69 6e 74 PTR) h); }...int 08c0: 20 48 61 6e 64 6c 65 54 6f 4c 6f 6e 67 28 76 6f HandleToLong(vo 08d0: 69 64 2a 20 68 29 20 20 20 7b 20 72 65 74 75 72 id* h) { retur 08e0: 6e 28 63 61 73 74 28 69 6e 74 29 20 63 61 73 74 n(cast(int) cast 08f0: 28 4c 4f 4e 47 5f 50 54 52 29 20 68 29 3b 20 7d (LONG_PTR) h); } 0900: 0d 0a 09 76 6f 69 64 2a 20 55 4c 6f 6e 67 54 6f ...void* ULongTo 0910: 48 61 6e 64 6c 65 28 75 69 6e 74 20 68 29 20 7b Handle(uint h) { 0920: 20 72 65 74 75 72 6e 28 63 61 73 74 28 76 6f 69 return(cast(voi 0930: 64 2a 29 20 63 61 73 74 28 55 49 4e 54 5f 50 54 d*) cast(UINT_PT 0940: 52 29 20 68 29 3b 20 7d 0d 0a 09 76 6f 69 64 2a R) h); }...void* 0950: 20 4c 6f 6e 67 54 6f 48 61 6e 64 6c 65 28 69 6e LongToHandle(in 0960: 74 20 68 29 20 20 20 7b 20 72 65 74 75 72 6e 28 t h) { return( 0970: 63 61 73 74 28 76 6f 69 64 2a 29 20 63 61 73 74 cast(void*) cast 0980: 28 49 4e 54 5f 50 54 52 29 20 68 29 3b 20 7d 0d (INT_PTR) h); }. 0990: 0a 09 75 69 6e 74 20 50 74 72 54 6f 55 6c 6f 6e ..uint PtrToUlon 09a0: 67 28 76 6f 69 64 2a 20 70 29 20 20 20 20 7b 20 g(void* p) { 09b0: 72 65 74 75 72 6e 28 63 61 73 74 28 75 69 6e 74 return(cast(uint 09c0: 29 20 63 61 73 74 28 55 4c 4f 4e 47 5f 50 54 52 ) cast(ULONG_PTR 09d0: 29 20 70 29 3b 20 7d 0d 0a 09 75 69 6e 74 20 50 ) p); }...uint P 09e0: 74 72 54 6f 55 69 6e 74 28 76 6f 69 64 2a 20 70 trToUint(void* p 09f0: 29 20 20 20 20 20 7b 20 72 65 74 75 72 6e 28 63 ) { return(c 0a00: 61 73 74 28 75 69 6e 74 29 20 63 61 73 74 28 55 ast(uint) cast(U 0a10: 49 4e 54 5f 50 54 52 29 20 70 29 3b 20 7d 0d 0a INT_PTR) p); }.. 0a20: 09 75 73 68 6f 72 74 20 50 74 72 54 6f 55 73 68 .ushort PtrToUsh 0a30: 6f 72 74 28 76 6f 69 64 2a 20 70 29 20 7b 20 72 ort(void* p) { r 0a40: 65 74 75 72 6e 28 63 61 73 74 28 75 73 68 6f 72 eturn(cast(ushor 0a50: 74 29 20 63 61 73 74 28 75 69 6e 74 29 20 63 61 t) cast(uint) ca 0a60: 73 74 28 55 4c 4f 4e 47 5f 50 54 52 29 20 70 29 st(ULONG_PTR) p) 0a70: 3b 20 7d 0d 0a 09 69 6e 74 20 50 74 72 54 6f 4c ; }...int PtrToL 0a80: 6f 6e 67 28 76 6f 69 64 2a 20 70 29 20 20 20 20 ong(void* p) 0a90: 20 20 7b 20 72 65 74 75 72 6e 28 63 61 73 74 28 { return(cast( 0aa0: 69 6e 74 29 20 63 61 73 74 28 4c 4f 4e 47 5f 50 int) cast(LONG_P 0ab0: 54 52 29 20 70 29 3b 20 7d 0d 0a 09 69 6e 74 20 TR) p); }...int 0ac0: 50 74 72 54 6f 49 6e 74 28 76 6f 69 64 2a 20 70 PtrToInt(void* p 0ad0: 29 20 20 20 20 20 20 20 7b 20 72 65 74 75 72 6e ) { return 0ae0: 28 63 61 73 74 28 69 6e 74 29 20 63 61 73 74 28 (cast(int) cast( 0af0: 49 4e 54 5f 50 54 52 29 20 70 29 3b 20 7d 0d 0a INT_PTR) p); }.. 0b00: 09 73 68 6f 72 74 20 50 74 72 54 6f 53 68 6f 72 .short PtrToShor 0b10: 74 28 76 6f 69 64 2a 20 70 29 20 20 20 7b 20 72 t(void* p) { r 0b20: 65 74 75 72 6e 28 63 61 73 74 28 73 68 6f 72 74 eturn(cast(short 0b30: 29 20 63 61 73 74 28 69 6e 74 29 20 63 61 73 74 ) cast(int) cast 0b40: 28 4c 4f 4e 47 5f 50 54 52 29 20 70 29 3b 20 7d (LONG_PTR) p); } 0b50: 0d 0a 09 76 6f 69 64 2a 20 49 6e 74 54 6f 50 74 ...void* IntToPt 0b60: 72 28 69 6e 74 20 69 29 20 20 20 20 20 20 20 7b r(int i) { 0b70: 20 72 65 74 75 72 6e 28 63 61 73 74 28 76 6f 69 return(cast(voi 0b80: 64 2a 29 20 63 61 73 74 28 49 4e 54 5f 50 54 52 d*) cast(INT_PTR 0b90: 29 20 69 29 3b 20 7d 0d 0a 09 76 6f 69 64 2a 20 ) i); }...void* 0ba0: 55 49 6e 74 54 6f 50 74 72 28 75 69 6e 74 20 75 UIntToPtr(uint u 0bb0: 69 29 20 20 20 20 7b 20 72 65 74 75 72 6e 28 63 i) { return(c 0bc0: 61 73 74 28 76 6f 69 64 2a 29 20 63 61 73 74 28 ast(void*) cast( 0bd0: 55 49 4e 54 5f 50 54 52 29 20 75 69 29 3b 20 7d UINT_PTR) ui); } 0be0: 0d 0a 09 76 6f 69 64 2a 20 4c 6f 6e 67 54 6f 50 ...void* LongToP 0bf0: 74 72 28 69 6e 74 20 6c 29 20 20 20 20 20 20 7b tr(int l) { 0c00: 20 72 65 74 75 72 6e 28 63 61 73 74 28 76 6f 69 return(cast(voi 0c10: 64 2a 29 20 63 61 73 74 28 4c 4f 4e 47 5f 50 54 d*) cast(LONG_PT 0c20: 52 29 20 6c 29 3b 20 7d 0d 0a 09 76 6f 69 64 2a R) l); }...void* 0c30: 20 55 4c 6f 6e 67 54 6f 50 74 72 28 75 69 6e 74 ULongToPtr(uint 0c40: 20 75 6c 29 20 20 20 7b 20 72 65 74 75 72 6e 28 ul) { return( 0c50: 63 61 73 74 28 76 6f 69 64 2a 29 20 63 61 73 74 cast(void*) cast 0c60: 28 55 4c 4f 4e 47 5f 50 54 52 29 20 75 6c 29 3b (ULONG_PTR) ul); 0c70: 20 7d 0d 0a 0d 0a 7d 20 65 6c 73 65 20 7b 0d 0a }....} else {.. 0c80: 09 61 6c 69 61 73 20 69 6e 74 20 5f 5f 69 6e 74 .alias int __int 0c90: 33 32 36 34 3b 0d 0a 09 63 6f 6e 73 74 20 75 69 3264;...const ui 0ca0: 6e 74 20 41 44 44 52 45 53 53 5f 54 41 47 5f 42 nt ADDRESS_TAG_B 0cb0: 49 54 20 3d 20 30 78 38 30 30 30 30 30 30 30 3b IT = 0x80000000; 0cc0: 0d 0a 0d 0a 09 61 6c 69 61 73 20 69 6e 74 20 49 .....alias int I 0cd0: 4e 54 5f 50 54 52 2c 20 4c 4f 4e 47 5f 50 54 52 NT_PTR, LONG_PTR 0ce0: 3b 0d 0a 09 61 6c 69 61 73 20 69 6e 74 2a 20 50 ;...alias int* P 0cf0: 49 4e 54 5f 50 54 52 2c 20 50 4c 4f 4e 47 5f 50 INT_PTR, PLONG_P 0d00: 54 52 3b 0d 0a 09 61 6c 69 61 73 20 75 69 6e 74 TR;...alias uint 0d10: 20 55 49 4e 54 5f 50 54 52 2c 20 55 4c 4f 4e 47 UINT_PTR, ULONG 0d20: 5f 50 54 52 2c 20 48 41 4e 44 4c 45 5f 50 54 52 _PTR, HANDLE_PTR 0d30: 3b 0d 0a 09 61 6c 69 61 73 20 75 69 6e 74 2a 20 ;...alias uint* 0d40: 50 55 49 4e 54 5f 50 54 52 2c 20 50 55 4c 4f 4e PUINT_PTR, PULON 0d50: 47 5f 50 54 52 3b 0d 0a 09 61 6c 69 61 73 20 73 G_PTR;...alias s 0d60: 68 6f 72 74 20 48 41 4c 46 5f 50 54 52 3b 0d 0a hort HALF_PTR;.. 0d70: 09 61 6c 69 61 73 20 73 68 6f 72 74 2a 20 50 48 .alias short* PH 0d80: 41 4c 46 5f 50 54 52 3b 0d 0a 09 61 6c 69 61 73 ALF_PTR;...alias 0d90: 20 75 73 68 6f 72 74 20 55 48 41 4c 46 5f 50 54 ushort UHALF_PT 0da0: 52 3b 0d 0a 09 61 6c 69 61 73 20 75 73 68 6f 72 R;...alias ushor 0db0: 74 2a 20 50 55 48 41 4c 46 5f 50 54 52 3b 0d 0a t* PUHALF_PTR;.. 0dc0: 0d 0a 09 75 69 6e 74 20 48 61 6e 64 6c 65 54 6f ...uint HandleTo 0dd0: 55 6c 6f 6e 67 28 48 41 4e 44 4c 45 20 68 29 20 Ulong(HANDLE h) 0de0: 20 20 20 20 20 7b 20 72 65 74 75 72 6e 20 63 61 { return ca 0df0: 73 74 28 75 69 6e 74 29 20 68 3b 20 7d 0d 0a 09 st(uint) h; }... 0e00: 69 6e 74 20 48 61 6e 64 6c 65 54 6f 4c 6f 6e 67 int HandleToLong 0e10: 28 48 41 4e 44 4c 45 20 68 29 20 20 20 20 20 20 (HANDLE h) 0e20: 20 20 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 { return cast( 0e30: 69 6e 74 29 20 68 3b 20 7d 0d 0a 09 48 41 4e 44 int) h; }...HAND 0e40: 4c 45 20 4c 6f 6e 67 54 6f 48 61 6e 64 6c 65 28 LE LongToHandle( 0e50: 4c 4f 4e 47 5f 50 54 52 20 68 29 20 20 20 7b 20 LONG_PTR h) { 0e60: 72 65 74 75 72 6e 20 63 61 73 74 28 48 41 4e 44 return cast(HAND 0e70: 4c 45 29 68 3b 20 7d 0d 0a 09 75 69 6e 74 20 50 LE)h; }...uint P 0e80: 74 72 54 6f 55 6c 6f 6e 67 28 63 6f 6e 73 74 28 trToUlong(const( 0e90: 76 6f 69 64 29 2a 20 70 29 20 20 20 20 7b 20 72 void)* p) { r 0ea0: 65 74 75 72 6e 20 63 61 73 74 28 75 69 6e 74 29 eturn cast(uint) 0eb0: 20 70 3b 20 7d 0d 0a 09 75 69 6e 74 20 50 74 72 p; }...uint Ptr 0ec0: 54 6f 55 69 6e 74 28 63 6f 6e 73 74 28 76 6f 69 ToUint(const(voi 0ed0: 64 29 2a 20 70 29 20 20 20 20 20 7b 20 72 65 74 d)* p) { ret 0ee0: 75 72 6e 20 63 61 73 74 28 75 69 6e 74 29 20 70 urn cast(uint) p 0ef0: 3b 20 7d 0d 0a 09 69 6e 74 20 50 74 72 54 6f 49 ; }...int PtrToI 0f00: 6e 74 28 63 6f 6e 73 74 28 76 6f 69 64 29 2a 20 nt(const(void)* 0f10: 70 29 20 20 20 20 20 20 20 7b 20 72 65 74 75 72 p) { retur 0f20: 6e 20 63 61 73 74 28 69 6e 74 29 20 70 3b 20 7d n cast(int) p; } 0f30: 0d 0a 09 75 73 68 6f 72 74 20 50 74 72 54 6f 55 ...ushort PtrToU 0f40: 73 68 6f 72 74 28 63 6f 6e 73 74 28 76 6f 69 64 short(const(void 0f50: 29 2a 20 70 29 20 7b 20 72 65 74 75 72 6e 20 63 )* p) { return c 0f60: 61 73 74 28 75 73 68 6f 72 74 29 20 70 3b 20 7d ast(ushort) p; } 0f70: 0d 0a 09 73 68 6f 72 74 20 50 74 72 54 6f 53 68 ...short PtrToSh 0f80: 6f 72 74 28 63 6f 6e 73 74 28 76 6f 69 64 29 2a ort(const(void)* 0f90: 20 70 29 20 20 20 7b 20 72 65 74 75 72 6e 20 63 p) { return c 0fa0: 61 73 74 28 73 68 6f 72 74 29 20 70 3b 20 7d 0d ast(short) p; }. 0fb0: 0a 09 76 6f 69 64 2a 20 49 6e 74 54 6f 50 74 72 ..void* IntToPtr 0fc0: 28 69 6e 74 20 69 29 20 20 20 20 20 20 20 20 20 (int i) 0fd0: 20 20 20 20 7b 20 72 65 74 75 72 6e 20 63 61 73 { return cas 0fe0: 74 28 76 6f 69 64 2a 29 20 69 3b 20 7d 0d 0a 09 t(void*) i; }... 0ff0: 76 6f 69 64 2a 20 55 49 6e 74 54 6f 50 74 72 28 void* UIntToPtr( 1000: 75 69 6e 74 20 75 69 29 20 20 20 20 20 20 20 20 uint ui) 1010: 20 20 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 { return cast( 1020: 76 6f 69 64 2a 29 20 75 69 3b 20 7d 0d 0a 09 61 void*) ui; }...a 1030: 6c 69 61 73 20 49 6e 74 54 6f 50 74 72 20 4c 6f lias IntToPtr Lo 1040: 6e 67 54 6f 50 74 72 3b 0d 0a 09 61 6c 69 61 73 ngToPtr;...alias 1050: 20 55 49 6e 74 54 6f 50 74 72 20 55 4c 6f 6e 67 UIntToPtr ULong 1060: 54 6f 50 74 72 3b 0d 0a 7d 0d 0a 0d 0a 61 6c 69 ToPtr;..}....ali 1070: 61 73 20 55 49 6e 74 54 6f 50 74 72 20 55 69 6e as UIntToPtr Uin 1080: 74 54 6f 50 74 72 2c 20 55 6c 6f 6e 67 54 6f 50 tToPtr, UlongToP 1090: 74 72 3b 0d 0a 0d 0a 65 6e 75 6d 20 3a 20 55 49 tr;....enum : UI 10a0: 4e 54 5f 50 54 52 20 7b 0d 0a 09 4d 41 58 55 49 NT_PTR {...MAXUI 10b0: 4e 54 5f 50 54 52 20 3d 20 55 49 4e 54 5f 50 54 NT_PTR = UINT_PT 10c0: 52 2e 6d 61 78 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d R.max..}....enum 10d0: 20 3a 20 49 4e 54 5f 50 54 52 20 7b 0d 0a 09 4d : INT_PTR {...M 10e0: 41 58 49 4e 54 5f 50 54 52 20 3d 20 49 4e 54 5f AXINT_PTR = INT_ 10f0: 50 54 52 2e 6d 61 78 2c 0d 0a 09 4d 49 4e 49 4e PTR.max,...MININ 1100: 54 5f 50 54 52 20 3d 20 49 4e 54 5f 50 54 52 2e T_PTR = INT_PTR. 1110: 6d 69 6e 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 3a min..}....enum : 1120: 20 55 4c 4f 4e 47 5f 50 54 52 20 7b 0d 0a 09 4d ULONG_PTR {...M 1130: 41 58 55 4c 4f 4e 47 5f 50 54 52 20 3d 20 55 4c AXULONG_PTR = UL 1140: 4f 4e 47 5f 50 54 52 2e 6d 61 78 0d 0a 7d 0d 0a ONG_PTR.max..}.. 1150: 0d 0a 65 6e 75 6d 20 3a 20 4c 4f 4e 47 5f 50 54 ..enum : LONG_PT 1160: 52 20 7b 0d 0a 09 4d 41 58 4c 4f 4e 47 5f 50 54 R {...MAXLONG_PT 1170: 52 20 3d 20 4c 4f 4e 47 5f 50 54 52 2e 6d 61 78 R = LONG_PTR.max 1180: 2c 0d 0a 09 4d 49 4e 4c 4f 4e 47 5f 50 54 52 20 ,...MINLONG_PTR 1190: 3d 20 4c 4f 4e 47 5f 50 54 52 2e 6d 69 6e 0d 0a = LONG_PTR.min.. 11a0: 7d 0d 0a 0d 0a 65 6e 75 6d 20 3a 20 55 48 41 4c }....enum : UHAL 11b0: 46 5f 50 54 52 20 7b 0d 0a 09 4d 41 58 55 48 41 F_PTR {...MAXUHA 11c0: 4c 46 5f 50 54 52 20 3d 20 55 48 41 4c 46 5f 50 LF_PTR = UHALF_P 11d0: 54 52 2e 6d 61 78 0d 0a 7d 0d 0a 0d 0a 65 6e 75 TR.max..}....enu 11e0: 6d 20 3a 20 48 41 4c 46 5f 50 54 52 20 7b 0d 0a m : HALF_PTR {.. 11f0: 09 4d 41 58 48 41 4c 46 5f 50 54 52 20 3d 20 48 .MAXHALF_PTR = H 1200: 41 4c 46 5f 50 54 52 2e 6d 61 78 2c 0d 0a 09 4d ALF_PTR.max,...M 1210: 49 4e 48 41 4c 46 5f 50 54 52 20 3d 20 48 41 4c INHALF_PTR = HAL 1220: 46 5f 50 54 52 2e 6d 69 6e 0d 0a 7d 0d 0a 0d 0a F_PTR.min..}.... 1230: 61 6c 69 61 73 20 62 79 74 65 20 49 4e 54 38 3b alias byte INT8; 1240: 0d 0a 61 6c 69 61 73 20 62 79 74 65 2a 20 50 49 ..alias byte* PI 1250: 4e 54 38 3b 0d 0a 61 6c 69 61 73 20 75 62 79 74 NT8;..alias ubyt 1260: 65 20 55 49 4e 54 38 3b 0d 0a 61 6c 69 61 73 20 e UINT8;..alias 1270: 75 62 79 74 65 2a 20 50 55 49 4e 54 38 3b 0d 0a ubyte* PUINT8;.. 1280: 0d 0a 61 6c 69 61 73 20 73 68 6f 72 74 20 49 4e ..alias short IN 1290: 54 31 36 3b 0d 0a 61 6c 69 61 73 20 73 68 6f 72 T16;..alias shor 12a0: 74 2a 20 50 49 4e 54 31 36 3b 0d 0a 61 6c 69 61 t* PINT16;..alia 12b0: 73 20 75 73 68 6f 72 74 20 55 49 4e 54 31 36 3b s ushort UINT16; 12c0: 0d 0a 61 6c 69 61 73 20 75 73 68 6f 72 74 2a 20 ..alias ushort* 12d0: 50 55 49 4e 54 31 36 3b 0d 0a 0d 0a 61 6c 69 61 PUINT16;....alia 12e0: 73 20 69 6e 74 20 4c 4f 4e 47 33 32 2c 20 49 4e s int LONG32, IN 12f0: 54 33 32 3b 0d 0a 61 6c 69 61 73 20 69 6e 74 2a T32;..alias int* 1300: 20 50 4c 4f 4e 47 33 32 2c 20 50 49 4e 54 33 32 PLONG32, PINT32 1310: 3b 0d 0a 61 6c 69 61 73 20 75 69 6e 74 20 55 4c ;..alias uint UL 1320: 4f 4e 47 33 32 2c 20 44 57 4f 52 44 33 32 2c 20 ONG32, DWORD32, 1330: 55 49 4e 54 33 32 3b 0d 0a 61 6c 69 61 73 20 75 UINT32;..alias u 1340: 69 6e 74 2a 20 50 55 4c 4f 4e 47 33 32 2c 20 50 int* PULONG32, P 1350: 44 57 4f 52 44 33 32 2c 20 50 55 49 4e 54 33 32 DWORD32, PUINT32 1360: 3b 0d 0a 0d 0a 61 6c 69 61 73 20 55 4c 4f 4e 47 ;....alias ULONG 1370: 5f 50 54 52 20 53 49 5a 45 5f 54 2c 20 44 57 4f _PTR SIZE_T, DWO 1380: 52 44 5f 50 54 52 3b 0d 0a 61 6c 69 61 73 20 55 RD_PTR;..alias U 1390: 4c 4f 4e 47 5f 50 54 52 2a 20 50 53 49 5a 45 5f LONG_PTR* PSIZE_ 13a0: 54 2c 20 50 44 57 4f 52 44 5f 50 54 52 3b 0d 0a T, PDWORD_PTR;.. 13b0: 61 6c 69 61 73 20 4c 4f 4e 47 5f 50 54 52 20 53 alias LONG_PTR S 13c0: 53 49 5a 45 5f 54 3b 0d 0a 61 6c 69 61 73 20 4c SIZE_T;..alias L 13d0: 4f 4e 47 5f 50 54 52 2a 20 50 53 53 49 5a 45 5f ONG_PTR* PSSIZE_ 13e0: 54 3b 0d 0a 0d 0a 61 6c 69 61 73 20 6c 6f 6e 67 T;....alias long 13f0: 20 4c 4f 4e 47 36 34 2c 20 49 4e 54 36 34 3b 0d LONG64, INT64;. 1400: 0a 61 6c 69 61 73 20 6c 6f 6e 67 2a 20 50 4c 4f .alias long* PLO 1410: 4e 47 36 34 2c 20 50 49 4e 54 36 34 3b 0d 0a 61 NG64, PINT64;..a 1420: 6c 69 61 73 20 75 6c 6f 6e 67 20 55 4c 4f 4e 47 lias ulong ULONG 1430: 36 34 2c 20 44 57 4f 52 44 36 34 2c 20 55 49 4e 64, DWORD64, UIN 1440: 54 36 34 3b 0d 0a 61 6c 69 61 73 20 75 6c 6f 6e T64;..alias ulon 1450: 67 2a 20 50 55 4c 4f 4e 47 36 34 2c 20 50 44 57 g* PULONG64, PDW 1460: 4f 52 44 36 34 2c 20 50 55 49 4e 54 36 34 3b 0d ORD64, PUINT64;. 1470: 0a .