Started implementing date/time common control.
[wine] / include / dplay.h
1 #ifndef __WINE_DPLAY_H
2 #define __WINE_DPLAY_H
3
4 #include "wine/obj_base.h"
5
6 #ifdef __cplusplus
7 extern "C" {
8 #endif /* defined(__cplusplus) */
9
10 #include "pshpack1.h"
11
12 /*****************************************************************************
13  * Predeclare the interfaces
14  */
15 DEFINE_GUID(CLSID_DirectPlay,0xd1eb6d20, 0x8923, 0x11d0, 0x9d, 0x97, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
16
17 DEFINE_GUID(IID_IDirectPlay, 0x5454e9a0, 0xdb65, 0x11ce, 0x92, 0x1c, 0x00, 0xaa, 0x00, 0x6c, 0x49, 0x72);
18 typedef struct IDirectPlay IDirectPlay,*LPDIRECTPLAY;
19
20 DEFINE_GUID(IID_IDirectPlay2, 0x2b74f7c0, 0x9154, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
21 typedef struct IDirectPlay2 IDirectPlay2,*LPDIRECTPLAY2;
22
23 DEFINE_GUID(IID_IDirectPlay2A,0x9d460580, 0xa822, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82);
24 typedef struct IDirectPlay2 IDirectPlay2A,*LPDIRECTPLAY2A;
25
26 DEFINE_GUID(IID_IDirectPlay3, 0x133efe40, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
27 typedef struct IDirectPlay3 IDirectPlay3,*LPDIRECTPLAY3;
28
29 DEFINE_GUID(IID_IDirectPlay3A,0x133efe41, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
30 typedef struct IDirectPlay3 IDirectPlay3A,*LPDIRECTPLAY3A;
31
32 /*
33  * GUIDS used by Service Providers shipped with DirectPlay
34  * Use these to identify Service Provider returned by EnumConnections
35  */
36
37 /* GUID for IPX service provider {685BC400-9D2C-11cf-A9CD-00AA006886E3} */
38 DEFINE_GUID(DPSPGUID_IPX, 0x685bc400, 0x9d2c, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
39
40 /* GUID for TCP/IP service provider 36E95EE0-8577-11cf-960C-0080C7534E82 */
41 DEFINE_GUID(DPSPGUID_TCPIP, 0x36E95EE0, 0x8577, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82);
42
43 /* GUID for Serial service provider {0F1D6860-88D9-11cf-9C4E-00A0C905425E} */
44 DEFINE_GUID(DPSPGUID_SERIAL, 0xf1d6860, 0x88d9, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
45
46 /* GUID for Modem service provider {44EAA760-CB68-11cf-9C4E-00A0C905425E} */
47 DEFINE_GUID(DPSPGUID_MODEM, 0x44eaa760, 0xcb68, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
48
49
50 /*****************************************************************************
51  * Miscellaneous
52  */
53
54 /* Return Values for Direct Play */
55 #define _FACDP  0x877
56 #define MAKE_DPHRESULT( code )    MAKE_HRESULT( 1, _FACDP, code )
57
58 #define DP_OK                           S_OK
59 #define DPERR_ALREADYINITIALIZED        MAKE_DPHRESULT(   5 )
60 #define DPERR_ACCESSDENIED              MAKE_DPHRESULT(  10 )
61 #define DPERR_ACTIVEPLAYERS             MAKE_DPHRESULT(  20 )
62 #define DPERR_BUFFERTOOSMALL            MAKE_DPHRESULT(  30 )
63 #define DPERR_CANTADDPLAYER             MAKE_DPHRESULT(  40 )
64 #define DPERR_CANTCREATEGROUP           MAKE_DPHRESULT(  50 )
65 #define DPERR_CANTCREATEPLAYER          MAKE_DPHRESULT(  60 )
66 #define DPERR_CANTCREATESESSION         MAKE_DPHRESULT(  70 )
67 #define DPERR_CAPSNOTAVAILABLEYET       MAKE_DPHRESULT(  80 )
68 #define DPERR_EXCEPTION                 MAKE_DPHRESULT(  90 )
69 #define DPERR_GENERIC                   E_FAIL
70 #define DPERR_INVALIDFLAGS              MAKE_DPHRESULT( 120 )
71 #define DPERR_INVALIDOBJECT             MAKE_DPHRESULT( 130 )
72 #define DPERR_INVALIDPARAM              E_INVALIDARG
73 #define DPERR_INVALIDPARAMS             DPERR_INVALIDPARAM
74 #define DPERR_INVALIDPLAYER             MAKE_DPHRESULT( 150 )
75 #define DPERR_INVALIDGROUP              MAKE_DPHRESULT( 155 )
76 #define DPERR_NOCAPS                    MAKE_DPHRESULT( 160 )
77 #define DPERR_NOCONNECTION              MAKE_DPHRESULT( 170 )
78 #define DPERR_NOMEMORY                  E_OUTOFMEMORY
79 #define DPERR_OUTOFMEMORY               DPERR_NOMEMORY
80 #define DPERR_NOMESSAGES                MAKE_DPHRESULT( 190 )
81 #define DPERR_NONAMESERVERFOUND         MAKE_DPHRESULT( 200 )
82 #define DPERR_NOPLAYERS                 MAKE_DPHRESULT( 210 )
83 #define DPERR_NOSESSIONS                MAKE_DPHRESULT( 220 )
84 #define DPERR_PENDING                   E_PENDING
85 #define DPERR_SENDTOOBIG                MAKE_DPHRESULT( 230 )
86 #define DPERR_TIMEOUT                   MAKE_DPHRESULT( 240 )
87 #define DPERR_UNAVAILABLE               MAKE_DPHRESULT( 250 )
88 #define DPERR_UNSUPPORTED               E_NOTIMPL
89 #define DPERR_BUSY                      MAKE_DPHRESULT( 270 )
90 #define DPERR_USERCANCEL                MAKE_DPHRESULT( 280 )
91 #define DPERR_NOINTERFACE               E_NOINTERFACE
92 #define DPERR_CANNOTCREATESERVER        MAKE_DPHRESULT( 290 )
93 #define DPERR_PLAYERLOST                MAKE_DPHRESULT( 300 )
94 #define DPERR_SESSIONLOST               MAKE_DPHRESULT( 310 )
95 #define DPERR_UNINITIALIZED             MAKE_DPHRESULT( 320 )
96 #define DPERR_NONEWPLAYERS              MAKE_DPHRESULT( 330 )
97 #define DPERR_INVALIDPASSWORD           MAKE_DPHRESULT( 340 )
98 #define DPERR_CONNECTING                MAKE_DPHRESULT( 350 )
99 #define DPERR_BUFFERTOOLARGE            MAKE_DPHRESULT( 1000 )
100 #define DPERR_CANTCREATEPROCESS         MAKE_DPHRESULT( 1010 )
101 #define DPERR_APPNOTSTARTED             MAKE_DPHRESULT( 1020 )
102 #define DPERR_INVALIDINTERFACE          MAKE_DPHRESULT( 1030 )
103 #define DPERR_NOSERVICEPROVIDER         MAKE_DPHRESULT( 1040 )
104 #define DPERR_UNKNOWNAPPLICATION        MAKE_DPHRESULT( 1050 )
105 #define DPERR_NOTLOBBIED                MAKE_DPHRESULT( 1070 )
106 #define DPERR_SERVICEPROVIDERLOADED     MAKE_DPHRESULT( 1080 )
107 #define DPERR_ALREADYREGISTERED         MAKE_DPHRESULT( 1090 )
108 #define DPERR_NOTREGISTERED             MAKE_DPHRESULT( 1100 )
109 #define DPERR_AUTHENTICATIONFAILED      MAKE_DPHRESULT(  2000 )
110 #define DPERR_CANTLOADSSPI              MAKE_DPHRESULT(  2010 )
111 #define DPERR_ENCRYPTIONFAILED          MAKE_DPHRESULT(  2020 )
112 #define DPERR_SIGNFAILED                MAKE_DPHRESULT(  2030 )
113 #define DPERR_CANTLOADSECURITYPACKAGE   MAKE_DPHRESULT(  2040 )
114 #define DPERR_ENCRYPTIONNOTSUPPORTED    MAKE_DPHRESULT(  2050 )
115 #define DPERR_CANTLOADCAPI              MAKE_DPHRESULT(  2060 )
116 #define DPERR_NOTLOGGEDIN               MAKE_DPHRESULT(  2070 )
117 #define DPERR_LOGONDENIED               MAKE_DPHRESULT(  2080 )
118
119
120 /* DPID - DirectPlay player and group ID */
121 typedef DWORD DPID, *LPDPID;
122
123 /* DPID from whence originate messages - just an ID */
124 #define DPID_SYSMSG             0           /* DPID of system */
125 #define DPID_ALLPLAYERS         0           /* DPID of all players */
126 #define DPID_SERVERPLAYER       1           /* DPID of the server player */
127 #define DPID_UNKNOWN            0xFFFFFFFF  /* Player ID is unknown */
128
129 /*  DPCAPS -  Used to obtain the capabilities of a DirectPlay object */
130 typedef struct tagDPCAPS
131 {
132     DWORD dwSize;               /* Size of structure in bytes */
133     DWORD dwFlags;              
134     DWORD dwMaxBufferSize;      
135     DWORD dwMaxQueueSize;       /* Obsolete. */
136     DWORD dwMaxPlayers;         /* Maximum players/groups (local + remote) */
137     DWORD dwHundredBaud;        /* Bandwidth in 100 bits per second units;
138                                  * i.e. 24 is 2400, 96 is 9600, etc. 
139                                  */
140     DWORD dwLatency;            /* Estimated latency; 0 = unknown */
141     DWORD dwMaxLocalPlayers;    /* Maximum # of locally created players */
142     DWORD dwHeaderLength;       /* Maximum header length in bytes */
143     DWORD dwTimeout;            /* Service provider's suggested timeout value
144                                  * This is how long DirectPlay will wait for
145                                  * responses to system messages
146                                  */
147 } DPCAPS, *LPDPCAPS;
148
149 typedef struct tagDPNAME
150 {
151     DWORD   dwSize;             
152     DWORD   dwFlags;            /* Not used must be 0 */
153
154     union /*playerShortName */      /* Player's Handle? */
155     {                           
156         LPWSTR  lpszShortName;  
157         LPSTR   lpszShortNameA; 
158     }psn;
159
160     union /*playerLongName */       /* Player's formal/real name */
161     {                         
162         LPWSTR  lpszLongName;  
163         LPSTR   lpszLongNameA;  
164     }pln;
165
166 } DPNAME, *LPDPNAME;
167
168 #define DPLONGNAMELEN     52
169 #define DPSHORTNAMELEN    20
170 #define DPSESSIONNAMELEN  32
171 #define DPPASSWORDLEN     16
172 #define DPUSERRESERVED    16
173
174 typedef struct tagDPSESSIONDESC
175 {
176     DWORD   dwSize;
177     GUID    guidSession;
178     DWORD   dwSession;
179     DWORD   dwMaxPlayers;
180     DWORD   dwCurrentPlayers;
181     DWORD   dwFlags;
182     char    szSessionName[ DPSESSIONNAMELEN ];
183     char    szUserField[ DPUSERRESERVED ];
184     DWORD   dwReserved1;
185     char    szPassword[ DPPASSWORDLEN ];
186     DWORD   dwReserved2;
187     DWORD   dwUser1;
188     DWORD   dwUser2;
189     DWORD   dwUser3;
190     DWORD   dwUser4;
191 } DPSESSIONDESC, *LPDPSESSIONDESC;
192
193 typedef struct tagDPSESSIONDESC2
194 {
195     DWORD   dwSize;             
196     DWORD   dwFlags;           
197     GUID    guidInstance;      
198     GUID    guidApplication;   /* GUID of the DP application, GUID_NULL if
199                                 * all applications! */
200                                
201     DWORD   dwMaxPlayers;      
202     DWORD   dwCurrentPlayers;   /* (read only value) */
203
204     union  /* Session name */
205     {                             
206         LPWSTR  lpszSessionName;  
207         LPSTR   lpszSessionNameA; 
208     }sess;
209
210     union  /* Optional password */
211     {                           
212         LPWSTR  lpszPassword;   
213         LPSTR   lpszPasswordA;  
214     }pass;
215
216     DWORD   dwReserved1;       
217     DWORD   dwReserved2;
218
219     DWORD   dwUser1;        /* For use by the application */  
220     DWORD   dwUser2;
221     DWORD   dwUser3;
222     DWORD   dwUser4;
223 } DPSESSIONDESC2, *LPDPSESSIONDESC2;
224 typedef const DPSESSIONDESC2* LPCDPSESSIONDESC2;
225
226 #define DPOPEN_JOIN                     0x00000001
227 #define DPOPEN_CREATE                   0x00000002
228 #define DPOPEN_RETURNSTATUS             DPENUMSESSIONS_RETURNSTATUS
229
230 #define DPSESSION_NEWPLAYERSDISABLED    0x00000001
231 #define DPSESSION_MIGRATEHOST           0x00000004
232 #define DPSESSION_NOMESSAGEID           0x00000008
233 #define DPSESSION_JOINDISABLED          0x00000020
234 #define DPSESSION_KEEPALIVE             0x00000040
235 #define DPSESSION_NODATAMESSAGES        0x00000080
236 #define DPSESSION_SECURESERVER          0x00000100
237 #define DPSESSION_PRIVATE               0x00000200
238 #define DPSESSION_PASSWORDREQUIRED      0x00000400
239 #define DPSESSION_MULTICASTSERVER       0x00000800
240 #define DPSESSION_CLIENTSERVER          0x00001000
241
242 typedef struct tagDPLCONNECTION
243 {
244     DWORD               dwSize;          
245     DWORD               dwFlags;          
246     LPDPSESSIONDESC2    lpSessionDesc;  /* Ptr to session desc to use for connect */  
247     LPDPNAME            lpPlayerName;   /* Ptr to player name structure */
248     GUID                guidSP;         /* GUID of Service Provider to use */ 
249     LPVOID              lpAddress;      /* Ptr to Address of Service Provider to use */
250     DWORD               dwAddressSize;  /* Size of address data */
251 } DPLCONNECTION, *LPDPLCONNECTION;
252
253 /* DPLCONNECTION flags (for dwFlags) */
254 #define DPLCONNECTION_CREATESESSION DPOPEN_CREATE
255 #define DPLCONNECTION_JOINSESSION   DPOPEN_JOIN
256
257 typedef struct tagDPCHAT
258 {
259     DWORD               dwSize;
260     DWORD               dwFlags;
261     union
262     {                          /* Message string */
263         LPWSTR  lpszMessage;   /* Unicode */
264         LPSTR   lpszMessageA;  /* ANSI */
265     }msgstr;
266 } DPCHAT, *LPDPCHAT;
267
268 typedef struct tagDPSECURITYDESC
269 {
270     DWORD dwSize;                   /* Size of structure */
271     DWORD dwFlags;                  /* Not used. Must be zero. */
272     union
273     {                               /* SSPI provider name */
274         LPWSTR  lpszSSPIProvider;   /* Unicode */
275         LPSTR   lpszSSPIProviderA;  /* ANSI */
276     }sspi;
277     union
278     {                               /* CAPI provider name */
279         LPWSTR lpszCAPIProvider;    /* Unicode */
280         LPSTR  lpszCAPIProviderA;   /* ANSI */
281     }capi;
282     DWORD dwCAPIProviderType;       /* Crypto Service Provider type */
283     DWORD dwEncryptionAlgorithm;    /* Encryption Algorithm type */
284 } DPSECURITYDESC, *LPDPSECURITYDESC;
285
286 typedef const DPSECURITYDESC *LPCDPSECURITYDESC;
287
288 typedef struct tagDPCREDENTIALS
289 {
290     DWORD dwSize;               /* Size of structure */
291     DWORD dwFlags;              /* Not used. Must be zero. */
292     union
293     {                           /* User name of the account */
294         LPWSTR  lpszUsername;   /* Unicode */
295         LPSTR   lpszUsernameA;  /* ANSI */
296     }name;
297     union
298     {                           /* Password of the account */
299         LPWSTR  lpszPassword;   /* Unicode */
300         LPSTR   lpszPasswordA;  /* ANSI */
301     }pass;
302     union
303     {                           /* Domain name of the account */
304         LPWSTR  lpszDomain;     /* Unicode */
305         LPSTR   lpszDomainA;    /* ANSI */
306     }domain;
307 } DPCREDENTIALS, *LPDPCREDENTIALS;
308
309 typedef const DPCREDENTIALS *LPCDPCREDENTIALS;
310
311
312
313 typedef BOOL (CALLBACK* LPDPENUMDPCALLBACKW)(
314     LPGUID      lpguidSP,
315     LPWSTR      lpSPName,
316     DWORD       dwMajorVersion,
317     DWORD       dwMinorVersion,
318     LPVOID      lpContext);
319
320 typedef BOOL (CALLBACK* LPDPENUMDPCALLBACKA)(
321     LPGUID      lpguidSP,
322     LPSTR       lpSPName,       /* ptr to str w/ driver description */
323     DWORD       dwMajorVersion, /* Major # of driver spec in lpguidSP */
324     DWORD       dwMinorVersion, /* Minor # of driver spec in lpguidSP */ 
325     LPVOID      lpContext);     /* User given */
326
327 typedef const GUID   *LPCGUID;
328 typedef const DPNAME *LPCDPNAME;
329
330 typedef BOOL (CALLBACK* LPDPENUMCONNECTIONSCALLBACK)(
331     LPCGUID     lpguidSP,
332     LPVOID      lpConnection,
333     DWORD       dwConnectionSize,
334     LPCDPNAME   lpName,
335     DWORD       dwFlags,
336     LPVOID      lpContext);
337
338 typedef BOOL (CALLBACK* LPDPENUMSESSIONSCALLBACK)(
339     LPDPSESSIONDESC lpDPSessionDesc,
340     LPVOID      lpContext,
341     LPDWORD     lpdwTimeOut,
342     DWORD       dwFlags);
343
344
345 extern HRESULT WINAPI DirectPlayEnumerateA( LPDPENUMDPCALLBACKA, LPVOID );
346 extern HRESULT WINAPI DirectPlayEnumerateW( LPDPENUMDPCALLBACKW, LPVOID );
347 extern HRESULT WINAPI DirectPlayCreate( LPGUID lpGUID, LPDIRECTPLAY2 *lplpDP, IUnknown *pUnk);
348
349 typedef BOOL (CALLBACK* LPDPENUMPLAYERSCALLBACK)(
350     DPID   dpId,
351     LPSTR  lpFriendlyName,
352     LPSTR  lpFormalName,
353     DWORD  dwFlags,
354     LPVOID          lpContext );
355
356 typedef BOOL (CALLBACK* LPDPENUMPLAYERSCALLBACK2)(
357     DPID            dpId,
358     DWORD           dwPlayerType,
359     LPCDPNAME       lpName,
360     DWORD           dwFlags,
361     LPVOID          lpContext );
362
363 typedef BOOL (CALLBACK* LPDPENUMSESSIONSCALLBACK2)(
364     LPCDPSESSIONDESC2   lpThisSD,
365     LPDWORD             lpdwTimeOut,
366     DWORD               dwFlags,
367     LPVOID              lpContext );
368
369 #include "poppack.h"
370
371 /*****************************************************************************
372  * IDirectPlay interface
373  */
374 #define ICOM_INTERFACE IDirectPlay
375 #define IDirectPlay_METHODS \
376     ICOM_METHOD2(HRESULT,AddPlayerToGroup,      DPID,idGroup, DPID,idPlayer) \
377     ICOM_METHOD (HRESULT,Close) \
378     ICOM_METHOD4(HRESULT,CreatePlayer,          LPDPID,lpidPlayer, LPSTR,lpPlayerName, LPSTR,, LPHANDLE,) \
379     ICOM_METHOD3(HRESULT,CreateGroup,           LPDPID,lpidGroup, LPSTR,lpGroupName, LPSTR,) \
380     ICOM_METHOD2(HRESULT,DeletePlayerFromGroup, DPID,idGroup, DPID,idPlayer) \
381     ICOM_METHOD1(HRESULT,DestroyPlayer,         DPID,idPlayer) \
382     ICOM_METHOD1(HRESULT,DestroyGroup,          DPID,idGroup) \
383     ICOM_METHOD1(HRESULT,EnableNewPlayers,      BOOL,) \
384     ICOM_METHOD4(HRESULT,EnumGroupPlayers,      DPID,idGroup, LPDPENUMPLAYERSCALLBACK,lpEnumPlayersCallback, LPVOID,lpContext, DWORD,dwFlags) \
385     ICOM_METHOD4(HRESULT,EnumGroups,            DWORD,, LPDPENUMPLAYERSCALLBACK,lpEnumPlayersCallback, LPVOID,lpContext, DWORD,dwFlags) \
386     ICOM_METHOD4(HRESULT,EnumPlayers,           DWORD,, LPDPENUMPLAYERSCALLBACK,lpEnumPlayersCallback, LPVOID,lpContext, DWORD,dwFlags) \
387     ICOM_METHOD5(HRESULT,EnumSessions,          LPDPSESSIONDESC,lpsd, DWORD,dwTimeout, LPDPENUMSESSIONSCALLBACK,lpEnumSessionsCallback, LPVOID,lpContext, DWORD,dwFlags) \
388     ICOM_METHOD1(HRESULT,GetCaps,               LPDPCAPS,lpDPCaps) \
389     ICOM_METHOD2(HRESULT,GetMessageCount,       DPID,idPlayer, LPDWORD,lpdwCount) \
390     ICOM_METHOD2(HRESULT,GetPlayerCaps,         DPID,idPlayer, LPDPCAPS,lpPlayerCaps) \
391     ICOM_METHOD5(HRESULT,GetPlayerName,         DPID,idPlayer, LPSTR,, LPDWORD,, LPSTR,, LPDWORD,) \
392     ICOM_METHOD1(HRESULT,Initialize,            LPGUID,lpGUID) \
393     ICOM_METHOD1(HRESULT,Open,                  LPDPSESSIONDESC,lpsd) \
394     ICOM_METHOD5(HRESULT,Receive,               LPDPID,lpidFrom, LPDPID,lpidTo, DWORD,dwFlags, LPVOID,lpData, LPDWORD,lpdwDataSize) \
395     ICOM_METHOD1(HRESULT,SaveSession,           LPSTR,) \
396     ICOM_METHOD5(HRESULT,Send,                  DPID,idFrom, DPID,idTo, DWORD,dwFlags, LPVOID,lpData, DWORD,dwDataSize) \
397     ICOM_METHOD3(HRESULT,SetPlayerName,         DPID,idPlayer, LPSTR,lpPlayerName, LPSTR,)
398 #define IDirectPlay_IMETHODS \
399     IUnknown_IMETHODS \
400     IDirectPlay_METHODS
401 ICOM_DEFINE(IDirectPlay,IUnknown)
402 #undef ICOM_INTERFACE
403
404 #ifdef ICOM_CINTERFACE
405     /*** IUnknown methods ***/
406 #define IDirectPlay_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
407 #define IDirectPlay_AddRef(p)             ICOM_CALL (AddRef,p)
408 #define IDirectPlay_Release(p)            ICOM_CALL (Release,p)
409 /*** IDirectPlay methods ***/
410 #define IDirectPlay_AddPlayerToGroup(p,a,b)      ICOM_CALL2(AddPlayerToGroup,p,a,b)
411 #define IDirectPlay_Close(p)                     ICOM_CALL (Close,p)
412 #define IDirectPlay_CreatePlayer(p,a,b,c,d)      ICOM_CALL4(CreatePlayer,p,a,b,c,d)
413 #define IDirectPlay_CreateGroup(p,a,b,c)         ICOM_CALL3(CreateGroup,p,a,b,c)
414 #define IDirectPlay_DeletePlayerFromGroup(p,a,b) ICOM_CALL2(DeletePlayerFromGroup,p,a,b)
415 #define IDirectPlay_DestroyPlayer(p,a)           ICOM_CALL1(DestroyPlayer,p,a)
416 #define IDirectPlay_DestroyGroup(p,a)            ICOM_CALL1(DestroyGroup,p,a)
417 #define IDirectPlay_EnableNewPlayers(p,a)        ICOM_CALL1(EnableNewPlayers,p,a)
418 #define IDirectPlay_EnumGroupPlayers(p,a,b,c,d)  ICOM_CALL4(EnumGroupPlayers,p,a,b,c,d)
419 #define IDirectPlay_EnumGroups(p,a,b,c,d)        ICOM_CALL4(EnumGroups,p,a,b,c,d)
420 #define IDirectPlay_EnumPlayers(p,a,b,c,d)       ICOM_CALL4(EnumPlayers,p,a,b,c,d)
421 #define IDirectPlay_EnumSessions(p,a,b,c,d,e)    ICOM_CALL5(EnumSessions,p,a,b,c,d,e)
422 #define IDirectPlay_GetCaps(p,a)                 ICOM_CALL1(GetCaps,p,a)
423 #define IDirectPlay_GetMessageCount(p,a,b)       ICOM_CALL2(GetMessageCount,p,a,b)
424 #define IDirectPlay_GetPlayerCaps(p,a,b)         ICOM_CALL2(GetPlayerCaps,p,a,b)
425 #define IDirectPlay_GetPlayerName(p,a,b,c,d,e)   ICOM_CALL5(GetPlayerName,p,a,b,c,d,e)
426 #define IDirectPlay_Initialize(p,a)              ICOM_CALL1(Initialize,p,a)
427 #define IDirectPlay_Open(p,a)                    ICOM_CALL1(Open,p,a)
428 #define IDirectPlay_Receive(p,a,b,c,d,e)         ICOM_CALL5(Receive,p,a,b,c,d,e)
429 #define IDirectPlay_SaveSession(p,a)             ICOM_CALL1(SaveSession,p,a)
430 #define IDirectPlay_Send(p,a,b,c,d,e)            ICOM_CALL5(Send,p,a,b,c,d,e)
431 #define IDirectPlay_SetPlayerName(p,a,b,c)       ICOM_CALL3(SetPlayerName,p,a,b,c)
432 #endif
433
434
435 /*****************************************************************************
436  * IDirectPlay2 interface
437  */
438 #define ICOM_INTERFACE IDirectPlay2
439 #define IDirectPlay2_METHODS \
440     ICOM_METHOD2(HRESULT,AddPlayerToGroup,      DPID,idGroup, DPID,idPlayer) \
441     ICOM_METHOD (HRESULT,Close) \
442     ICOM_METHOD5(HRESULT,CreateGroup,           LPDPID,lpidGroup, LPDPNAME,lpGroupName, LPVOID,lpData, DWORD,dwDataSize, DWORD,dwFlags) \
443     ICOM_METHOD6(HRESULT,CreatePlayer,          LPDPID,lpidPlayer, LPDPNAME,lpPlayerName, HANDLE,hEvent, LPVOID,lpData, DWORD,dwDataSize, DWORD,dwFlags) \
444     ICOM_METHOD2(HRESULT,DeletePlayerFromGroup, DPID,idGroup, DPID,idPlayer) \
445     ICOM_METHOD1(HRESULT,DestroyGroup,          DPID,idGroup) \
446     ICOM_METHOD1(HRESULT,DestroyPlayer,         DPID,idPlayer) \
447     ICOM_METHOD5(HRESULT,EnumGroupPlayers,      DPID,idGroup, LPGUID,lpguidInstance, LPDPENUMPLAYERSCALLBACK2,lpEnumPlayersCallback2, LPVOID,lpContext, DWORD,dwFlags) \
448     ICOM_METHOD4(HRESULT,EnumGroups,            LPGUID,lpguidInstance, LPDPENUMPLAYERSCALLBACK2,lpEnumPlayersCallback2, LPVOID,lpContext, DWORD,dwFlags) \
449     ICOM_METHOD4(HRESULT,EnumPlayers,           LPGUID,lpguidInstance, LPDPENUMPLAYERSCALLBACK2,lpEnumPlayersCallback2, LPVOID,lpContext, DWORD,dwFlags) \
450     ICOM_METHOD5(HRESULT,EnumSessions,          LPDPSESSIONDESC2,lpsd, DWORD,dwTimeout, LPDPENUMSESSIONSCALLBACK2,lpEnumSessionsCallback2, LPVOID,lpContext, DWORD,dwFlags) \
451     ICOM_METHOD2(HRESULT,GetCaps,               LPDPCAPS,lpDPCaps, DWORD,dwFlags) \
452     ICOM_METHOD4(HRESULT,GetGroupData,          DPID,idGroup, LPVOID,lpData, LPDWORD,lpdwDataSize, DWORD,dwFlags) \
453     ICOM_METHOD3(HRESULT,GetGroupName,          DPID,idGroup, LPVOID,lpData, LPDWORD,lpdwDataSize) \
454     ICOM_METHOD2(HRESULT,GetMessageCount,       DPID,idPlayer, LPDWORD,lpdwCount) \
455     ICOM_METHOD3(HRESULT,GetPlayerAddress,      DPID,idPlayer, LPVOID,lpData, LPDWORD,lpdwDataSize) \
456     ICOM_METHOD3(HRESULT,GetPlayerCaps,         DPID,idPlayer, LPDPCAPS,lpPlayerCaps, DWORD,dwFlags) \
457     ICOM_METHOD4(HRESULT,GetPlayerData,         DPID,idPlayer, LPVOID,lpData, LPDWORD,lpdwDataSize, DWORD,dwFlags) \
458     ICOM_METHOD3(HRESULT,GetPlayerName,         DPID,idPlayer, LPVOID,lpData, LPDWORD,lpdwDataSize) \
459     ICOM_METHOD2(HRESULT,GetSessionDesc,        LPVOID,lpData, LPDWORD,lpdwDataSize) \
460     ICOM_METHOD1(HRESULT,Initialize,            LPGUID,lpGUID) \
461     ICOM_METHOD2(HRESULT,Open,                  LPDPSESSIONDESC2,lpsd, DWORD,dwFlags) \
462     ICOM_METHOD5(HRESULT,Receive,               LPDPID,lpidFrom, LPDPID,lpidTo, DWORD,dwFlags, LPVOID,lpData, LPDWORD,lpdwDataSize) \
463     ICOM_METHOD5(HRESULT,Send,                  DPID,idFrom, DPID,idTo, DWORD,dwFlags, LPVOID,lpData, DWORD,dwDataSize) \
464     ICOM_METHOD4(HRESULT,SetGroupData,          DPID,idGroup, LPVOID,lpData, DWORD,dwDataSize, DWORD,dwFlags) \
465     ICOM_METHOD3(HRESULT,SetGroupName,          DPID,idGroup, LPDPNAME,lpGroupName, DWORD,dwFlags) \
466     ICOM_METHOD4(HRESULT,SetPlayerData,         DPID,idPlayer, LPVOID,lpData, DWORD,dwDataSize, DWORD,dwFlags) \
467     ICOM_METHOD3(HRESULT,SetPlayerName,         DPID,idPlayer, LPDPNAME,lpPlayerName, DWORD,dwFlags) \
468     ICOM_METHOD2(HRESULT,SetSessionDesc,        LPDPSESSIONDESC2,lpSessDesc, DWORD,dwFlags)
469 #define IDirectPlay2_IMETHODS \
470     IUnknown_IMETHODS \
471     IDirectPlay2_METHODS
472 ICOM_DEFINE(IDirectPlay2,IUnknown)
473 #undef ICOM_INTERFACE
474
475 #ifdef ICOM_CINTERFACE
476 /*** IUnknown methods ***/
477 #define IDirectPlay2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
478 #define IDirectPlay2_AddRef(p)             ICOM_CALL (AddRef,p)
479 #define IDirectPlay2_Release(p)            ICOM_CALL (Release,p)
480     /*** IDirectPlay2 methods ***/
481 #define IDirectPlay2_AddPlayerToGroup(p,a,b)       ICOM_CALL2(AddPlayerToGroup,p,a,b)
482 #define IDirectPlay2_Close(p)                      ICOM_CALL (Close,p)
483 #define IDirectPlay2_CreateGroup(p,a,b,c,d,e)      ICOM_CALL5(CreateGroup,p,a,b,c,d,e)
484 #define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f)   ICOM_CALL6(CreatePlayer,p,a,b,c,d,e,f)
485 #define IDirectPlay2_DeletePlayerFromGroup(p,a,b)  ICOM_CALL2(DeletePlayerFromGroup,p,a,b)
486 #define IDirectPlay2_DestroyGroup(p,a)             ICOM_CALL1(DestroyGroup,p,a)
487 #define IDirectPlay2_DestroyPlayer(p,a)            ICOM_CALL1(DestroyPlayer,p,a)
488 #define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) ICOM_CALL5(EnumGroupPlayers,p,a,b,c,d,e)
489 #define IDirectPlay2_EnumGroups(p,a,b,c,d)         ICOM_CALL4(EnumGroups,p,a,b,c,d)
490 #define IDirectPlay2_EnumPlayers(p,a,b,c,d)        ICOM_CALL4(EnumPlayers,p,a,b,c,d)
491 #define IDirectPlay2_EnumSessions(p,a,b,c,d,e)     ICOM_CALL5(EnumSessions,p,a,b,c,d,e)
492 #define IDirectPlay2_GetCaps(p,a,b)                ICOM_CALL2(GetCaps,p,a,b)
493 #define IDirectPlay2_GetGroupData(p,a,b,c,d)       ICOM_CALL4(GetGroupData,p,a,b,c,d)
494 #define IDirectPlay2_GetGroupName(p,a,b,c)         ICOM_CALL3(GetGroupName,p,a,b,c)
495 #define IDirectPlay2_GetMessageCount(p,a,b)        ICOM_CALL2(GetMessageCount,p,a,b)
496 #define IDirectPlay2_GetPlayerAddress(p,a,b,c)     ICOM_CALL3(GetPlayerAddress,p,a,b,c)
497 #define IDirectPlay2_GetPlayerCaps(p,a,b,c)        ICOM_CALL3(GetPlayerCaps,p,a,b,c)
498 #define IDirectPlay2_GetPlayerData(p,a,b,c,d)      ICOM_CALL4(GetPlayerData,p,a,b,c,d)
499 #define IDirectPlay2_GetPlayerName(p,a,b,c)        ICOM_CALL3(GetPlayerName,p,a,b,c)
500 #define IDirectPlay2_GetSessionDesc(p,a,b)         ICOM_CALL2(GetSessionDesc,p,a,b)
501 #define IDirectPlay2_Initialize(p,a)               ICOM_CALL1(Initialize,p,a)
502 #define IDirectPlay2_Open(p,a,b)                   ICOM_CALL2(Open,p,a,b)
503 #define IDirectPlay2_Receive(p,a,b,c,d,e)          ICOM_CALL5(Receive,p,a,b,c,d,e)
504 #define IDirectPlay2_Send(p,a,b,c,d,e)             ICOM_CALL5(Send,p,a,b,c,d,e)
505 #define IDirectPlay2_SetGroupData(p,a,b,c,d)       ICOM_CALL4(SetGroupData,p,a,b,c,d)
506 #define IDirectPlay2_SetGroupName(p,a,b,c)         ICOM_CALL3(SetGroupName,p,a,b,c)
507 #define IDirectPlay2_SetPlayerData(p,a,b,c,d)      ICOM_CALL4(SetPlayerData,p,a,b,c,d)
508 #define IDirectPlay2_SetPlayerName(p,a,b,c)        ICOM_CALL3(SetPlayerName,p,a,b,c)
509 #define IDirectPlay2_SetSessionDesc(p,a,b)         ICOM_CALL2(SetSessionDesc,p,a,b)
510 #endif
511
512
513 /*****************************************************************************
514  * IDirectPlay3 interface
515  */
516 #define ICOM_INTERFACE IDirectPlay3
517 #define IDirectPlay3_METHODS \
518     ICOM_METHOD2(HRESULT,AddGroupToGroup,            DPID,idParentGroup, DPID,idGroup) \
519     ICOM_METHOD6(HRESULT,CreateGroupInGroup,         DPID,idParentGroup, LPDPID,lpidGroup, LPDPNAME,lpGroupName, LPVOID,lpData, DWORD,dwDataSize, DWORD,dwFlags) \
520     ICOM_METHOD2(HRESULT,DeleteGroupFromGroup,       DPID,idParentGroup, DPID,idGroup) \
521     ICOM_METHOD4(HRESULT,EnumConnections,            LPCGUID,lpguidApplication, LPDPENUMCONNECTIONSCALLBACK,lpEnumCallback, LPVOID,lpContext, DWORD,dwFlags) \
522     ICOM_METHOD5(HRESULT,EnumGroupsInGroup,          DPID,idGroup, LPGUID,lpguidInstance, LPDPENUMPLAYERSCALLBACK2,lpEnumCallback, LPVOID,lpContext, DWORD,dwFlags) \
523     ICOM_METHOD4(HRESULT,GetGroupConnectionSettings, DWORD,dwFlags, DPID,idGroup, LPVOID,lpData, LPDWORD,lpdwDataSize) \
524     ICOM_METHOD2(HRESULT,InitializeConnection,       LPVOID,lpConnection, DWORD,dwFlags) \
525     ICOM_METHOD4(HRESULT,SecureOpen,                 LPCDPSESSIONDESC2,lpsd, DWORD,dwFlags, LPCDPSECURITYDESC,lpSecurity, LPCDPCREDENTIALS,lpCredentials) \
526     ICOM_METHOD4(HRESULT,SendChatMessage,            DPID,idFrom, DPID,idTo, DWORD,dwFlags, LPDPCHAT,lpChatMessage) \
527     ICOM_METHOD3(HRESULT,SetGroupConnectionSettings, DWORD,dwFlags, DPID,idGroup, LPDPLCONNECTION,lpConnection) \
528     ICOM_METHOD2(HRESULT,StartSession,               DWORD,dwFlags, DPID,idGroup) \
529     ICOM_METHOD2(HRESULT,GetGroupFlags,              DPID,idGroup, LPDWORD,lpdwFlags) \
530     ICOM_METHOD2(HRESULT,GetGroupParent,             DPID,idGroup, LPDPID,lpidParent) \
531     ICOM_METHOD4(HRESULT,GetPlayerAccount,           DPID,idPlayer, DWORD,dwFlags, LPVOID,lpData, LPDWORD,lpdwDataSize) \
532     ICOM_METHOD2(HRESULT,GetPlayerFlags,             DPID,idPlayer, LPDWORD,lpdwFlags)
533 #define IDirectPlay3_IMETHODS \
534     IDirectPlay2_IMETHODS \
535     IDirectPlay3_METHODS
536 ICOM_DEFINE(IDirectPlay3,IDirectPlay2)
537 #undef ICOM_INTERFACE
538
539 #ifdef ICOM_CINTERFACE
540 /*** IUnknown methods ***/
541 #define IDirectPlay3_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
542 #define IDirectPlay3_AddRef(p)             ICOM_CALL (AddRef,p)
543 #define IDirectPlay3_Release(p)            ICOM_CALL (Release,p)
544 /*** IDirectPlay2 methods ***/
545 #define IDirectPlay3_AddPlayerToGroup(p,a,b)       ICOM_CALL2(AddPlayerToGroup,p,a,b)
546 #define IDirectPlay3_Close(p)                      ICOM_CALL (Close,p)
547 #define IDirectPlay3_CreateGroup(p,a,b,c,d,e)      ICOM_CALL5(CreateGroup,p,a,b,c,d,e)
548 #define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f)   ICOM_CALL6(CreatePlayer,p,a,b,c,d,e,f)
549 #define IDirectPlay3_DeletePlayerFromGroup(p,a,b)  ICOM_CALL2(DeletePlayerFromGroup,p,a,b)
550 #define IDirectPlay3_DestroyGroup(p,a)             ICOM_CALL1(DestroyGroup,p,a)
551 #define IDirectPlay3_DestroyPlayer(p,a)            ICOM_CALL1(DestroyPlayer,p,a)
552 #define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) ICOM_CALL5(EnumGroupPlayers,p,a,b,c,d,e)
553 #define IDirectPlay3_EnumGroups(p,a,b,c,d)         ICOM_CALL4(EnumGroups,p,a,b,c,d)
554 #define IDirectPlay3_EnumPlayers(p,a,b,c,d)        ICOM_CALL4(EnumPlayers,p,a,b,c,d)
555 #define IDirectPlay3_EnumSessions(p,a,b,c,d,e)     ICOM_CALL5(EnumSessions,p,a,b,c,d,e)
556 #define IDirectPlay3_GetCaps(p,a,b)                ICOM_CALL2(GetCaps,p,a,b)
557 #define IDirectPlay3_GetGroupData(p,a,b,c,d)       ICOM_CALL4(GetGroupData,p,a,b,c,d)
558 #define IDirectPlay3_GetGroupName(p,a,b,c)         ICOM_CALL3(GetGroupName,p,a,b,c)
559 #define IDirectPlay3_GetMessageCount(p,a,b)        ICOM_CALL2(GetMessageCount,p,a,b)
560 #define IDirectPlay3_GetPlayerAddress(p,a,b,c)     ICOM_CALL3(GetPlayerAddress,p,a,b,c)
561 #define IDirectPlay3_GetPlayerCaps(p,a,b,c)        ICOM_CALL3(GetPlayerCaps,p,a,b,c)
562 #define IDirectPlay3_GetPlayerData(p,a,b,c,d)      ICOM_CALL4(GetPlayerData,p,a,b,c,d)
563 #define IDirectPlay3_GetPlayerName(p,a,b,c)        ICOM_CALL3(GetPlayerName,p,a,b,c)
564 #define IDirectPlay3_GetSessionDesc(p,a,b)         ICOM_CALL2(GetSessionDesc,p,a,b)
565 #define IDirectPlay3_Initialize(p,a)               ICOM_CALL1(Initialize,p,a)
566 #define IDirectPlay3_Open(p,a,b)                   ICOM_CALL2(Open,p,a,b)
567 #define IDirectPlay3_Receive(p,a,b,c,d,e)          ICOM_CALL5(Receive,p,a,b,c,d,e)
568 #define IDirectPlay3_Send(p,a,b,c,d,e)             ICOM_CALL5(Send,p,a,b,c,d,e)
569 #define IDirectPlay3_SetGroupData(p,a,b,c,d)       ICOM_CALL4(SetGroupData,p,a,b,c,d)
570 #define IDirectPlay3_SetGroupName(p,a,b,c)         ICOM_CALL3(SetGroupName,p,a,b,c)
571 #define IDirectPlay3_SetPlayerData(p,a,b,c,d)      ICOM_CALL4(SetPlayerData,p,a,b,c,d)
572 #define IDirectPlay3_SetPlayerName(p,a,b,c)        ICOM_CALL3(SetPlayerName,p,a,b,c)
573 #define IDirectPlay3_SetSessionDesc(p,a,b)         ICOM_CALL2(SetSessionDesc,p,a,b)
574 /*** IDirectPlay3 methods ***/
575 #define IDirectPlay3_AddGroupToGroup(p,a,b)                ICOM_CALL2(AddGroupToGroup,p,a,b)
576 #define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f)     ICOM_CALL6(CreateGroupInGroup,p,a,b,c,d,e,f)
577 #define IDirectPlay3_DeleteGroupFromGroup(p,a,b)           ICOM_CALL2(DeleteGroupFromGroup,p,a,b)
578 #define IDirectPlay3_EnumConnections(p,a,b,c,d)            ICOM_CALL4(EnumConnections,p,a,b,c,d)
579 #define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e)        ICOM_CALL5(EnumGroupsInGroup,p,a,b,c,d,e)
580 #define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) ICOM_CALL4(GetGroupConnectionSettings,p,a,b,c,d)
581 #define IDirectPlay3_InitializeConnection(p,a,b)           ICOM_CALL2(InitializeConnection,p,a,b)
582 #define IDirectPlay3_SecureOpen(p,a,b,c,d)                 ICOM_CALL4(SecureOpen,p,a,b,c,d)
583 #define IDirectPlay3_SendChatMessage(p,a,b,c,d)            ICOM_CALL4(SendChatMessage,p,a,b,c,d)
584 #define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c)   ICOM_CALL3(SetGroupConnectionSettings,p,a,b,c)
585 #define IDirectPlay3_StartSession(p,a,b)                   ICOM_CALL2(StartSession,p,a,b)
586 #define IDirectPlay3_GetGroupFlags(p,a,b)                  ICOM_CALL2(GetGroupFlags,p,a,b)
587 #define IDirectPlay3_GetGroupParent(p,a,b)                 ICOM_CALL2(GetGroupParent,p,a,b)
588 #define IDirectPlay3_GetPlayerAccount(p,a,b,c,d)           ICOM_CALL4(GetPlayerAccount,p,a,b,c,d)
589 #define IDirectPlay3_GetPlayerFlags(p,a,b)                 ICOM_CALL2(GetPlayerFlags,p,a,b)
590 #endif
591
592 #ifdef __cplusplus
593 } /* extern "C" */
594 #endif /* defined(__cplusplus) */
595
596 #endif /* __WINE_DPLAY_H */