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