Release 980503
[wine] / misc / ddeml.c
1 /*
2  * DDEML library
3  *
4  * Copyright 1997 Alexandre Julliard
5  * Copyright 1997 Len White
6  */
7
8 /* Only empty stubs for now */
9
10 #include <stdio.h>
11 #include "ddeml.h"
12 #include "debug.h"
13
14 /* FIXME: What are these values? */
15 #define DMLERR_NO_ERROR         0
16
17 static LONG     DDE_current_handle;
18
19
20 /******************************************************************************
21  *            DdeInitialize16   (DDEML.2)
22  */
23 UINT16 WINAPI DdeInitialize16( LPDWORD pidInst, PFNCALLBACK16 pfnCallback,
24                                DWORD afCmd, DWORD ulRes)
25 {
26     return (UINT16)DdeInitialize32A(pidInst,(PFNCALLBACK32)pfnCallback,
27                                     afCmd, ulRes);
28 }
29
30
31 /******************************************************************************
32  *            DdeInitialize32A   (USER32.106)
33  */
34 UINT32 WINAPI DdeInitialize32A( LPDWORD pidInst, PFNCALLBACK32 pfnCallback,
35                                 DWORD afCmd, DWORD ulRes )
36 {
37     return DdeInitialize32W(pidInst,pfnCallback,afCmd,ulRes);
38 }
39
40
41 /******************************************************************************
42  * DdeInitialize32W [USER32.107]
43  * Registers an application with the DDEML
44  *
45  * PARAMS
46  *    pidInst     [I] Pointer to instance identifier
47  *    pfnCallback [I] Pointer to callback function
48  *    afCmd       [I] Set of command and filter flags
49  *    ulRes       [I] Reserved
50  *
51  * RETURNS
52  *    Success: DMLERR_NO_ERROR
53  *    Failure: DMLERR_DLL_USAGE, DMLERR_INVALIDPARAMETER, DMLERR_SYS_ERROR
54  */
55 UINT32 WINAPI DdeInitialize32W( LPDWORD pidInst, PFNCALLBACK32 pfnCallback,
56                                 DWORD afCmd, DWORD ulRes )
57 {
58     FIXME(ddeml, "(%p,%p,%ld,%ld): stub\n",pidInst,pfnCallback,afCmd,ulRes);
59     return DMLERR_NO_ERROR;
60 }
61
62
63 /*****************************************************************
64  *            DdeUninitialize16   (DDEML.3)
65  */
66 BOOL16 WINAPI DdeUninitialize16( DWORD idInst )
67 {
68     return (BOOL16)DdeUninitialize32( idInst );
69 }
70
71
72 /*****************************************************************
73  * DdeUninitialize32 [USER32.119]  Frees DDEML resources
74  *
75  * PARAMS
76  *    idInst [I] Instance identifier
77  *
78  * RETURNS
79  *    Success: TRUE
80  *    Failure: FALSE
81  */
82 BOOL32 WINAPI DdeUninitialize32( DWORD idInst )
83 {
84     FIXME(ddeml, "(%ld): stub\n", idInst);
85     return TRUE;
86 }
87
88
89 /*****************************************************************
90  * DdeConnectList16 [DDEML.4]
91  */
92 HCONVLIST WINAPI DdeConnectList16( DWORD idInst, HSZ hszService, HSZ hszTopic,
93                  HCONVLIST hConvList, LPCONVCONTEXT16 pCC )
94 {
95     return DdeConnectList32(idInst, hszService, hszTopic, hConvList, 
96                             (LPCONVCONTEXT32)pCC);
97 }
98
99
100 /******************************************************************************
101  * DdeConnectList32 [USER32.93]  Establishes conversation with DDE servers
102  *
103  * PARAMS
104  *    idInst     [I] Instance identifier
105  *    hszService [I] Handle to service name string
106  *    hszTopic   [I] Handle to topic name string
107  *    hConvList  [I] Handle to conversation list
108  *    pCC        [I] Pointer to structure with context data
109  *
110  * RETURNS
111  *    Success: Handle to new conversation list
112  *    Failure: 0
113  */
114 HCONVLIST WINAPI DdeConnectList32( DWORD idInst, HSZ hszService, HSZ hszTopic,
115                  HCONVLIST hConvList, LPCONVCONTEXT32 pCC )
116 {
117     FIXME(ddeml, "(%ld,%ld,%ld,%ld,%p): stub\n", idInst, hszService, hszTopic,
118           hConvList,pCC);
119     return 1;
120 }
121
122
123 /*****************************************************************
124  *            DdeQueryNextServer (DDEML.5)
125  */
126 HCONV WINAPI DdeQueryNextServer( HCONVLIST hConvList, HCONV hConvPrev )
127 {
128     FIXME( ddeml, "empty stub\n" );
129     return 0;
130 }
131
132 /*****************************************************************
133  *            DdeDisconnectList (DDEML.6)
134  */
135 BOOL16 WINAPI DdeDisconnectList16( HCONVLIST hConvList )
136 {
137     return (BOOL16)DdeDisconnectList32(hConvList);
138 }
139
140
141 /******************************************************************************
142  * DdeDisconnectList32 [USER32.98]  Destroys list and terminates conversations
143  *
144  * RETURNS
145  *    Success: TRUE
146  *    Failure: FALSE
147  */
148 BOOL32 WINAPI DdeDisconnectList32(
149     HCONVLIST hConvList) /* [in] Handle to conversation list */
150 {
151     FIXME(ddeml, "(%ld): stub\n", hConvList);
152     return TRUE;
153 }
154
155
156 /*****************************************************************
157  *            DdeConnect16   (DDEML.7)
158  */
159 HCONV WINAPI DdeConnect16( DWORD idInst, HSZ hszService, HSZ hszTopic,
160                            LPCONVCONTEXT16 pCC )
161 {
162     FIXME( ddeml, "empty stub\n" );
163     return 0;
164 }
165
166
167 /*****************************************************************
168  *            DdeConnect32   (USER32.92)
169  */
170 HCONV WINAPI DdeConnect32( DWORD idInst, HSZ hszService, HSZ hszTopic,
171                            LPCONVCONTEXT32 pCC )
172 {
173     FIXME( ddeml, "(...): stub\n");
174     return 0;
175 }
176
177
178 /*****************************************************************
179  *            DdeDisconnect16   (DDEML.8)
180  */
181 BOOL16 WINAPI DdeDisconnect16( HCONV hConv )
182 {
183     return (BOOL16)DdeDisconnect32( hConv );
184 }
185
186 /*****************************************************************
187  *            DdeSetUserHandle (DDEML.10)
188  */
189 BOOL16 WINAPI DdeSetUserHandle( HCONV hConv, DWORD id, DWORD hUser )
190 {
191     FIXME( ddeml, "empty stub\n" );
192     return 0;
193 }
194
195 /*****************************************************************
196  *            DdeCreateDataHandle (DDEML.14)
197  */
198 HDDEDATA WINAPI DdeCreateDataHandle( DWORD idInst, LPBYTE pSrc, DWORD cb, DWORD cbOff, HSZ hszItem, UINT16 wFmt, UINT16 afCmd )
199 {
200     FIXME( ddeml, "empty stub\n" );
201     return 0;
202 }
203
204 /*****************************************************************
205  *            DdeDisconnect32   (USER32.97)
206  */
207 BOOL32 WINAPI DdeDisconnect32( HCONV hConv )
208 {
209     FIXME( ddeml, "empty stub\n" );
210     return 0;
211 }
212
213
214 /*****************************************************************
215  *            DdeReconnect   (DDEML.37) (USER32.115)
216  */
217 HCONV WINAPI DdeReconnect( HCONV hConv )
218 {
219     FIXME( ddeml, "empty stub\n" );
220     return 0;
221 }
222
223
224 /*****************************************************************
225  *            DdeCreateStringHandle16   (DDEML.21)
226  */
227 HSZ WINAPI DdeCreateStringHandle16( DWORD idInst, LPCSTR str, INT16 codepage )
228 {
229     return DdeCreateStringHandle32A( idInst, str, codepage );
230 }
231
232
233 /*****************************************************************
234  * DdeCreateStringHandle32A [USER32.95]
235  */
236 HSZ WINAPI DdeCreateStringHandle32A( DWORD idInst, LPCSTR psz, INT32 codepage )
237 {
238     FIXME(ddeml, "(...): stub\n" );
239     DDE_current_handle++;
240     return DDE_current_handle;
241 }
242
243
244 /******************************************************************************
245  * DdeCreateStringHandle32W [USER32.96]  Creates handle to identify string
246  *
247  * RETURNS
248  *    Success: String handle
249  *    Failure: 0
250  */
251 HSZ WINAPI DdeCreateStringHandle32W(
252     DWORD idInst,   /* [in] Instance identifier */
253     LPCWSTR psz,    /* [in] Pointer to string */
254     INT32 codepage) /* [in] Code page identifier */
255 {
256     FIXME(ddeml, "(%ld,%s,%d): stub\n",idInst,debugstr_w(psz),codepage);
257     DDE_current_handle++;
258     return DDE_current_handle;
259 }
260
261
262 /*****************************************************************
263  *            DdeFreeStringHandle16   (DDEML.22)
264  */
265 BOOL16 WINAPI DdeFreeStringHandle16( DWORD idInst, HSZ hsz )
266 {
267     return (BOOL32)DdeFreeStringHandle32( idInst, hsz );
268 }
269
270
271 /*****************************************************************
272  *            DdeFreeStringHandle32   (USER32.101)
273  */
274 BOOL32 WINAPI DdeFreeStringHandle32( DWORD idInst, HSZ hsz )
275 {
276     FIXME( ddeml, "empty stub\n" );
277     return TRUE;
278 }
279
280
281 /*****************************************************************
282  *            DdeFreeDataHandle16   (DDEML.19)
283  */
284 BOOL16 WINAPI DdeFreeDataHandle16( HDDEDATA hData )
285 {
286     return (BOOL32)DdeFreeDataHandle32( hData );
287 }
288
289
290 /*****************************************************************
291  *            DdeFreeDataHandle32   (USER32.100)
292  */
293 BOOL32 WINAPI DdeFreeDataHandle32( HDDEDATA hData )
294 {
295     FIXME( ddeml, "empty stub\n" );
296     return TRUE;
297 }
298
299
300 /*****************************************************************
301  *            DdeKeepStringHandle16   (DDEML.24)
302  */
303 BOOL16 WINAPI DdeKeepStringHandle16( DWORD idInst, HSZ hsz )
304 {
305     return (BOOL32)DdeKeepStringHandle32( idInst, hsz );
306 }
307
308
309 /*****************************************************************
310  *            DdeKeepStringHandle32  (USER32.108)
311  */
312 BOOL32 WINAPI DdeKeepStringHandle32( DWORD idInst, HSZ hsz )
313 {
314     FIXME( ddeml, "empty stub\n" );
315     return TRUE;
316 }
317
318
319 /*****************************************************************
320  *            DdeClientTransaction16  (DDEML.11)
321  */
322 HDDEDATA WINAPI DdeClientTransaction16( LPVOID pData, DWORD cbData,
323                                         HCONV hConv, HSZ hszItem, UINT16 wFmt,
324                                         UINT16 wType, DWORD dwTimeout,
325                                         LPDWORD pdwResult )
326 {
327     return DdeClientTransaction32( (LPBYTE)pData, cbData, hConv, hszItem,
328                                    wFmt, wType, dwTimeout, pdwResult );
329 }
330
331
332 /*****************************************************************
333  *            DdeClientTransaction32  (USER32.90)
334  */
335 HDDEDATA WINAPI DdeClientTransaction32( LPBYTE pData, DWORD cbData,
336                                         HCONV hConv, HSZ hszItem, UINT32 wFmt,
337                                         UINT32 wType, DWORD dwTimeout,
338                                         LPDWORD pdwResult )
339 {
340     FIXME( ddeml, "empty stub\n" );
341     return 0;
342 }
343
344 /*****************************************************************
345  *            DdeAbandonTransaction (DDEML.12)
346  */
347 BOOL16 WINAPI DdeAbandonTransaction( DWORD idInst, HCONV hConv, 
348                                      DWORD idTransaction )
349 {
350     FIXME( ddeml, "empty stub\n" );
351     return 0;
352 }
353
354
355 /*****************************************************************
356  * DdePostAdvise16 [DDEML.13]
357  */
358 BOOL16 WINAPI DdePostAdvise16( DWORD idInst, HSZ hszTopic, HSZ hszItem )
359 {
360     return (BOOL16)DdePostAdvise32(idInst, hszTopic, hszItem);
361 }
362
363
364 /******************************************************************************
365  * DdePostAdvise32 [USER32.110]  Send transaction to DDE callback function.
366  *
367  * RETURNS
368  *    Success: TRUE
369  *    Failure: FALSE
370  */
371 BOOL32 WINAPI DdePostAdvise32(
372     DWORD idInst, /* [in] Instance identifier */
373     HSZ hszTopic, /* [in] Handle to topic name string */
374     HSZ hszItem)  /* [in] Handle to item name string */
375 {
376     FIXME(ddeml, "(%ld,%ld,%ld): stub\n",idInst,hszTopic,hszItem);
377     return TRUE;
378 }
379
380
381 /*****************************************************************
382  *            DdeAddData (DDEML.15)
383  */
384 HDDEDATA WINAPI DdeAddData( HDDEDATA hData, LPBYTE pSrc, DWORD cb,
385                             DWORD cbOff )
386 {
387     FIXME( ddeml, "empty stub\n" );
388     return 0;
389 }
390
391
392 /******************************************************************************
393  * DdeGetData32 [USER32.102]  Copies data from DDE object ot local buffer
394  *
395  * RETURNS
396  *    Size of memory object associated with handle
397  */
398 DWORD WINAPI DdeGetData32(
399     HDDEDATA hData, /* [in] Handle to DDE object */
400     LPBYTE pDst,    /* [in] Pointer to destination buffer */
401     DWORD cbMax,    /* [in] Amount of data to copy */
402     DWORD cbOff)    /* [in] Offset to beginning of data */
403 {
404     FIXME(ddeml, "(%ld,%p,%ld,%ld): stub\n",hData,pDst,cbMax,cbOff);
405     return cbMax;
406 }
407
408
409 /*****************************************************************
410  * DdeGetData16 [DDEML.16]
411  */
412 DWORD WINAPI DdeGetData16(
413     HDDEDATA hData,
414     LPBYTE pDst,
415     DWORD cbMax, 
416     DWORD cbOff)
417 {
418     return DdeGetData32(hData, pDst, cbMax, cbOff);
419 }
420
421
422 /*****************************************************************
423  *            DdeAccessData (DDEML.17)
424  */
425 LPBYTE WINAPI DdeAccessData( HDDEDATA hData, LPDWORD pcbDataSize )
426 {
427      FIXME( ddeml, "empty stub\n" );
428      return 0;
429 }
430
431 /*****************************************************************
432  *            DdeUnaccessData (DDEML.18)
433  */
434 BOOL16 WINAPI DdeUnaccessData( HDDEDATA hData )
435 {
436      FIXME( ddeml, "empty stub\n" );
437      return 0;
438 }
439
440 /*****************************************************************
441  *            DdeEnableCallback (DDEML.26)
442  */
443 BOOL16 WINAPI DdeEnableCallback( DWORD idInst, HCONV hConv, UINT16 wCmd )
444 {
445      FIXME( ddeml, "empty stub\n" );
446      return 0;
447 }
448
449 /*****************************************************************
450  *            DdeNameService16  (DDEML.27)
451  */
452 HDDEDATA WINAPI DdeNameService16( DWORD idInst, HSZ hsz1, HSZ hsz2,
453                                   UINT16 afCmd )
454 {
455     return DdeNameService32( idInst, hsz1, hsz2, afCmd );
456 }
457
458
459 /******************************************************************************
460  * DdeNameService32 [USER32.109]  {Un}registers service name of DDE server
461  *
462  * PARAMS
463  *    idInst [I] Instance identifier
464  *    hsz1   [I] Handle to service name string
465  *    hsz2   [I] Reserved
466  *    afCmd  [I] Service name flags
467  *
468  * RETURNS
469  *    Success: Non-zero
470  *    Failure: 0
471  */
472 HDDEDATA WINAPI DdeNameService32( DWORD idInst, HSZ hsz1, HSZ hsz2,
473                 UINT32 afCmd )
474 {
475     FIXME(ddeml, "(%ld,%ld,%ld,%d): stub\n",idInst,hsz1,hsz2,afCmd);
476     return 1;
477 }
478
479
480 /*****************************************************************
481  *            DdeGetLastError16  (DDEML.20)
482  */
483 UINT16 WINAPI DdeGetLastError16( DWORD idInst )
484 {
485     return (UINT16)DdeGetLastError32( idInst );
486 }
487
488
489 /******************************************************************************
490  * DdeGetLastError32 [USER32.103]  Gets most recent error code
491  *
492  * PARAMS
493  *    idInst [I] Instance identifier
494  *
495  * RETURNS
496  *    Last error code
497  */
498 UINT32 WINAPI DdeGetLastError32( DWORD idInst )
499 {
500     FIXME(ddeml, "(%ld): stub\n",idInst);
501     return 0;
502 }
503
504
505 /*****************************************************************
506  *            DdeCmpStringHandles (DDEML.36)
507  */
508 int WINAPI DdeCmpStringHandles( HSZ hsz1, HSZ hsz2 )
509 {
510      FIXME( ddeml, "empty stub\n" );
511      return 0;
512 }
513
514
515