Added mappings for a few messages.
[wine] / dlls / dplayx / lobbysp.h
1 #ifndef __WINE_LOBBY_SP_H
2 #define __WINE_LOBBY_SP_H
3
4 #include "dplobby.h"
5
6 /* GUID for IDPLobbySP {5A4E5A20-2CED-11d0-A889-00A0C905433C} */
7 DEFINE_GUID(IID_IDPLobbySP, 0x5a4e5a20, 0x2ced, 0x11d0, 0xa8, 0x89, 0x0, 0xa0, 0xc9, 0x5, 0x43, 0x3c);
8 typedef struct IDPLobbySP IDPLobbySP, *LPDPLOBBYSP;
9
10 /* For SP. Top 16 bits is dplay, bottom 16 is SP */
11 #define DPLSP_MAJORVERSION               0x00050000
12
13 typedef struct SPDATA_ADDGROUPTOGROUP
14 {
15   DWORD       dwSize;
16   LPDPLOBBYSP lpISP;
17   DWORD       dwParentID;
18   DWORD       dwGroupID;
19 } SPDATA_ADDGROUPTOGROUP, *LPSPDATA_ADDGROUPTOGROUP;
20
21 typedef struct SPDATA_ADDPLAYERTOGROUP
22 {
23   DWORD       dwSize;
24   LPDPLOBBYSP lpISP;
25   DWORD       dwGroupID;
26   DWORD       dwPlayerID;
27 } SPDATA_ADDPLAYERTOGROUP, *LPSPDATA_ADDPLAYERTOGROUP;
28
29 typedef struct SPDATA_ADDREMOTEGROUPTOGROUP
30 {
31   DWORD       dwSize;
32   LPDPLOBBYSP lpISP;
33   DWORD       dwAnchorID;
34   DWORD       dwGroupID;
35   DWORD       dwParentID;
36   LPDPNAME    lpName;
37   DWORD       dwGroupFlags;
38 } SPDATA_ADDREMOTEGROUPTOGROUP, *LPSPDATA_ADDREMOTEGROUPTOGROUP;
39
40 typedef struct SPDATA_ADDREMOTEPLAYERTOGROUP
41 {
42   DWORD       dwSize;
43   LPDPLOBBYSP lpISP;
44   DWORD       dwGroupID;
45   DWORD       dwPlayerID;
46   DWORD       dwPlayerFlags;
47   LPDPNAME    lpName;
48 } SPDATA_ADDREMOTEPLAYERTOGROUP, *LPSPDATA_ADDREMOTEPLAYERTOGROUP;
49
50 typedef struct SPDATA_BUILDPARENTALHEIRARCHY
51 {
52   DWORD       dwSize;
53   LPDPLOBBYSP lpISP;
54   DWORD       dwGroupID;
55   DWORD       dwMessage;
56   DWORD       dwParentID;
57 } SPDATA_BUILDPARENTALHEIRARCHY, *LPSPDATA_BUILDPARENTALHEIRARCHY;
58
59 typedef struct SPDATA_CLOSE
60 {
61   DWORD       dwSize;
62   LPDPLOBBYSP lpISP;
63 } SPDATA_CLOSE, *LPSPDATA_CLOSE;
64
65 typedef struct SPDATA_CREATEGROUP
66 {
67   DWORD       dwSize;
68   LPDPLOBBYSP lpISP;
69   DWORD       dwGroupID;
70   LPDPNAME    lpName;
71   LPVOID      lpData;
72   DWORD       dwDataSize;
73   DWORD       dwFlags;
74 } SPDATA_CREATEGROUP, *LPSPDATA_CREATEGROUP;
75
76 typedef struct SPDATA_CREATEGROUPINGROUP
77 {
78   DWORD       dwSize;
79   LPDPLOBBYSP lpISP;
80   DWORD       dwParentID;
81   DWORD       dwGroupID;
82   LPDPNAME    lpName;
83   LPVOID      lpData;
84   DWORD       dwDataSize;
85   DWORD       dwFlags;
86 } SPDATA_CREATEGROUPINGROUP, *LPSPDATA_CREATEGROUPINGROUP;
87
88 typedef struct SPDATA_CREATEREMOTEGROUP
89 {
90   DWORD       dwSize;
91   LPDPLOBBYSP lpISP;
92   DWORD       dwGroupID;
93   LPDPNAME    lpName;
94   LPVOID      lpData;
95   DWORD       dwDataSize;
96   DWORD       dwFlags;
97 } SPDATA_CREATEREMOTEGROUP, *LPSPDATA_CREATEREMOTEGROUP;
98
99 typedef struct SPDATA_CREATEREMOTEGROUPINGROUP
100 {
101   DWORD       dwSize;
102   LPDPLOBBYSP lpISP;
103   DWORD       dwParentID;
104   DWORD       dwGroupID;
105   LPDPNAME    lpName;
106   DWORD       dwFlags;
107 } SPDATA_CREATEREMOTEGROUPINGROUP, *LPSPDATA_CREATEREMOTEGROUPINGROUP;
108
109 typedef struct SPDATA_CREATEPLAYER
110 {
111   DWORD       dwSize;
112   LPDPLOBBYSP lpISP;
113   DWORD       dwPlayerID;
114   LPDPNAME    lpName;
115   LPVOID      lpData;
116   DWORD       dwDataSize;
117   DWORD       dwFlags;
118 } SPDATA_CREATEPLAYER, *LPSPDATA_CREATEPLAYER;
119
120 typedef struct SPDATA_DELETEGROUPFROMGROUP
121 {
122   DWORD       dwSize;
123   LPDPLOBBYSP lpISP;
124   DWORD       dwParentID;
125   DWORD       dwGroupID;
126 } SPDATA_DELETEGROUPFROMGROUP, *LPSPDATA_DELETEGROUPFROMGROUP;
127
128 typedef struct SPDATA_DELETEPLAYERFROMGROUP
129 {
130   DWORD       dwSize;
131   LPDPLOBBYSP lpISP;
132   DWORD       dwGroupID;
133   DWORD       dwPlayerID;
134 } SPDATA_DELETEPLAYERFROMGROUP, *LPSPDATA_DELETEPLAYERFROMGROUP;
135
136 typedef struct SPDATA_DELETEREMOTEGROUPFROMGROUP
137 {
138   DWORD       dwSize;
139   LPDPLOBBYSP lpISP;
140   DWORD       dwParentID;
141   DWORD       dwGroupID;
142 } SPDATA_DELETEREMOTEGROUPFROMGROUP, *LPSPDATA_DELETEREMOTEGROUPFROMGROUP;
143
144 typedef struct SPDATA_DELETEREMOTEPLAYERFROMGROUP
145 {
146   DWORD       dwSize;
147   LPDPLOBBYSP lpISP;
148   DWORD       dwGroupID;
149   DWORD       dwPlayerID;
150 } SPDATA_DELETEREMOTEPLAYERFROMGROUP, *LPSPDATA_DELETEREMOTEPLAYERFROMGROUP;
151
152 typedef struct SPDATA_DESTROYGROUP
153 {
154   DWORD       dwSize;
155   LPDPLOBBYSP lpISP;
156   DWORD       dwGroupID;
157 } SPDATA_DESTROYGROUP, *LPSPDATA_DESTROYGROUP;
158
159 typedef struct SPDATA_DESTROYREMOTEGROUP
160 {
161   DWORD       dwSize;
162   LPDPLOBBYSP lpISP;
163   DWORD       dwGroupID;
164 } SPDATA_DESTROYREMOTEGROUP, *LPSPDATA_DESTROYREMOTEGROUP;
165
166 typedef struct SPDATA_DESTROYPLAYER
167 {
168   DWORD       dwSize;
169   LPDPLOBBYSP lpISP;
170   DWORD       dwPlayerID;
171 } SPDATA_DESTROYPLAYER, *LPSPDATA_DESTROYPLAYER;
172
173 typedef struct SPDATA_ENUMSESSIONS
174 {
175   DWORD            dwSize;
176   LPDPLOBBYSP      lpISP;
177   LPDPSESSIONDESC2 lpsd;
178   DWORD            dwTimeout;
179   DWORD            dwFlags;
180 } SPDATA_ENUMSESSIONS, *LPSPDATA_ENUMSESSIONS;
181
182 typedef struct SPDATA_ENUMSESSIONSRESPONSE
183 {
184   DWORD            dwSize;
185   LPDPSESSIONDESC2 lpsd;
186 } SPDATA_ENUMSESSIONSRESPONSE, *LPSPDATA_ENUMSESSIONSRESPONSE;
187
188 typedef struct SPDATA_GETCAPS
189 {
190   DWORD       dwSize;
191   LPDPLOBBYSP lpISP;
192   DWORD       dwFlags;
193   LPDPCAPS    lpcaps;
194 } SPDATA_GETCAPS, *LPSPDATA_GETCAPS;
195
196 typedef struct SPDATA_GETGROUPCONNECTIONSETTINGS
197 {
198   DWORD       dwSize;
199   DWORD       dwFlags;
200   LPDPLOBBYSP lpISP;
201   DWORD       dwGroupID;
202   LPDWORD     lpdwBufferSize;
203   LPVOID      lpBuffer;
204 } SPDATA_GETGROUPCONNECTIONSETTINGS, *LPSPDATA_GETGROUPCONNECTIONSETTINGS;
205
206 typedef struct SPDATA_GETGROUPDATA
207 {
208   DWORD       dwSize;
209   LPDPLOBBYSP lpISP;
210   DWORD       dwGroupID;
211   LPDWORD     lpdwDataSize;
212   LPVOID      lpData;
213 } SPDATA_GETGROUPDATA, *LPSPDATA_GETGROUPDATA;
214
215 typedef struct SPDATA_GETPLAYERCAPS
216 {
217   DWORD       dwSize;
218   LPDPLOBBYSP lpISP;
219   DWORD       dwFlags;
220   DWORD       dwPlayerID;
221   LPDPCAPS    lpcaps;
222 } SPDATA_GETPLAYERCAPS, *LPSPDATA_GETPLAYERCAPS;
223
224 typedef struct SPDATA_GETPLAYERDATA
225 {
226   DWORD       dwSize;
227   LPDPLOBBYSP lpISP;
228   DWORD       dwPlayerID;
229   LPDWORD     lpdwDataSize;
230   LPVOID      lpData;
231 } SPDATA_GETPLAYERDATA, *LPSPDATA_GETPLAYERDATA;
232
233 typedef struct SPDATA_HANDLEMESSAGE
234 {
235   DWORD  dwSize;
236   DWORD  dwFromID;
237   DWORD  dwToID;
238   LPVOID lpBuffer;
239   DWORD  dwBufSize;
240 } SPDATA_HANDLEMESSAGE, *LPSPDATA_HANDLEMESSAGE;
241
242 typedef struct SPDATA_OPEN
243 {
244   DWORD            dwSize;
245   LPDPLOBBYSP      lpISP;
246   LPDPSESSIONDESC2 lpsd;
247   DWORD            dwFlags;
248   LPCDPCREDENTIALS lpCredentials;
249 } SPDATA_OPEN, *LPSPDATA_OPEN;
250
251 typedef struct SPDATA_SEND
252 {
253   DWORD       dwSize;
254   LPDPLOBBYSP lpISP;
255   DWORD       dwFromID;
256   DWORD       dwToID;
257   DWORD       dwFlags;
258   LPVOID      lpBuffer;
259   DWORD       dwBufSize;
260 } SPDATA_SEND, *LPSPDATA_SEND;
261
262 typedef struct SPDATA_CHATMESSAGE
263 {
264   DWORD       dwSize;
265   LPDPLOBBYSP lpISP;
266   DWORD       dwFromID;
267   DWORD       dwToID;
268   DWORD       dwFlags;
269   LPDPCHAT    lpChat;
270 } SPDATA_CHATMESSAGE, *LPSPDATA_CHATMESSAGE;
271
272 typedef struct SPDATA_SETGROUPCONNECTIONSETTINGS
273 {
274   DWORD           dwSize;
275   DWORD           dwFlags;
276   LPDPLOBBYSP     lpISP;
277   DWORD           dwGroupID;
278   LPDPLCONNECTION lpConn;
279 } SPDATA_SETGROUPCONNECTIONSETTINGS, *LPSPDATA_SETGROUPCONNECTIONSETTINGS;
280
281 typedef struct SPDATA_SETGROUPDATA
282 {
283   DWORD       dwSize;
284   LPDPLOBBYSP lpISP;
285   DWORD       dwGroupID;
286   LPVOID      lpData;
287   DWORD       dwDataSize;
288   DWORD       dwFlags;
289 } SPDATA_SETGROUPDATA, *LPSPDATA_SETGROUPDATA;
290
291 typedef struct SPDATA_SETGROUPNAME
292 {
293   DWORD       dwSize;
294   LPDPLOBBYSP lpISP;
295   DWORD       dwGroupID;
296   LPDPNAME    lpName;
297   DWORD       dwFlags;
298 } SPDATA_SETGROUPNAME, *LPSPDATA_SETGROUPNAME;
299
300 typedef struct SPDATA_SETREMOTEGROUPNAME
301 {
302   DWORD       dwSize;
303   LPDPLOBBYSP lpISP;
304   DWORD       dwGroupID;
305   LPDPNAME    lpName;
306   DWORD       dwFlags;
307 } SPDATA_SETREMOTEGROUPNAME, *LPSPDATA_SETREMOTEGROUPNAME;
308
309 typedef struct SPDATA_SETPLAYERDATA
310 {
311   DWORD       dwSize;
312   LPDPLOBBYSP lpISP;
313   DWORD       dwPlayerID;
314   LPVOID      lpData;
315   DWORD       dwDataSize;
316   DWORD       dwFlags;
317 } SPDATA_SETPLAYERDATA, *LPSPDATA_SETPLAYERDATA;
318
319 typedef struct SPDATA_SETPLAYERNAME
320 {
321   DWORD       dwSize;
322   LPDPLOBBYSP lpISP;
323   DWORD       dwPlayerID;
324   LPDPNAME    lpName;
325   DWORD       dwFlags;
326 } SPDATA_SETPLAYERNAME, *LPSPDATA_SETPLAYERNAME;
327
328 typedef struct SPDATA_SETREMOTEPLAYERNAME
329 {
330   DWORD       dwSize;
331   LPDPLOBBYSP lpISP;
332   DWORD       dwPlayerID;
333   LPDPNAME    lpName;
334   DWORD       dwFlags;
335 } SPDATA_SETREMOTEPLAYERNAME, *LPSPDATA_SETREMOTEPLAYERNAME;
336
337 typedef struct SPDATA_SETSESSIONDESC
338 {
339   DWORD            dwSize;
340   LPDPSESSIONDESC2 lpsd;
341 } SPDATA_SETSESSIONDESC, *LPSPDATA_SETSESSIONDESC;
342
343 typedef struct SPDATA_SHUTDOWN
344 {
345   DWORD       dwSize;
346   LPDPLOBBYSP lpISP;
347 } SPDATA_SHUTDOWN, *LPSPDATA_SHUTDOWN;
348
349 typedef struct SPDATA_STARTSESSION
350 {
351   DWORD       dwSize;
352   LPDPLOBBYSP lpISP;
353   DWORD       dwFlags;
354   DWORD       dwGroupID;
355 } SPDATA_STARTSESSION, *LPSPDATA_STARTSESSION;
356
357 typedef struct SPDATA_STARTSESSIONCOMMAND
358 {
359   DWORD           dwFlags;
360   DWORD           dwGroupID;
361   DWORD           dwHostID;
362   LPDPLCONNECTION lpConn;
363 } SPDATA_STARTSESSIONCOMMAND, *LPSPDATA_STARTSESSIONCOMMAND;
364
365 /* Prototypes for callbacks returned by DPLSPInit */
366 typedef HRESULT (WINAPI *LPSP_ADDGROUPTOGROUP)(LPSPDATA_ADDGROUPTOGROUP);
367 typedef HRESULT (WINAPI *LPSP_ADDPLAYERTOGROUP)(LPSPDATA_ADDPLAYERTOGROUP);
368 typedef HRESULT (WINAPI *LPSP_BUILDPARENTALHEIRARCHY)(LPSPDATA_BUILDPARENTALHEIRARCHY);
369 typedef HRESULT (WINAPI *LPSP_CLOSE)(LPSPDATA_CLOSE);
370 typedef HRESULT (WINAPI *LPSP_CREATEGROUP)(LPSPDATA_CREATEGROUP);
371 typedef HRESULT (WINAPI *LPSP_CREATEGROUPINGROUP)(LPSPDATA_CREATEGROUPINGROUP);
372 typedef HRESULT (WINAPI *LPSP_CREATEPLAYER)(LPSPDATA_CREATEPLAYER);
373 typedef HRESULT (WINAPI *LPSP_DELETEGROUPFROMGROUP)(LPSPDATA_DELETEGROUPFROMGROUP);
374 typedef HRESULT (WINAPI *LPSP_DELETEPLAYERFROMGROUP)(LPSPDATA_DELETEPLAYERFROMGROUP);
375 typedef HRESULT (WINAPI *LPSP_DESTROYGROUP)(LPSPDATA_DESTROYGROUP);
376 typedef HRESULT (WINAPI *LPSP_DESTROYPLAYER)(LPSPDATA_DESTROYPLAYER);
377 typedef HRESULT (WINAPI *LPSP_ENUMSESSIONS)(LPSPDATA_ENUMSESSIONS);
378 typedef HRESULT (WINAPI *LPSP_GETCAPS)(LPSPDATA_GETCAPS);
379 typedef HRESULT (WINAPI *LPSP_GETGROUPCONNECTIONSETTINGS)(LPSPDATA_GETGROUPCONNECTIONSETTINGS);
380 typedef HRESULT (WINAPI *LPSP_GETGROUPDATA)(LPSPDATA_GETGROUPDATA);
381 typedef HRESULT (WINAPI *LPSP_GETPLAYERCAPS)(LPSPDATA_GETPLAYERCAPS);
382 typedef HRESULT (WINAPI *LPSP_GETPLAYERDATA)(LPSPDATA_GETPLAYERDATA);
383 typedef HRESULT (WINAPI *LPSP_HANDLEMESSAGE)(LPSPDATA_HANDLEMESSAGE);
384 typedef HRESULT (WINAPI *LPSP_OPEN)(LPSPDATA_OPEN);
385 typedef HRESULT (WINAPI *LPSP_SEND)(LPSPDATA_SEND);
386 typedef HRESULT (WINAPI *LPSP_SENDCHATMESSAGE)(LPSPDATA_CHATMESSAGE);
387 typedef HRESULT (WINAPI *LPSP_SETGROUPCONNECTIONSETTINGS)(LPSPDATA_SETGROUPCONNECTIONSETTINGS);
388 typedef HRESULT (WINAPI *LPSP_SETGROUPDATA)(LPSPDATA_SETGROUPDATA);
389 typedef HRESULT (WINAPI *LPSP_SETGROUPNAME)(LPSPDATA_SETGROUPNAME);
390 typedef HRESULT (WINAPI *LPSP_SETPLAYERDATA)(LPSPDATA_SETPLAYERDATA);
391 typedef HRESULT (WINAPI *LPSP_SETPLAYERNAME)(LPSPDATA_SETPLAYERNAME);
392 typedef HRESULT (WINAPI *LPSP_SHUTDOWN)(LPSPDATA_SHUTDOWN);
393 typedef HRESULT (WINAPI *LPSP_STARTSESSION)(LPSPDATA_STARTSESSION);
394
395 /* Callback table for dplay to call into service provider */
396 typedef struct SP_CALLBACKS
397 {
398   DWORD                            dwSize;
399   DWORD                            dwFlags;
400   LPSP_ADDGROUPTOGROUP             AddGroupToGroup;
401   LPSP_ADDPLAYERTOGROUP            AddPlayerToGroup;
402   LPSP_BUILDPARENTALHEIRARCHY      BuildParentalHeirarchy;
403   LPSP_CLOSE                       Close;
404   LPSP_CREATEGROUP                 CreateGroup;
405   LPSP_CREATEGROUPINGROUP          CreateGroupInGroup;
406   LPSP_CREATEPLAYER                CreatePlayer;
407   LPSP_DELETEGROUPFROMGROUP        DeleteGroupFromGroup;
408   LPSP_DELETEPLAYERFROMGROUP       DeletePlayerFromGroup;
409   LPSP_DESTROYGROUP                DestroyGroup;
410   LPSP_DESTROYPLAYER               DestroyPlayer;
411   LPSP_ENUMSESSIONS                EnumSessions;
412   LPSP_GETCAPS                     GetCaps;
413   LPSP_GETGROUPCONNECTIONSETTINGS  GetGroupConnectionSettings;
414   LPSP_GETGROUPDATA                GetGroupData;
415   LPSP_GETPLAYERCAPS               GetPlayerCaps;
416   LPSP_GETPLAYERDATA               GetPlayerData;
417   LPSP_OPEN                        Open;
418   LPSP_SEND                        Send;
419   LPSP_SENDCHATMESSAGE             SendChatMessage;
420   LPSP_SETGROUPCONNECTIONSETTINGS  SetGroupConnectionSettings;
421   LPSP_SETGROUPDATA                SetGroupData;
422   LPSP_SETGROUPNAME                SetGroupName;
423   LPSP_SETPLAYERDATA               SetPlayerData;
424   LPSP_SETPLAYERNAME               SetPlayerName;
425   LPSP_SHUTDOWN                    Shutdown;
426   LPSP_STARTSESSION                StartSession;
427 } SP_CALLBACKS, *LPSP_CALLBACKS;             
428
429 typedef struct SPDATA_INIT 
430 {
431   LPSP_CALLBACKS lpCB;
432   DWORD          dwSPVersion;
433   LPDPLOBBYSP    lpISP;
434   LPDPADDRESS    lpAddress;
435 } SPDATA_INIT, *LPSPDATA_INIT;
436
437 typedef HRESULT (WINAPI *LPSP_INIT)(LPSPDATA_INIT);
438 HRESULT WINAPI DPLSPInit(LPSPDATA_INIT);
439
440 /* Define the COM interface */
441 #define ICOM_INTERFACE IDPLobbySP
442 #define IDPLobbySP_METHODS \
443   ICOM_METHOD1(HRESULT, AddGroupToGroup,       LPSPDATA_ADDREMOTEGROUPTOGROUP, argtg ) \
444   ICOM_METHOD1(HRESULT, AddPlayerToGroup,      LPSPDATA_ADDREMOTEPLAYERTOGROUP, arptg ) \
445   ICOM_METHOD1(HRESULT, CreateGroup,           LPSPDATA_CREATEREMOTEGROUP, crg ) \
446   ICOM_METHOD1(HRESULT, CreateGroupInGroup,    LPSPDATA_CREATEREMOTEGROUPINGROUP, crgig ) \
447   ICOM_METHOD1(HRESULT, DeleteGroupFromGroup,  LPSPDATA_DELETEREMOTEGROUPFROMGROUP, drgfg ) \
448   ICOM_METHOD1(HRESULT, DeletePlayerFromGroup, LPSPDATA_DELETEREMOTEPLAYERFROMGROUP, drpfg ) \
449   ICOM_METHOD1(HRESULT, DestroyGroup,          LPSPDATA_DESTROYREMOTEGROUP, drg ) \
450   ICOM_METHOD1(HRESULT, EnumSessionsResponse,  LPSPDATA_ENUMSESSIONSRESPONSE, er ) \
451   ICOM_METHOD1(HRESULT, GetSPDataPointer,      LPVOID*, lplpData ) \
452   ICOM_METHOD1(HRESULT, HandleMessage,         LPSPDATA_HANDLEMESSAGE, hm ) \
453   ICOM_METHOD1(HRESULT, SendChatMessage,       LPSPDATA_CHATMESSAGE, cm ) \
454   ICOM_METHOD1(HRESULT, SetGroupName,          LPSPDATA_SETREMOTEGROUPNAME, srgn ) \
455   ICOM_METHOD1(HRESULT, SetPlayerName,         LPSPDATA_SETREMOTEPLAYERNAME, srpn ) \
456   ICOM_METHOD1(HRESULT, SetSessionDesc,        LPSPDATA_SETSESSIONDESC, ssd ) \
457   ICOM_METHOD1(HRESULT, SetSPDataPointer,      LPVOID, lpData ) \
458   ICOM_METHOD1(HRESULT, StartSession,          LPSPDATA_STARTSESSIONCOMMAND, ssc )
459
460 #define IDPLobbySP_IMETHODS \
461    IUnknown_IMETHODS \
462    IDPLobbySP_METHODS
463
464 ICOM_DEFINE(IDPLobbySP,IUnknown)
465 #undef ICOM_INTERFACE
466
467 /*** IUnknown methods ***/
468 #define IDPLobbySP_QueryInterface(p,a,b)         ICOM_CALL2(QueryInterface,p,a,b)
469 #define IDPLobbySP_AddRef(p)                     ICOM_CALL (AddRef,p)
470 #define IDPLobbySP_Release(p)                    ICOM_CALL (Release,p)
471
472 /*** IDPLobbySP methods ***/
473 #define IDPLobbySP_AddGroupToGroup(p,a)          ICOM_CALL1(AddGroupToGroup,p,a)
474 #define IDPLobbySP_AddPlayerToGroup(p,a)         ICOM_CALL1(AddPlayerToGroup,p,a)
475 #define IDPLobbySP_CreateGroup(p,a)              ICOM_CALL1(CreateGroup,p,a)
476 #define IDPLobbySP_CreateGroupInGroup(p,a)       ICOM_CALL1(CreateGroupInGroup,p,a)
477 #define IDPLobbySP_DeleteGroupFromGroup(p,a)     ICOM_CALL1(DeleteGroupFromGroup,p,a)
478 #define IDPLobbySP_DeletePlayerFromGroup(p,a)    ICOM_CALL1(DeletePlayerFromGroup,p,a)
479 #define IDPLobbySP_DestroyGroup(p,a)             ICOM_CALL1(DestroyGroup,p,a)
480 #define IDPLobbySP_EnumSessionsResponse(p,a)     ICOM_CALL1(EnumSessionsResponse,p,a)
481 #define IDPLobbySP_GetSPDataPointer(p,a)         ICOM_CALL1(GetSPDataPointer,p,a)
482 #define IDPLobbySP_HandleMessage(p,a)            ICOM_CALL1(HandleMessage,p,a)
483 #define IDPLobbySP_SetGroupName(p,a)             ICOM_CALL1(SetGroupName,p,a)
484 #define IDPLobbySP_SetPlayerName(p,a)            ICOM_CALL1(SetPlayerName,p,a)
485 #define IDPLobbySP_SetSessionDesc(p,a)           ICOM_CALL1(SetSessionDesc,p,a)
486 #define IDPLobbySP_StartSession(p,a)             ICOM_CALL1(StartSession,p,a)
487 #define IDPLobbySP_SetSPDataPointer(p,a)         ICOM_CALL1(SetSPDataPointer,p,a)
488
489 /* This variable is exported from the DLL at ordinal 6 to be accessed by the
490  * SP directly. This is the same variable that the DP SP will use.
491  */
492 extern DWORD gdwDPlaySPRefCount;
493
494 #endif