ddeml.h 12.5 KB
Newer Older
Alexandre Julliard's avatar
Alexandre Julliard committed
1 2 3 4
/*
 * DDEML library definitions
 *
 * Copyright 1997 Alexandre Julliard
Alexandre Julliard's avatar
Alexandre Julliard committed
5
 * Copyright 1997 Len White
6 7 8 9 10 11 12 13 14 15 16 17 18
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
19
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Alexandre Julliard's avatar
Alexandre Julliard committed
20 21
 */

22 23
#ifndef __WINE_DDEML_H
#define __WINE_DDEML_H
Alexandre Julliard's avatar
Alexandre Julliard committed
24

25 26 27 28
#ifdef __cplusplus
extern "C" {
#endif /* defined(__cplusplus) */

29 30 31 32 33 34
#ifdef _USER32_
#define WINUSERAPI
#else
#define WINUSERAPI DECLSPEC_IMPORT
#endif

35 36
/* Codepage Constants
 */
37

38 39 40
#define CP_WINANSI      1004
#define CP_WINUNICODE   1200

41
/* DDE synchronisation constants
42 43
 */

44
#define MSGF_DDEMGR 0x8001
45 46 47 48 49 50 51 52

#define QID_SYNC	0xFFFFFFFF

/*   Type variation for MS  deliberate departures from ANSI standards
 */

#define EXPENTRY CALLBACK

53 54 55 56 57 58 59 60 61
#define SZDDESYS_TOPIC		TEXT("System")
#define SZDDESYS_ITEM_TOPICS	TEXT("Topics")
#define SZDDESYS_ITEM_SYSITEMS	TEXT("SysItems")
#define SZDDESYS_ITEM_RTNMSG	TEXT("ReturnMessage")
#define SZDDESYS_ITEM_STATUS	TEXT("Status")
#define SZDDESYS_ITEM_FORMATS	TEXT("Formats")
#define SZDDESYS_ITEM_HELP	TEXT("Help")
#define SZDDE_ITEM_ITEMLIST	TEXT("TopicItemList")

62 63 64 65 66 67
/***************************************************

      FLAGS Section - copied from Microsoft SDK as must be standard, probably Copyright Microsoft Corporation

***************************************************/

68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
#define     XST_NULL              0
#define     XST_INCOMPLETE        1
#define     XST_CONNECTED         2
#define     XST_INIT1             3
#define     XST_INIT2             4
#define     XST_REQSENT           5
#define     XST_DATARCVD          6
#define     XST_POKESENT          7
#define     XST_POKEACKRCVD       8
#define     XST_EXECSENT          9
#define     XST_EXECACKRCVD      10
#define     XST_ADVSENT          11
#define     XST_UNADVSENT        12
#define     XST_ADVACKRCVD       13
#define     XST_UNADVACKRCVD     14
#define     XST_ADVDATASENT      15
#define     XST_ADVDATAACKRCVD   16

#define     ST_CONNECTED            0x0001
#define     ST_ADVISE               0x0002
#define     ST_ISLOCAL              0x0004
#define     ST_BLOCKED              0x0008
#define     ST_CLIENT               0x0010
#define     ST_TERMINATED           0x0020
#define     ST_INLIST               0x0040
#define     ST_BLOCKNEXT            0x0080
#define     ST_ISSELF               0x0100

96 97 98 99 100 101 102 103 104
/*
 * DdeEnableCallback function codes
 */

#define     EC_ENABLEALL                 0
#define     EC_ENABLEONE                 ST_BLOCKNEXT
#define     EC_DISABLE                   ST_BLOCKED
#define     EC_QUERYWAITING              2

105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
/*
 * Callback filter flags for use with standard apps.
 */

#define     CBF_FAIL_SELFCONNECTIONS     0x00001000
#define     CBF_FAIL_CONNECTIONS         0x00002000
#define     CBF_FAIL_ADVISES             0x00004000
#define     CBF_FAIL_EXECUTES            0x00008000
#define     CBF_FAIL_POKES               0x00010000
#define     CBF_FAIL_REQUESTS            0x00020000
#define     CBF_FAIL_ALLSVRXACTIONS      0x0003f000

#define     CBF_SKIP_CONNECT_CONFIRMS    0x00040000
#define     CBF_SKIP_REGISTRATIONS       0x00080000
#define     CBF_SKIP_UNREGISTRATIONS     0x00100000
#define     CBF_SKIP_DISCONNECTS         0x00200000
#define     CBF_SKIP_ALLNOTIFICATIONS    0x003c0000

123
#define     CBR_BLOCK                    ((HDDEDATA)-1)
124

125 126 127
/*
 * Application command flags
 */
128 129 130
#define     APPCMD_CLIENTONLY            __MSABI_LONG(0x00000010)
#define     APPCMD_FILTERINITS           __MSABI_LONG(0x00000020)
#define     APPCMD_MASK                  __MSABI_LONG(0x00000FF0)
131 132 133 134 135

/*
 * Application classification flags
 */

136 137 138
#define     APPCLASS_STANDARD            __MSABI_LONG(0x00000000)
#define     APPCLASS_MONITOR             __MSABI_LONG(0x00000001)
#define     APPCLASS_MASK                __MSABI_LONG(0x0000000F)
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169

/*
 * Callback filter flags for use with MONITOR apps - 0 implies no monitor
 * callbacks.
 */
#define     MF_HSZ_INFO                  0x01000000
#define     MF_SENDMSGS                  0x02000000
#define     MF_POSTMSGS                  0x04000000
#define     MF_CALLBACKS                 0x08000000
#define     MF_ERRORS                    0x10000000
#define     MF_LINKS                     0x20000000
#define     MF_CONV                      0x40000000

#define     MF_MASK                      0xFF000000

/*
 *	DdeNameService service name flags
 */

#define     DNS_REGISTER		 0x0001
#define     DNS_UNREGISTER		 0x0002
#define     DNS_FILTERON		 0x0004
#define     DNS_FILTEROFF         	 0x0008


/****************************************************

      End of Flags section

****************************************************/

170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
/****************************************************

	Message Types Section

****************************************************/

#define XTYPF_NOBLOCK		0x0002		/* CBR_NOBLOCK will not work */
#define XTYPF_NODATA		0x0004		/* DDE_FDEFERUPD  */
#define XTYPF_ACKREQ		0x0008		/* DDE_FACKREQ */

#define XCLASS_MASK		0xFC00
#define XCLASS_BOOL		0x1000
#define XCLASS_DATA		0x2000
#define XCLASS_FLAGS		0x4000
#define	XCLASS_NOTIFICATION	0x8000

186
#define XTYP_ERROR		(0x0000 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
187
#define XTYP_ADVDATA		(0x0010 | XCLASS_FLAGS)
188 189 190 191 192 193
#define XTYP_ADVREQ		(0x0020 | XCLASS_DATA | XTYPF_NOBLOCK)
#define XTYP_ADVSTART		(0x0030 | XCLASS_BOOL)
#define XTYP_ADVSTOP		(0x0040 | XCLASS_NOTIFICATION)
#define XTYP_EXECUTE		(0x0050 | XCLASS_FLAGS)
#define XTYP_CONNECT		(0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK)
#define XTYP_CONNECT_CONFIRM	(0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
194
#define XTYP_XACT_COMPLETE	(0x0080 | XCLASS_NOTIFICATION )
195
#define XTYP_POKE		(0x0090 | XCLASS_FLAGS)
196 197 198 199
#define XTYP_REGISTER		(0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK )
#define XTYP_REQUEST		(0x00B0 | XCLASS_DATA )
#define XTYP_DISCONNECT		(0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK )
#define XTYP_UNREGISTER		(0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK )
200
#define XTYP_WILDCONNECT	(0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK)
201
#define XTYP_MONITOR		(0x00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
202 203 204

#define XTYP_MASK		0x00F0
#define XTYP_SHIFT		4
205

206 207
#define TIMEOUT_ASYNC           0xFFFFFFFF

208 209
#define CADV_LATEACK		0xFFFF

210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
/**************************************************

	End of Message Types Section

****************************************************/

/*****************************************************

	DDE Codes for wStatus field

*****************************************************/

#define DDE_FACK		0x8000
#define DDE_FBUSY		0x4000
#define DDE_FDEFERUPD		0x4000
#define DDE_FACKREQ		0x8000
#define DDE_FRELEASE		0x2000
#define DDE_FREQUESTED		0x1000
#define DDE_FAPPSTATUS		0x00FF
#define DDE_FNOTPROCESSED	0x0000

231 232 233 234
#define DDE_FACKRESERVED        (~(DDE_FACK | DDE_FBUSY | DDE_FAPPSTATUS))
#define DDE_FADVRESERVED        (~(DDE_FACKREQ | DDE_FDEFERUPD))
#define DDE_FDATRESERVED        (~(DDE_FACKREQ | DDE_FRELEASE | DDE_FREQUESTED))
#define DDE_FPOKRESERVED        (~(DDE_FRELEASE))
235 236 237 238 239 240 241

/*****************************************************

	End of wStatus codes

*****************************************************/

242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272
/****************************************************

      Return Codes section again copied from SDK as must be same

*****************************************************/

#define     DMLERR_NO_ERROR                    0       /* must be 0 */

#define     DMLERR_FIRST                       0x4000

#define     DMLERR_ADVACKTIMEOUT               0x4000
#define     DMLERR_BUSY                        0x4001
#define     DMLERR_DATAACKTIMEOUT              0x4002
#define     DMLERR_DLL_NOT_INITIALIZED         0x4003
#define     DMLERR_DLL_USAGE                   0x4004
#define     DMLERR_EXECACKTIMEOUT              0x4005
#define     DMLERR_INVALIDPARAMETER            0x4006
#define     DMLERR_LOW_MEMORY                  0x4007
#define     DMLERR_MEMORY_ERROR                0x4008
#define     DMLERR_NOTPROCESSED                0x4009
#define     DMLERR_NO_CONV_ESTABLISHED         0x400a
#define     DMLERR_POKEACKTIMEOUT              0x400b
#define     DMLERR_POSTMSG_FAILED              0x400c
#define     DMLERR_REENTRANCY                  0x400d
#define     DMLERR_SERVER_DIED                 0x400e
#define     DMLERR_SYS_ERROR                   0x400f
#define     DMLERR_UNADVACKTIMEOUT             0x4010
#define     DMLERR_UNFOUND_QUEUE_ID            0x4011

#define     DMLERR_LAST                        0x4011

273 274
#define     HDATA_APPOWNED          	       0x0001

275 276 277 278 279 280 281
/*****************************************************

      End of Return Codes and Microsoft section

******************************************************/


282

283 284 285 286
DECLARE_HANDLE(HCONVLIST);
DECLARE_HANDLE(HCONV);
DECLARE_HANDLE(HSZ);
DECLARE_HANDLE(HDDEDATA);
Alexandre Julliard's avatar
Alexandre Julliard committed
287

288

289

290 291 292 293 294 295
/*******************************************************

	API Entry Points

*******************************************************/

296
typedef HDDEDATA (CALLBACK *PFNCALLBACK)(UINT, UINT, HCONV, HSZ, HSZ,
297
					 HDDEDATA, ULONG_PTR, ULONG_PTR);
Alexandre Julliard's avatar
Alexandre Julliard committed
298

299 300 301 302 303 304
/***************************************************

	Externally visible data structures

***************************************************/

305 306 307 308
typedef struct tagHSZPAIR
{
    HSZ hszSvc;
    HSZ hszTopic;
309
} HSZPAIR, *PHSZPAIR;
310 311

typedef struct tagCONVCONTEXT
Alexandre Julliard's avatar
Alexandre Julliard committed
312
{
313 314 315 316
    UINT  cb;
    UINT  wFlags;
    UINT  wCountryID;
    INT   iCodePage;
317 318 319
    DWORD dwLangID;
    DWORD dwSecurity;
    SECURITY_QUALITY_OF_SERVICE qos;
320
} CONVCONTEXT, *PCONVCONTEXT;
Alexandre Julliard's avatar
Alexandre Julliard committed
321

322
typedef struct tagCONVINFO
323 324
{
    DWORD		cb;
325
    DWORD_PTR 		hUser;
326 327 328 329 330 331 332 333 334 335 336 337 338 339
    HCONV		hConvPartner;
    HSZ			hszSvcPartner;
    HSZ			hszServiceReq;
    HSZ			hszTopic;
    HSZ			hszItem;
    UINT		wFmt;
    UINT		wType;
    UINT		wStatus;
    UINT		wConvst;
    UINT		wLastError;
    HCONVLIST		hConvList;
    CONVCONTEXT		ConvCtxt;
    HWND		hwnd;
    HWND		hwndPartner;
340
} CONVINFO, *PCONVINFO;
341

342
/*            Interface Definitions		*/
343

344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377
WINUSERAPI BOOL      WINAPI DdeAbandonTransaction(DWORD idInst, HCONV hConv, DWORD idTransaction);
WINUSERAPI LPBYTE    WINAPI DdeAccessData(HDDEDATA,LPDWORD);
WINUSERAPI HDDEDATA  WINAPI DdeAddData(HDDEDATA,LPBYTE,DWORD,DWORD);
WINUSERAPI HDDEDATA  WINAPI DdeClientTransaction(LPBYTE,DWORD,HCONV,HSZ,UINT,UINT,DWORD,LPDWORD);
WINUSERAPI INT       WINAPI DdeCmpStringHandles(HSZ,HSZ);
WINUSERAPI HCONV     WINAPI DdeConnect(DWORD,HSZ,HSZ,PCONVCONTEXT);
WINUSERAPI HCONVLIST WINAPI DdeConnectList(DWORD,HSZ,HSZ,HCONVLIST,PCONVCONTEXT);
WINUSERAPI HDDEDATA  WINAPI DdeCreateDataHandle(DWORD,LPBYTE,DWORD,DWORD,HSZ,UINT,UINT);
WINUSERAPI HSZ       WINAPI DdeCreateStringHandleA(DWORD,LPCSTR,INT);
WINUSERAPI HSZ       WINAPI DdeCreateStringHandleW(DWORD,LPCWSTR,INT);
#define                     DdeCreateStringHandle WINELIB_NAME_AW(DdeCreateStringHandle)
WINUSERAPI BOOL      WINAPI DdeDisconnect(HCONV);
WINUSERAPI BOOL      WINAPI DdeDisconnectList(HCONVLIST);
WINUSERAPI BOOL      WINAPI DdeEnableCallback(DWORD,HCONV,UINT);
WINUSERAPI BOOL      WINAPI DdeFreeDataHandle(HDDEDATA);
WINUSERAPI BOOL      WINAPI DdeFreeStringHandle(DWORD,HSZ);
WINUSERAPI DWORD     WINAPI DdeGetData(HDDEDATA,LPBYTE,DWORD,DWORD);
WINUSERAPI UINT      WINAPI DdeGetLastError(DWORD);
WINUSERAPI BOOL      WINAPI DdeImpersonateClient(HCONV);
WINUSERAPI UINT      WINAPI DdeInitializeA(LPDWORD,PFNCALLBACK,DWORD,DWORD);
WINUSERAPI UINT      WINAPI DdeInitializeW(LPDWORD,PFNCALLBACK,DWORD,DWORD);
#define                     DdeInitialize WINELIB_NAME_AW(DdeInitialize)
WINUSERAPI BOOL      WINAPI DdeKeepStringHandle(DWORD,HSZ);
WINUSERAPI HDDEDATA  WINAPI DdeNameService(DWORD,HSZ,HSZ,UINT);
WINUSERAPI BOOL      WINAPI DdePostAdvise(DWORD,HSZ,HSZ);
WINUSERAPI UINT      WINAPI DdeQueryConvInfo(HCONV,DWORD,PCONVINFO);
WINUSERAPI HCONV     WINAPI DdeQueryNextServer(HCONVLIST, HCONV);
WINUSERAPI DWORD     WINAPI DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, INT);
WINUSERAPI DWORD     WINAPI DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, INT);
#define                     DdeQueryString WINELIB_NAME_AW(DdeQueryString)
WINUSERAPI HCONV     WINAPI DdeReconnect(HCONV);
WINUSERAPI BOOL      WINAPI DdeSetUserHandle(HCONV,DWORD,DWORD);
WINUSERAPI BOOL      WINAPI DdeUnaccessData(HDDEDATA);
WINUSERAPI BOOL      WINAPI DdeUninitialize(DWORD);
Alexandre Julliard's avatar
Alexandre Julliard committed
378

379 380 381 382
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */

383
#endif  /* __WINE_DDEML_H */