1 /** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 7 * Source: $(DRUNTIMESRC src/core/sys/windows/_wtypes.d) 8 */ 9 module core.sys.windows.wtypes; 10 version (Windows): 11 @system: 12 13 import core.sys.windows.rpc, core.sys.windows.rpcndr; 14 import core.sys.windows.windef; 15 import core.sys.windows.uuid; // for GUID_NULL 16 17 alias GUID_NULL IID_NULL, CLSID_NULL; 18 19 enum ROTFLAGS_REGISTRATIONKEEPSALIVE = 0x01; 20 enum ROTFLAGS_ALLOWANYCLIENT = 0x02; 21 22 // also in winsock2.h 23 struct BLOB { 24 ULONG cbSize; 25 BYTE* pBlobData; 26 } 27 alias BLOB* PBLOB, LPBLOB; 28 29 enum DVASPECT { 30 DVASPECT_CONTENT = 1, 31 DVASPECT_THUMBNAIL = 2, 32 DVASPECT_ICON = 4, 33 DVASPECT_DOCPRINT = 8 34 } 35 36 enum DVASPECT2 { 37 DVASPECT_OPAQUE = 16, 38 DVASPECT_TRANSPARENT = 32 39 } 40 41 enum STATFLAG { 42 STATFLAG_DEFAULT = 0, 43 STATFLAG_NONAME = 1 44 } 45 46 enum MEMCTX { 47 MEMCTX_LOCAL = 0, 48 MEMCTX_TASK, 49 MEMCTX_SHARED, 50 MEMCTX_MACSYSTEM, 51 MEMCTX_UNKNOWN = -1, 52 MEMCTX_SAME = -2 53 } 54 55 enum MSHCTX { 56 MSHCTX_LOCAL = 0, 57 MSHCTX_NOSHAREDMEM, 58 MSHCTX_DIFFERENTMACHINE, 59 MSHCTX_INPROC, 60 MSHCTX_CROSSCTX 61 } 62 63 enum CLSCTX { 64 CLSCTX_INPROC_SERVER = 0x1, 65 CLSCTX_INPROC_HANDLER = 0x2, 66 CLSCTX_LOCAL_SERVER = 0x4, 67 CLSCTX_INPROC_SERVER16 = 0x8, 68 CLSCTX_REMOTE_SERVER = 0x10, 69 CLSCTX_INPROC_HANDLER16 = 0x20, 70 CLSCTX_INPROC_SERVERX86 = 0x40, 71 CLSCTX_INPROC_HANDLERX86 = 0x80, 72 } 73 74 enum MSHLFLAGS { 75 MSHLFLAGS_NORMAL, 76 MSHLFLAGS_TABLESTRONG, 77 MSHLFLAGS_TABLEWEAK 78 } 79 80 struct FLAGGED_WORD_BLOB { 81 uint fFlags; 82 uint clSize; 83 ushort[1] asData; 84 } 85 86 alias WCHAR OLECHAR; 87 alias LPWSTR LPOLESTR; 88 alias LPCWSTR LPCOLESTR; 89 90 alias ushort VARTYPE; 91 alias short VARIANT_BOOL; 92 alias VARIANT_BOOL _VARIANT_BOOL; 93 enum VARIANT_BOOL VARIANT_TRUE = -1; // 0xffff; 94 enum VARIANT_BOOL VARIANT_FALSE = 0; 95 96 alias OLECHAR* BSTR; 97 alias FLAGGED_WORD_BLOB* wireBSTR; 98 alias BSTR* LPBSTR; 99 //alias LONG SCODE; // also in winerror 100 mixin DECLARE_HANDLE!("HCONTEXT"); 101 mixin DECLARE_HANDLE!("HMETAFILEPICT"); 102 103 union CY { 104 struct { 105 uint Lo; 106 int Hi; 107 } 108 LONGLONG int64; 109 } 110 111 alias double DATE; 112 struct BSTRBLOB { 113 ULONG cbSize; 114 PBYTE pData; 115 } 116 alias BSTRBLOB* LPBSTRBLOB; 117 118 // Used only in the PROPVARIANT structure 119 // According to the 2003 SDK, this should be in propidl.h, not here. 120 struct CLIPDATA { 121 ULONG cbSize; 122 int ulClipFmt; 123 PBYTE pClipData; 124 } 125 126 enum STGC { 127 STGC_DEFAULT, 128 STGC_OVERWRITE, 129 STGC_ONLYIFCURRENT, 130 STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE 131 } 132 133 enum STGMOVE { 134 STGMOVE_MOVE, 135 STGMOVE_COPY, 136 STGMOVE_SHALLOWCOPY 137 } 138 139 enum VARENUM { 140 VT_EMPTY, 141 VT_NULL, 142 VT_I2, 143 VT_I4, 144 VT_R4, 145 VT_R8, 146 VT_CY, 147 VT_DATE, 148 VT_BSTR, 149 VT_DISPATCH, 150 VT_ERROR, 151 VT_BOOL, 152 VT_VARIANT, 153 VT_UNKNOWN, 154 VT_DECIMAL, 155 VT_I1 = 16, 156 VT_UI1, 157 VT_UI2, 158 VT_UI4, 159 VT_I8, 160 VT_UI8, 161 VT_INT, 162 VT_UINT, 163 VT_VOID, 164 VT_HRESULT, 165 VT_PTR, 166 VT_SAFEARRAY, 167 VT_CARRAY, 168 VT_USERDEFINED, 169 VT_LPSTR, 170 VT_LPWSTR, 171 VT_RECORD = 36, 172 VT_INT_PTR = 37, 173 VT_UINT_PTR = 38, 174 VT_FILETIME = 64, 175 VT_BLOB, 176 VT_STREAM, 177 VT_STORAGE, 178 VT_STREAMED_OBJECT, 179 VT_STORED_OBJECT, 180 VT_BLOB_OBJECT, 181 VT_CF, 182 VT_CLSID, 183 VT_BSTR_BLOB = 0xfff, 184 VT_VECTOR = 0x1000, 185 VT_ARRAY = 0x2000, 186 VT_BYREF = 0x4000, 187 VT_RESERVED = 0x8000, 188 VT_ILLEGAL = 0xffff, 189 VT_ILLEGALMASKED = 0xfff, 190 VT_TYPEMASK = 0xfff 191 } 192 193 struct BYTE_SIZEDARR { 194 uint clSize; 195 byte* pData; 196 } 197 198 struct WORD_SIZEDARR { 199 uint clSize; 200 ushort* pData; 201 } 202 203 struct DWORD_SIZEDARR { 204 uint clSize; 205 uint* pData; 206 } 207 208 struct HYPER_SIZEDARR { 209 uint clSize; 210 hyper* pData; 211 } 212 213 alias double DOUBLE; 214 215 216 struct DECIMAL { 217 USHORT wReserved; 218 union { 219 struct { 220 ubyte scale; // valid values are 0 to 28 221 ubyte sign; // 0 for positive, DECIMAL_NEG for negatives. 222 enum ubyte DECIMAL_NEG = 0x80; 223 } 224 USHORT signscale; 225 } 226 ULONG Hi32; 227 union { 228 struct { 229 ULONG Lo32; 230 ULONG Mid32; 231 } 232 ULONGLONG Lo64; 233 } 234 // #define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;} setZeroDECIMAL235 void setZero() { Lo64 = 0; Hi32 = 0; signscale = 0; } 236 } 237