d: Merge upstream dmd 568496d5b, druntime 178c44ff, phobos 574bf883b.
[official-gcc.git] / libphobos / libdruntime / core / sys / windows / ddeml.d
blob22b330cfc47f473ba7611e9db2881f8ecb7ae7e8
1 /**
2 * Windows API header module
4 * Translated from MinGW Windows headers
6 * Authors: Stewart Gordon
7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8 * Source: $(DRUNTIMESRC core/sys/windows/_ddeml.d)
9 */
10 module core.sys.windows.ddeml;
11 version (Windows):
12 @system:
14 version (ANSI) {} else version = Unicode;
15 pragma(lib, "user32");
17 import core.sys.windows.basetsd, core.sys.windows.windef, core.sys.windows.winnt;
19 mixin DECLARE_HANDLE!("HCONVLIST");
20 mixin DECLARE_HANDLE!("HCONV");
21 mixin DECLARE_HANDLE!("HSZ");
22 mixin DECLARE_HANDLE!("HDDEDATA");
24 enum : int {
25 CP_WINANSI = 1004,
26 CP_WINUNICODE = 1200
29 enum : UINT {
30 XTYPF_NOBLOCK = 2,
31 XTYPF_NODATA = 4,
32 XTYPF_ACKREQ = 8
35 enum : UINT {
36 XCLASS_MASK = 0xFC00,
37 XCLASS_BOOL = 0x1000,
38 XCLASS_DATA = 0x2000,
39 XCLASS_FLAGS = 0x4000,
40 XCLASS_NOTIFICATION = 0x8000
43 enum : UINT {
44 XST_NULL,
45 XST_INCOMPLETE,
46 XST_CONNECTED,
47 XST_INIT1,
48 XST_INIT2,
49 XST_REQSENT,
50 XST_DATARCVD,
51 XST_POKESENT,
52 XST_POKEACKRCVD,
53 XST_EXECSENT,
54 XST_EXECACKRCVD,
55 XST_ADVSENT,
56 XST_UNADVSENT,
57 XST_ADVACKRCVD,
58 XST_UNADVACKRCVD,
59 XST_ADVDATASENT,
60 XST_ADVDATAACKRCVD // = 16
63 enum : UINT {
64 XTYP_ERROR = XCLASS_NOTIFICATION | XTYPF_NOBLOCK,
65 XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS,
66 XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK,
67 XTYP_ADVSTART = 0x0030 | XCLASS_BOOL,
68 XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION,
69 XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS,
70 XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK,
71 XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK,
72 XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION,
73 XTYP_POKE = 0x0090 | XCLASS_FLAGS,
74 XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK,
75 XTYP_REQUEST = 0x00B0 | XCLASS_DATA,
76 XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK,
77 XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK,
78 XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK,
79 XTYP_MONITOR = 0X00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK,
80 XTYP_MASK = 0x00F0,
81 XTYP_SHIFT = 4
84 enum : UINT {
85 TIMEOUT_ASYNC = 0xFFFFFFFF
88 enum : UINT {
89 QID_SYNC = 0xFFFFFFFF
92 enum : UINT {
93 ST_CONNECTED = 1,
94 ST_ADVISE = 2,
95 ST_ISLOCAL = 4,
96 ST_BLOCKED = 8,
97 ST_CLIENT = 16,
98 ST_TERMINATED = 32,
99 ST_INLIST = 64,
100 ST_BLOCKNEXT = 128,
101 ST_ISSELF = 256
104 enum : UINT {
105 CADV_LATEACK = 0xFFFF
108 enum : UINT {
109 DMLERR_NO_ERROR = 0,
110 DMLERR_FIRST = 0x4000,
111 DMLERR_ADVACKTIMEOUT = DMLERR_FIRST,
112 DMLERR_BUSY,
113 DMLERR_DATAACKTIMEOUT,
114 DMLERR_DLL_NOT_INITIALIZED,
115 DMLERR_DLL_USAGE,
116 DMLERR_EXECACKTIMEOUT,
117 DMLERR_INVALIDPARAMETER,
118 DMLERR_LOW_MEMORY,
119 DMLERR_MEMORY_ERROR,
120 DMLERR_NOTPROCESSED,
121 DMLERR_NO_CONV_ESTABLISHED,
122 DMLERR_POKEACKTIMEOUT,
123 DMLERR_POSTMSG_FAILED,
124 DMLERR_REENTRANCY,
125 DMLERR_SERVER_DIED,
126 DMLERR_SYS_ERROR,
127 DMLERR_UNADVACKTIMEOUT,
128 DMLERR_UNFOUND_QUEUE_ID, // = 0x4011
129 DMLERR_LAST = DMLERR_UNFOUND_QUEUE_ID
132 enum : UINT {
133 DDE_FACK = 0x8000,
134 DDE_FBUSY = 0x4000,
135 DDE_FDEFERUPD = 0x4000,
136 DDE_FACKREQ = 0x8000,
137 DDE_FRELEASE = 0x2000,
138 DDE_FREQUESTED = 0x1000,
139 DDE_FAPPSTATUS = 0x00ff,
140 DDE_FNOTPROCESSED = 0,
141 DDE_FACKRESERVED = (~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS)),
142 DDE_FADVRESERVED = (~(DDE_FACKREQ|DDE_FDEFERUPD)),
143 DDE_FDATRESERVED = (~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED)),
144 DDE_FPOKRESERVED = (~DDE_FRELEASE)
147 enum : UINT {
148 MSGF_DDEMGR = 0x8001
151 enum CBR_BLOCK = cast(HDDEDATA)-1;
153 enum DWORD
154 APPCLASS_STANDARD = 0,
155 APPCLASS_MONITOR = 0x00000001,
156 APPCLASS_MASK = 0x0000000F,
157 APPCMD_CLIENTONLY = 0x00000010,
158 APPCMD_FILTERINITS = 0x00000020,
159 APPCMD_MASK = 0x00000FF0,
160 CBF_FAIL_SELFCONNECTIONS = 0x00001000,
161 CBF_FAIL_CONNECTIONS = 0x00002000,
162 CBF_FAIL_ADVISES = 0x00004000,
163 CBF_FAIL_EXECUTES = 0x00008000,
164 CBF_FAIL_POKES = 0x00010000,
165 CBF_FAIL_REQUESTS = 0x00020000,
166 CBF_FAIL_ALLSVRXACTIONS = 0x0003f000,
167 CBF_SKIP_CONNECT_CONFIRMS = 0x00040000,
168 CBF_SKIP_REGISTRATIONS = 0x00080000,
169 CBF_SKIP_UNREGISTRATIONS = 0x00100000,
170 CBF_SKIP_DISCONNECTS = 0x00200000,
171 CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000,
172 MF_HSZ_INFO = 0x01000000,
173 MF_SENDMSGS = 0x02000000,
174 MF_POSTMSGS = 0x04000000,
175 MF_CALLBACKS = 0x08000000,
176 MF_ERRORS = 0x10000000,
177 MF_LINKS = 0x20000000,
178 MF_CONV = 0x40000000,
179 MF_MASK = 0xFF000000;
181 enum : UINT {
182 EC_ENABLEALL = 0,
183 EC_ENABLEONE = ST_BLOCKNEXT,
184 EC_DISABLE = ST_BLOCKED,
185 EC_QUERYWAITING = 2
188 enum : UINT {
189 DNS_REGISTER = 1,
190 DNS_UNREGISTER = 2,
191 DNS_FILTERON = 4,
192 DNS_FILTEROFF = 8
195 enum : UINT {
196 HDATA_APPOWNED = 1
199 enum : UINT {
200 MAX_MONITORS = 4
203 enum : int {
204 MH_CREATE = 1,
205 MH_KEEP = 2,
206 MH_DELETE = 3,
207 MH_CLEANUP = 4
210 extern (Windows) alias HDDEDATA
211 function(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, ULONG_PTR, ULONG_PTR) PFNCALLBACK;
213 struct HSZPAIR {
214 HSZ hszSvc;
215 HSZ hszTopic;
217 alias HSZPAIR* PHSZPAIR;
219 struct CONVCONTEXT {
220 UINT cb = CONVCONTEXT.sizeof;
221 UINT wFlags;
222 UINT wCountryID;
223 int iCodePage;
224 DWORD dwLangID;
225 DWORD dwSecurity;
226 SECURITY_QUALITY_OF_SERVICE qos;
228 alias CONVCONTEXT* PCONVCONTEXT;
230 struct CONVINFO {
231 DWORD cb = CONVINFO.sizeof;
232 DWORD_PTR hUser;
233 HCONV hConvPartner;
234 HSZ hszSvcPartner;
235 HSZ hszServiceReq;
236 HSZ hszTopic;
237 HSZ hszItem;
238 UINT wFmt;
239 UINT wType;
240 UINT wStatus;
241 UINT wConvst;
242 UINT wLastError;
243 HCONVLIST hConvList;
244 CONVCONTEXT ConvCtxt;
245 HWND hwnd;
246 HWND hwndPartner;
248 alias CONVINFO* PCONVINFO;
250 struct DDEML_MSG_HOOK_DATA {
251 UINT_PTR uiLo;
252 UINT_PTR uiHi;
253 DWORD cbData;
254 DWORD[8] Data;
257 struct MONHSZSTRUCT {
258 UINT cb = MONHSZSTRUCT.sizeof;
259 int fsAction;
260 DWORD dwTime;
261 HSZ hsz;
262 HANDLE hTask;
263 TCHAR[1] _str = 0;
265 TCHAR* str() return { return _str.ptr; }
267 alias MONHSZSTRUCT* PMONHSZSTRUCT;
269 struct MONLINKSTRUCT {
270 UINT cb = MONLINKSTRUCT.sizeof;
271 DWORD dwTime;
272 HANDLE hTask;
273 BOOL fEstablished;
274 BOOL fNoData;
275 HSZ hszSvc;
276 HSZ hszTopic;
277 HSZ hszItem;
278 UINT wFmt;
279 BOOL fServer;
280 HCONV hConvServer;
281 HCONV hConvClient;
283 alias MONLINKSTRUCT* PMONLINKSTRUCT;
285 struct MONCONVSTRUCT {
286 UINT cb = MONCONVSTRUCT.sizeof;
287 BOOL fConnect;
288 DWORD dwTime;
289 HANDLE hTask;
290 HSZ hszSvc;
291 HSZ hszTopic;
292 HCONV hConvClient;
293 HCONV hConvServer;
295 alias MONCONVSTRUCT* PMONCONVSTRUCT;
297 struct MONCBSTRUCT {
298 UINT cb = MONCBSTRUCT.sizeof;
299 DWORD dwTime;
300 HANDLE hTask;
301 DWORD dwRet;
302 UINT wType;
303 UINT wFmt;
304 HCONV hConv;
305 HSZ hsz1;
306 HSZ hsz2;
307 HDDEDATA hData;
308 ULONG_PTR dwData1;
309 ULONG_PTR dwData2;
310 CONVCONTEXT cc;
311 DWORD cbData;
312 DWORD[8] Data;
314 alias MONCBSTRUCT* PMONCBSTRUCT;
316 struct MONERRSTRUCT {
317 UINT cb = MONERRSTRUCT.sizeof;
318 UINT wLastError;
319 DWORD dwTime;
320 HANDLE hTask;
322 alias MONERRSTRUCT* PMONERRSTRUCT;
324 struct MONMSGSTRUCT {
325 UINT cb = MONMSGSTRUCT.sizeof;
326 HWND hwndTo;
327 DWORD dwTime;
328 HANDLE hTask;
329 UINT wMsg;
330 WPARAM wParam;
331 LPARAM lParam;
332 DDEML_MSG_HOOK_DATA dmhd;
334 alias MONMSGSTRUCT* PMONMSGSTRUCT;
336 extern (Windows) {
337 BOOL DdeAbandonTransaction(DWORD, HCONV, DWORD);
338 PBYTE DdeAccessData(HDDEDATA, PDWORD);
339 HDDEDATA DdeAddData(HDDEDATA, PBYTE, DWORD, DWORD);
340 HDDEDATA DdeClientTransaction(PBYTE, DWORD, HCONV, HSZ, UINT, UINT,
341 DWORD, PDWORD);
342 int DdeCmpStringHandles(HSZ, HSZ);
343 HCONV DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT);
344 HCONVLIST DdeConnectList(DWORD, HSZ, HSZ, HCONVLIST, PCONVCONTEXT);
345 HDDEDATA DdeCreateDataHandle(DWORD, PBYTE, DWORD, DWORD, HSZ, UINT,
346 UINT);
347 HSZ DdeCreateStringHandleA(DWORD, LPSTR, int);
348 HSZ DdeCreateStringHandleW(DWORD, LPWSTR, int);
349 BOOL DdeDisconnect(HCONV);
350 BOOL DdeDisconnectList(HCONVLIST);
351 BOOL DdeEnableCallback(DWORD, HCONV, UINT);
352 BOOL DdeFreeDataHandle(HDDEDATA);
353 BOOL DdeFreeStringHandle(DWORD, HSZ);
354 DWORD DdeGetData(HDDEDATA, PBYTE, DWORD, DWORD);
355 UINT DdeGetLastError(DWORD);
356 BOOL DdeImpersonateClient(HCONV);
357 UINT DdeInitializeA(PDWORD, PFNCALLBACK, DWORD, DWORD);
358 UINT DdeInitializeW(PDWORD, PFNCALLBACK, DWORD, DWORD);
359 BOOL DdeKeepStringHandle(DWORD, HSZ);
360 HDDEDATA DdeNameService(DWORD, HSZ, HSZ, UINT);
361 BOOL DdePostAdvise(DWORD, HSZ, HSZ);
362 UINT DdeQueryConvInfo(HCONV, DWORD, PCONVINFO);
363 HCONV DdeQueryNextServer(HCONVLIST, HCONV);
364 DWORD DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, int);
365 DWORD DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, int);
366 HCONV DdeReconnect(HCONV);
367 BOOL DdeSetUserHandle(HCONV, DWORD, DWORD_PTR);
368 BOOL DdeUnaccessData(HDDEDATA);
369 BOOL DdeUninitialize(DWORD);
372 const TCHAR[]
373 SZDDESYS_TOPIC = "System",
374 SZDDESYS_ITEM_TOPICS = "Topics",
375 SZDDESYS_ITEM_SYSITEMS = "SysItems",
376 SZDDESYS_ITEM_RTNMSG = "ReturnMessage",
377 SZDDESYS_ITEM_STATUS = "Status",
378 SZDDESYS_ITEM_FORMATS = "Formats",
379 SZDDESYS_ITEM_HELP = "Help",
380 SZDDE_ITEM_ITEMLIST = "TopicItemList";
382 version (Unicode) {
383 alias DdeCreateStringHandleW DdeCreateStringHandle;
384 alias DdeInitializeW DdeInitialize;
385 alias DdeQueryStringW DdeQueryString;
386 } else {
387 alias DdeCreateStringHandleA DdeCreateStringHandle;
388 alias DdeInitializeA DdeInitialize;
389 alias DdeQueryStringA DdeQueryString;