Hex Artifact Content

Not logged in

Artifact 386a11e84035806804f2bc60e62f1cbe592fbe7f:


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                                               .