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