Moved HDROP to shellapi.h.
[wine] / include / ddeml.h
1 /*
2  * DDEML library definitions
3  *
4  * Copyright 1997 Alexandre Julliard
5  * Copyright 1997 Len White
6  */
7
8 #ifndef __WINE_DDEML_H
9 #define __WINE_DDEML_H
10
11 #include "windef.h"
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif /* defined(__cplusplus) */
16
17 /* Codepage Constants
18  */
19
20 #define CP_WINANSI      1004
21 #define CP_WINUNICODE   1200
22
23 /* DDE synchronisation constants 
24  */
25
26 #define MSGF_DDEMGR 0x8001
27
28 #define QID_SYNC        0xFFFFFFFF
29
30 /*   Type variation for MS  deliberate departures from ANSI standards
31  */
32
33 #define EXPENTRY CALLBACK
34
35 /***************************************************
36
37       FLAGS Section - copied from Microsoft SDK as must be standard, probably Copyright Microsoft Corporation
38
39 ***************************************************/
40
41 /*
42  * Callback filter flags for use with standard apps.
43  */
44
45 #define     CBF_FAIL_SELFCONNECTIONS     0x00001000
46 #define     CBF_FAIL_CONNECTIONS         0x00002000
47 #define     CBF_FAIL_ADVISES             0x00004000
48 #define     CBF_FAIL_EXECUTES            0x00008000
49 #define     CBF_FAIL_POKES               0x00010000
50 #define     CBF_FAIL_REQUESTS            0x00020000
51 #define     CBF_FAIL_ALLSVRXACTIONS      0x0003f000
52
53 #define     CBF_SKIP_CONNECT_CONFIRMS    0x00040000
54 #define     CBF_SKIP_REGISTRATIONS       0x00080000
55 #define     CBF_SKIP_UNREGISTRATIONS     0x00100000
56 #define     CBF_SKIP_DISCONNECTS         0x00200000
57 #define     CBF_SKIP_ALLNOTIFICATIONS    0x003c0000
58
59 #define     CBR_BLOCK                    0xFFFFFFFFL
60
61 /*
62  * Application command flags
63  */
64 #define     APPCMD_CLIENTONLY            0x00000010L
65 #define     APPCMD_FILTERINITS           0x00000020L
66 #define     APPCMD_MASK                  0x00000FF0L
67
68 /*
69  * Application classification flags
70  */
71
72 #define     APPCLASS_STANDARD            0x00000000L
73 #define     APPCLASS_MONITOR             0x00000001L
74 #define     APPCLASS_MASK                0x0000000FL
75
76 /*
77  * Callback filter flags for use with MONITOR apps - 0 implies no monitor
78  * callbacks.
79  */
80 #define     MF_HSZ_INFO                  0x01000000
81 #define     MF_SENDMSGS                  0x02000000
82 #define     MF_POSTMSGS                  0x04000000
83 #define     MF_CALLBACKS                 0x08000000
84 #define     MF_ERRORS                    0x10000000
85 #define     MF_LINKS                     0x20000000
86 #define     MF_CONV                      0x40000000
87
88 #define     MF_MASK                      0xFF000000
89
90 /*
91  *      DdeNameService service name flags
92  */
93
94 #define     DNS_REGISTER                 0x0001
95 #define     DNS_UNREGISTER               0x0002
96 #define     DNS_FILTERON                 0x0004
97 #define     DNS_FILTEROFF                0x0008
98
99
100 /****************************************************
101
102       End of Flags section
103
104 ****************************************************/
105
106 /****************************************************
107
108         Message Types Section
109
110 ****************************************************/
111
112 #define XTYPF_NOBLOCK           0x0002          /* CBR_NOBLOCK will not work */
113 #define XTYPF_NODATA            0x0004          /* DDE_FDEFERUPD  */
114 #define XTYPF_ACKREQ            0x0008          /* DDE_FACKREQ */
115
116 #define XCLASS_MASK             0xFC00
117 #define XCLASS_BOOL             0x1000
118 #define XCLASS_DATA             0x2000
119 #define XCLASS_FLAGS            0x4000
120 #define XCLASS_NOTIFICATION     0x8000
121
122 #define XTYP_ERROR              (0x0000 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
123 #define XTYP_ADVDATA            (0x0010 | XCLASS_FLAGS)
124 #define XTYP_ADVREQ             (0x0020 | XCLASS_DATA | XTYPF_NOBLOCK)
125 #define XTYP_ADVSTART           (0x0030 | XCLASS_BOOL)
126 #define XTYP_ADVSTOP            (0x0040 | XCLASS_NOTIFICATION)
127 #define XTYP_EXECUTE            (0x0050 | XCLASS_FLAGS)
128 #define XTYP_CONNECT            (0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK)
129 #define XTYP_CONNECT_CONFIRM    (0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
130 #define XTYP_XACT_COMPLETE      (0x0080 | XCLASS_NOTIFICATION )
131 #define XTYP_POKE               (0x0090 | XCLASS_FLAGS)
132 #define XTYP_REGISTER           (0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK )
133 #define XTYP_REQUEST            (0x00B0 | XCLASS_DATA )
134 #define XTYP_DISCONNECT         (0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK )
135 #define XTYP_UNREGISTER         (0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK )
136 #define XTYP_WILDCONNECT        (0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK)
137
138 #define XTYP_MASK               0x00F0
139 #define XTYP_SHIFT              4
140
141 /**************************************************
142
143         End of Message Types Section
144
145 ****************************************************/
146
147 /*****************************************************
148
149         DDE Codes for wStatus field
150
151 *****************************************************/
152
153 #define DDE_FACK                0x8000
154 #define DDE_FBUSY               0x4000
155 #define DDE_FDEFERUPD           0x4000
156 #define DDE_FACKREQ             0x8000
157 #define DDE_FRELEASE            0x2000
158 #define DDE_FREQUESTED          0x1000
159 #define DDE_FAPPSTATUS          0x00FF
160 #define DDE_FNOTPROCESSED       0x0000
161
162
163 /*****************************************************
164
165         End of wStatus codes
166
167 *****************************************************/
168
169 /****************************************************
170
171       Return Codes section again copied from SDK as must be same
172
173 *****************************************************/
174
175 #define     DMLERR_NO_ERROR                    0       /* must be 0 */
176
177 #define     DMLERR_FIRST                       0x4000
178
179 #define     DMLERR_ADVACKTIMEOUT               0x4000
180 #define     DMLERR_BUSY                        0x4001
181 #define     DMLERR_DATAACKTIMEOUT              0x4002
182 #define     DMLERR_DLL_NOT_INITIALIZED         0x4003
183 #define     DMLERR_DLL_USAGE                   0x4004
184 #define     DMLERR_EXECACKTIMEOUT              0x4005
185 #define     DMLERR_INVALIDPARAMETER            0x4006
186 #define     DMLERR_LOW_MEMORY                  0x4007
187 #define     DMLERR_MEMORY_ERROR                0x4008
188 #define     DMLERR_NOTPROCESSED                0x4009
189 #define     DMLERR_NO_CONV_ESTABLISHED         0x400a
190 #define     DMLERR_POKEACKTIMEOUT              0x400b
191 #define     DMLERR_POSTMSG_FAILED              0x400c
192 #define     DMLERR_REENTRANCY                  0x400d
193 #define     DMLERR_SERVER_DIED                 0x400e
194 #define     DMLERR_SYS_ERROR                   0x400f
195 #define     DMLERR_UNADVACKTIMEOUT             0x4010
196 #define     DMLERR_UNFOUND_QUEUE_ID            0x4011
197
198 #define     DMLERR_LAST                        0x4011
199
200 /*****************************************************
201
202       End of Return Codes and Microsoft section
203
204 ******************************************************/
205
206
207
208 DECLARE_OLD_HANDLE(HCONVLIST);
209 DECLARE_OLD_HANDLE(HCONV);
210 DECLARE_OLD_HANDLE(HSZ);
211 DECLARE_OLD_HANDLE(HDDEDATA);
212
213
214
215 /*******************************************************
216
217         API Entry Points
218
219 *******************************************************/
220
221 typedef HDDEDATA CALLBACK (*PFNCALLBACK)(UINT,UINT,HCONV,HSZ,HSZ,
222                                            HDDEDATA,DWORD,DWORD);
223
224 /***************************************************
225
226         Externally visible data structures
227
228 ***************************************************/
229
230 typedef struct
231 {
232     UINT  cb;
233     UINT  wFlags;
234     UINT  wCountryID;
235     INT   iCodePage;
236     DWORD   dwLangID;
237     DWORD   dwSecurity;
238 } CONVCONTEXT, *LPCONVCONTEXT;
239
240 typedef struct
241 {
242     DWORD               cb;
243     DWORD               hUser;
244     HCONV               hConvPartner;
245     HSZ                 hszSvcPartner;
246     HSZ                 hszServiceReq;
247     HSZ                 hszTopic;
248     HSZ                 hszItem;
249     UINT                wFmt;
250     UINT                wType;
251     UINT                wStatus;
252     UINT                wConvst;
253     UINT                wLastError;
254     HCONVLIST           hConvList;
255     CONVCONTEXT         ConvCtxt;
256     HWND                hwnd;
257     HWND                hwndPartner;
258 } CONVINFO, *LPCONVINFO;
259
260 /*            Interface Definitions             */
261
262
263 UINT    WINAPI DdeInitializeA(LPDWORD,PFNCALLBACK,DWORD,DWORD);
264 UINT    WINAPI DdeInitializeW(LPDWORD,PFNCALLBACK,DWORD,DWORD);
265 #define   DdeInitialize WINELIB_NAME_AW(DdeInitialize)
266 BOOL    WINAPI DdeUninitialize(DWORD);
267 HCONVLIST WINAPI DdeConnectList(DWORD,HSZ,HSZ,HCONVLIST,LPCONVCONTEXT);
268 HCONV     WINAPI DdeQueryNextServer(HCONVLIST, HCONV);
269 DWORD     WINAPI DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, INT);
270 DWORD     WINAPI DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, INT);
271 #define   DdeQueryString WINELIB_NAME_AW(DdeQueryString)
272 BOOL      WINAPI DdeDisconnectList(HCONVLIST);
273 HCONV     WINAPI DdeConnect(DWORD,HSZ,HSZ,LPCONVCONTEXT);
274 BOOL      WINAPI DdeDisconnect(HCONV);
275 HDDEDATA  WINAPI DdeCreateDataHandle(DWORD,LPBYTE,DWORD,DWORD,HSZ,UINT,UINT);
276 HCONV     WINAPI DdeReconnect(HCONV);
277 HSZ       WINAPI DdeCreateStringHandleA(DWORD,LPCSTR,INT);
278 HSZ       WINAPI DdeCreateStringHandleW(DWORD,LPCWSTR,INT);
279 #define   DdeCreateStringHandle WINELIB_NAME_AW(DdeCreateStringHandle)
280 BOOL      WINAPI DdeFreeStringHandle(DWORD,HSZ);
281 BOOL      WINAPI DdeFreeDataHandle(HDDEDATA);
282 BOOL      WINAPI DdeKeepStringHandle(DWORD,HSZ);
283 HDDEDATA  WINAPI DdeClientTransaction(LPBYTE,DWORD,HCONV,HSZ,UINT,UINT,DWORD,LPDWORD);
284 BOOL      WINAPI DdeImpersonateClient(HCONV);
285 BOOL      WINAPI DdePostAdvise(DWORD,HSZ,HSZ);
286 HDDEDATA  WINAPI DdeAddData(HDDEDATA,LPBYTE,DWORD,DWORD);
287 DWORD     WINAPI DdeGetData(HDDEDATA,LPBYTE,DWORD,DWORD);
288 LPBYTE    WINAPI DdeAccessData(HDDEDATA,LPDWORD);
289 BOOL      WINAPI DdeUnaccessData(HDDEDATA);
290 BOOL      WINAPI DdeEnableCallback(DWORD,HCONV,UINT);
291 INT       WINAPI DdeCmpStringHandles(HSZ,HSZ);
292 BOOL      WINAPI DdeSetUserHandle(HCONV,DWORD,DWORD);
293
294 HDDEDATA  WINAPI DdeNameService(DWORD,HSZ,HSZ,UINT);
295 UINT      WINAPI DdeGetLastError(DWORD);
296 UINT      WINAPI DdeQueryConvInfo(HCONV,DWORD,LPCONVINFO);
297
298 #ifdef __cplusplus
299 } /* extern "C" */
300 #endif /* defined(__cplusplus) */
301
302 #endif  /* __WINE_DDEML_H */