ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dplay.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) the Wine project
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00017  */
00018 
00019 #ifndef __WINE_DPLAY_H
00020 #define __WINE_DPLAY_H
00021 
00022 #include <ole2.h>
00023 
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif /* defined(__cplusplus) */
00027 
00028 typedef LPVOID (*LPRGLPVOID)[];
00029 typedef LPRGLPVOID PRGPVOID, LPRGPVOID, PRGLPVOID, PAPVOID, LPAPVOID, PALPVOID, LPALPVOID;
00030 
00031 #define VOL volatile
00032 typedef VOID * volatile LPVOIDV;
00033 
00034 
00035 /*****************************************************************************
00036  * Predeclare the interfaces
00037  */
00038 DEFINE_GUID(CLSID_DirectPlay,0xd1eb6d20, 0x8923, 0x11d0, 0x9d, 0x97, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
00039 
00040 DEFINE_GUID(IID_IDirectPlay, 0x5454e9a0, 0xdb65, 0x11ce, 0x92, 0x1c, 0x00, 0xaa, 0x00, 0x6c, 0x49, 0x72);
00041 typedef struct IDirectPlay *LPDIRECTPLAY;
00042 
00043 DEFINE_GUID(IID_IDirectPlay2, 0x2b74f7c0, 0x9154, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
00044 typedef struct IDirectPlay2 *LPDIRECTPLAY2;
00045 
00046 DEFINE_GUID(IID_IDirectPlay2A,0x9d460580, 0xa822, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82);
00047 typedef struct IDirectPlay2 IDirectPlay2A,*LPDIRECTPLAY2A;
00048 
00049 DEFINE_GUID(IID_IDirectPlay3, 0x133efe40, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
00050 typedef struct IDirectPlay3 *LPDIRECTPLAY3;
00051 
00052 DEFINE_GUID(IID_IDirectPlay3A,0x133efe41, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
00053 typedef struct IDirectPlay3 IDirectPlay3A,*LPDIRECTPLAY3A;
00054 
00055 DEFINE_GUID(IID_IDirectPlay4, 0xab1c530, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
00056 typedef struct IDirectPlay4 *LPDIRECTPLAY4;
00057 
00058 DEFINE_GUID(IID_IDirectPlay4A,0xab1c531, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
00059 typedef struct IDirectPlay4 IDirectPlay4A,*LPDIRECTPLAY4A;
00060 
00061 
00062 /*
00063  * GUIDS used by Service Providers shipped with DirectPlay
00064  * Use these to identify Service Provider returned by EnumConnections
00065  */
00066 
00067 /* GUID for IPX service provider {685BC400-9D2C-11cf-A9CD-00AA006886E3} */
00068 DEFINE_GUID(DPSPGUID_IPX, 0x685bc400, 0x9d2c, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
00069 
00070 /* GUID for TCP/IP service provider {36E95EE0-8577-11cf-960C-0080C7534E82} */
00071 DEFINE_GUID(DPSPGUID_TCPIP, 0x36E95EE0, 0x8577, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82);
00072 
00073 /* GUID for Serial service provider {0F1D6860-88D9-11cf-9C4E-00A0C905425E} */
00074 DEFINE_GUID(DPSPGUID_SERIAL, 0xf1d6860, 0x88d9, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
00075 
00076 /* GUID for Modem service provider {44EAA760-CB68-11cf-9C4E-00A0C905425E} */
00077 DEFINE_GUID(DPSPGUID_MODEM, 0x44eaa760, 0xcb68, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
00078 
00079 
00080 /*****************************************************************************
00081  * Miscellaneous
00082  */
00083 
00084 /* Return Values for Direct Play */
00085 #define _FACDP  0x877
00086 #define MAKE_DPHRESULT( code )    MAKE_HRESULT( 1, _FACDP, code )
00087 
00088 #define DP_OK                           S_OK
00089 #define DPERR_ALREADYINITIALIZED        MAKE_DPHRESULT(   5 )
00090 #define DPERR_ACCESSDENIED              MAKE_DPHRESULT(  10 )
00091 #define DPERR_ACTIVEPLAYERS             MAKE_DPHRESULT(  20 )
00092 #define DPERR_BUFFERTOOSMALL            MAKE_DPHRESULT(  30 )
00093 #define DPERR_CANTADDPLAYER             MAKE_DPHRESULT(  40 )
00094 #define DPERR_CANTCREATEGROUP           MAKE_DPHRESULT(  50 )
00095 #define DPERR_CANTCREATEPLAYER          MAKE_DPHRESULT(  60 )
00096 #define DPERR_CANTCREATESESSION         MAKE_DPHRESULT(  70 )
00097 #define DPERR_CAPSNOTAVAILABLEYET       MAKE_DPHRESULT(  80 )
00098 #define DPERR_EXCEPTION                 MAKE_DPHRESULT(  90 )
00099 #define DPERR_GENERIC                   E_FAIL
00100 #define DPERR_INVALIDFLAGS              MAKE_DPHRESULT( 120 )
00101 #define DPERR_INVALIDOBJECT             MAKE_DPHRESULT( 130 )
00102 #define DPERR_INVALIDPARAM              E_INVALIDARG
00103 #define DPERR_INVALIDPARAMS             DPERR_INVALIDPARAM
00104 #define DPERR_INVALIDPLAYER             MAKE_DPHRESULT( 150 )
00105 #define DPERR_INVALIDGROUP              MAKE_DPHRESULT( 155 )
00106 #define DPERR_NOCAPS                    MAKE_DPHRESULT( 160 )
00107 #define DPERR_NOCONNECTION              MAKE_DPHRESULT( 170 )
00108 #define DPERR_NOMEMORY                  E_OUTOFMEMORY
00109 #define DPERR_OUTOFMEMORY               DPERR_NOMEMORY
00110 #define DPERR_NOMESSAGES                MAKE_DPHRESULT( 190 )
00111 #define DPERR_NONAMESERVERFOUND         MAKE_DPHRESULT( 200 )
00112 #define DPERR_NOPLAYERS                 MAKE_DPHRESULT( 210 )
00113 #define DPERR_NOSESSIONS                MAKE_DPHRESULT( 220 )
00114 #define DPERR_PENDING                   E_PENDING
00115 #define DPERR_SENDTOOBIG                MAKE_DPHRESULT( 230 )
00116 #define DPERR_TIMEOUT                   MAKE_DPHRESULT( 240 )
00117 #define DPERR_UNAVAILABLE               MAKE_DPHRESULT( 250 )
00118 #define DPERR_UNSUPPORTED               E_NOTIMPL
00119 #define DPERR_BUSY                      MAKE_DPHRESULT( 270 )
00120 #define DPERR_USERCANCEL                MAKE_DPHRESULT( 280 )
00121 #define DPERR_NOINTERFACE               E_NOINTERFACE
00122 #define DPERR_CANNOTCREATESERVER        MAKE_DPHRESULT( 290 )
00123 #define DPERR_PLAYERLOST                MAKE_DPHRESULT( 300 )
00124 #define DPERR_SESSIONLOST               MAKE_DPHRESULT( 310 )
00125 #define DPERR_UNINITIALIZED             MAKE_DPHRESULT( 320 )
00126 #define DPERR_NONEWPLAYERS              MAKE_DPHRESULT( 330 )
00127 #define DPERR_INVALIDPASSWORD           MAKE_DPHRESULT( 340 )
00128 #define DPERR_CONNECTING                MAKE_DPHRESULT( 350 )
00129 #define DPERR_CONNECTIONLOST            MAKE_DPHRESULT( 360 )
00130 #define DPERR_UNKNOWNMESSAGE            MAKE_DPHRESULT( 370 )
00131 #define DPERR_CANCELFAILED              MAKE_DPHRESULT( 380 )
00132 #define DPERR_INVALIDPRIORITY           MAKE_DPHRESULT( 390 )
00133 #define DPERR_NOTHANDLED                MAKE_DPHRESULT( 400 )
00134 #define DPERR_CANCELLED                 MAKE_DPHRESULT( 410 )
00135 #define DPERR_ABORTED                   MAKE_DPHRESULT( 420 )
00136 #define DPERR_BUFFERTOOLARGE            MAKE_DPHRESULT( 1000 )
00137 #define DPERR_CANTCREATEPROCESS         MAKE_DPHRESULT( 1010 )
00138 #define DPERR_APPNOTSTARTED             MAKE_DPHRESULT( 1020 )
00139 #define DPERR_INVALIDINTERFACE          MAKE_DPHRESULT( 1030 )
00140 #define DPERR_NOSERVICEPROVIDER         MAKE_DPHRESULT( 1040 )
00141 #define DPERR_UNKNOWNAPPLICATION        MAKE_DPHRESULT( 1050 )
00142 #define DPERR_NOTLOBBIED                MAKE_DPHRESULT( 1070 )
00143 #define DPERR_SERVICEPROVIDERLOADED     MAKE_DPHRESULT( 1080 )
00144 #define DPERR_ALREADYREGISTERED         MAKE_DPHRESULT( 1090 )
00145 #define DPERR_NOTREGISTERED             MAKE_DPHRESULT( 1100 )
00146 #define DPERR_AUTHENTICATIONFAILED      MAKE_DPHRESULT( 2000 )
00147 #define DPERR_CANTLOADSSPI              MAKE_DPHRESULT( 2010 )
00148 #define DPERR_ENCRYPTIONFAILED          MAKE_DPHRESULT( 2020 )
00149 #define DPERR_SIGNFAILED                MAKE_DPHRESULT( 2030 )
00150 #define DPERR_CANTLOADSECURITYPACKAGE   MAKE_DPHRESULT( 2040 )
00151 #define DPERR_ENCRYPTIONNOTSUPPORTED    MAKE_DPHRESULT( 2050 )
00152 #define DPERR_CANTLOADCAPI              MAKE_DPHRESULT( 2060 )
00153 #define DPERR_NOTLOGGEDIN               MAKE_DPHRESULT( 2070 )
00154 #define DPERR_LOGONDENIED               MAKE_DPHRESULT( 2080 )
00155 
00156 
00157 /* DPID - DirectPlay player and group ID */
00158 typedef DWORD DPID, *LPDPID;
00159 
00160 /* DPID from whence originate messages - just an ID */
00161 #define DPID_SYSMSG             0           /* DPID of system */
00162 #define DPID_ALLPLAYERS         0           /* DPID of all players */
00163 #define DPID_SERVERPLAYER       1           /* DPID of the server player */
00164 #define DPID_UNKNOWN            0xFFFFFFFF  /* Player ID is unknown */
00165 
00166 /*  DPCAPS -  Used to obtain the capabilities of a DirectPlay object */
00167 typedef struct tagDPCAPS
00168 {
00169     DWORD dwSize;               /* Size of structure in bytes */
00170     DWORD dwFlags;
00171     DWORD dwMaxBufferSize;
00172     DWORD dwMaxQueueSize;       /* Obsolete. */
00173     DWORD dwMaxPlayers;         /* Maximum players/groups (local + remote) */
00174     DWORD dwHundredBaud;        /* Bandwidth in 100 bits per second units;
00175                                  * i.e. 24 is 2400, 96 is 9600, etc.
00176                                  */
00177     DWORD dwLatency;            /* Estimated latency; 0 = unknown */
00178     DWORD dwMaxLocalPlayers;    /* Maximum # of locally created players */
00179     DWORD dwHeaderLength;       /* Maximum header length in bytes */
00180     DWORD dwTimeout;            /* Service provider's suggested timeout value
00181                                  * This is how long DirectPlay will wait for
00182                                  * responses to system messages
00183                                  */
00184 } DPCAPS, *LPDPCAPS;
00185 
00186 typedef struct tagDPNAME
00187 {
00188     DWORD   dwSize;
00189     DWORD   dwFlags;            /* Not used must be 0 */
00190 
00191     union /*playerShortName */      /* Player's Handle? */
00192     {
00193         LPWSTR  lpszShortName;
00194         LPSTR   lpszShortNameA;
00195     };
00196 
00197     union /*playerLongName */       /* Player's formal/real name */
00198     {
00199         LPWSTR  lpszLongName;
00200         LPSTR   lpszLongNameA;
00201     };
00202 
00203 } DPNAME, *LPDPNAME;
00204 
00205 
00206 
00207 #define DPLONGNAMELEN     52
00208 #define DPSHORTNAMELEN    20
00209 #define DPSESSIONNAMELEN  32
00210 #define DPPASSWORDLEN     16
00211 #define DPUSERRESERVED    16
00212 
00213 typedef struct tagDPSESSIONDESC
00214 {
00215     DWORD   dwSize;
00216     GUID    guidSession;
00217     DWORD   dwSession;
00218     DWORD   dwMaxPlayers;
00219     DWORD   dwCurrentPlayers;
00220     DWORD   dwFlags;
00221     char    szSessionName[ DPSESSIONNAMELEN ];
00222     char    szUserField[ DPUSERRESERVED ];
00223     DWORD   dwReserved1;
00224     char    szPassword[ DPPASSWORDLEN ];
00225     DWORD   dwReserved2;
00226     DWORD   dwUser1;
00227     DWORD   dwUser2;
00228     DWORD   dwUser3;
00229     DWORD   dwUser4;
00230 } DPSESSIONDESC, *LPDPSESSIONDESC;
00231 
00232 typedef struct tagDPSESSIONDESC2
00233 {
00234     DWORD   dwSize;
00235     DWORD   dwFlags;
00236     GUID    guidInstance;
00237     GUID    guidApplication;   /* GUID of the DP application, GUID_NULL if
00238                                 * all applications! */
00239 
00240     DWORD   dwMaxPlayers;
00241     DWORD   dwCurrentPlayers;   /* (read only value) */
00242 
00243     union  /* Session name */
00244     {
00245         LPWSTR  lpszSessionName;
00246         LPSTR   lpszSessionNameA;
00247     };
00248 
00249     union  /* Optional password */
00250     {
00251         LPWSTR  lpszPassword;
00252         LPSTR   lpszPasswordA;
00253     };
00254 
00255     DWORD   dwReserved1;
00256     DWORD   dwReserved2;
00257 
00258     DWORD   dwUser1;        /* For use by the application */
00259     DWORD   dwUser2;
00260     DWORD   dwUser3;
00261     DWORD   dwUser4;
00262 } DPSESSIONDESC2, *LPDPSESSIONDESC2;
00263 
00264 
00265 typedef const DPSESSIONDESC2* LPCDPSESSIONDESC2;
00266 
00267 #define DPOPEN_JOIN                     0x00000001
00268 #define DPOPEN_CREATE                   0x00000002
00269 #define DPOPEN_RETURNSTATUS             DPENUMSESSIONS_RETURNSTATUS
00270 
00271 #define DPSESSION_NEWPLAYERSDISABLED    0x00000001
00272 #define DPSESSION_MIGRATEHOST           0x00000004
00273 #define DPSESSION_NOMESSAGEID           0x00000008
00274 #define DPSESSION_JOINDISABLED          0x00000020
00275 #define DPSESSION_KEEPALIVE             0x00000040
00276 #define DPSESSION_NODATAMESSAGES        0x00000080
00277 #define DPSESSION_SECURESERVER          0x00000100
00278 #define DPSESSION_PRIVATE               0x00000200
00279 #define DPSESSION_PASSWORDREQUIRED      0x00000400
00280 #define DPSESSION_MULTICASTSERVER       0x00000800
00281 #define DPSESSION_CLIENTSERVER          0x00001000
00282 
00283 typedef struct tagDPLCONNECTION
00284 {
00285     DWORD               dwSize;
00286     DWORD               dwFlags;
00287     LPDPSESSIONDESC2    lpSessionDesc;  /* Ptr to session desc to use for connect */
00288     LPDPNAME            lpPlayerName;   /* Ptr to player name structure */
00289     GUID                guidSP;         /* GUID of Service Provider to use */
00290     LPVOID              lpAddress;      /* Ptr to Address of Service Provider to use */
00291     DWORD               dwAddressSize;  /* Size of address data */
00292 } DPLCONNECTION, *LPDPLCONNECTION;
00293 
00294 /* DPLCONNECTION flags (for dwFlags) */
00295 #define DPLCONNECTION_CREATESESSION DPOPEN_CREATE
00296 #define DPLCONNECTION_JOINSESSION   DPOPEN_JOIN
00297 
00298 typedef struct tagDPCHAT
00299 {
00300     DWORD               dwSize;
00301     DWORD               dwFlags;
00302     union
00303     {                          /* Message string */
00304         LPWSTR  lpszMessage;   /* Unicode */
00305         LPSTR   lpszMessageA;  /* ANSI */
00306     } DUMMYUNIONNAME;
00307 } DPCHAT, *LPDPCHAT;
00308 
00309 typedef struct
00310 {
00311   UINT   len;
00312   PUCHAR pData;
00313 } SGBUFFER, *PSGBUFFER, *LPSGBUFFER;
00314 
00315 
00316 typedef struct tagDPSECURITYDESC
00317 {
00318     DWORD dwSize;                   /* Size of structure */
00319     DWORD dwFlags;                  /* Not used. Must be zero. */
00320     union
00321     {                               /* SSPI provider name */
00322         LPWSTR  lpszSSPIProvider;   /* Unicode */
00323         LPSTR   lpszSSPIProviderA;  /* ANSI */
00324     } DUMMYUNIONNAME1;
00325     union
00326     {                               /* CAPI provider name */
00327         LPWSTR lpszCAPIProvider;    /* Unicode */
00328         LPSTR  lpszCAPIProviderA;   /* ANSI */
00329     } DUMMYUNIONNAME2;
00330     DWORD dwCAPIProviderType;       /* Crypto Service Provider type */
00331     DWORD dwEncryptionAlgorithm;    /* Encryption Algorithm type */
00332 } DPSECURITYDESC, *LPDPSECURITYDESC;
00333 
00334 typedef const DPSECURITYDESC *LPCDPSECURITYDESC;
00335 
00336 typedef struct tagDPCREDENTIALS
00337 {
00338     DWORD dwSize;               /* Size of structure */
00339     DWORD dwFlags;              /* Not used. Must be zero. */
00340     union
00341     {                           /* User name of the account */
00342         LPWSTR  lpszUsername;   /* Unicode */
00343         LPSTR   lpszUsernameA;  /* ANSI */
00344     } DUMMYUNIONNAME1;
00345     union
00346     {                           /* Password of the account */
00347         LPWSTR  lpszPassword;   /* Unicode */
00348         LPSTR   lpszPasswordA;  /* ANSI */
00349     } DUMMYUNIONNAME2;
00350     union
00351     {                           /* Domain name of the account */
00352         LPWSTR  lpszDomain;     /* Unicode */
00353         LPSTR   lpszDomainA;    /* ANSI */
00354     } DUMMYUNIONNAME3;
00355 } DPCREDENTIALS, *LPDPCREDENTIALS;
00356 
00357 typedef const DPCREDENTIALS *LPCDPCREDENTIALS;
00358 
00359 
00360 
00361 typedef BOOL (CALLBACK *LPDPENUMDPCALLBACKW)(
00362     LPGUID      lpguidSP,
00363     LPWSTR      lpSPName,
00364     DWORD       dwMajorVersion,
00365     DWORD       dwMinorVersion,
00366     LPVOID      lpContext);
00367 
00368 typedef BOOL (CALLBACK *LPDPENUMDPCALLBACKA)(
00369     LPGUID      lpguidSP,
00370     LPSTR       lpSPName,       /* ptr to str w/ driver description */
00371     DWORD       dwMajorVersion, /* Major # of driver spec in lpguidSP */
00372     DWORD       dwMinorVersion, /* Minor # of driver spec in lpguidSP */
00373     LPVOID      lpContext);     /* User given */
00374 
00375 #ifndef __LPCGUID_DEFINED__
00376 #define __LPCGUID_DEFINED__
00377 typedef const GUID *LPCGUID;
00378 #endif
00379 
00380 typedef const DPNAME *LPCDPNAME;
00381 
00382 typedef BOOL (CALLBACK *LPDPENUMCONNECTIONSCALLBACK)(
00383     LPCGUID     lpguidSP,
00384     LPVOID      lpConnection,
00385     DWORD       dwConnectionSize,
00386     LPCDPNAME   lpName,
00387     DWORD       dwFlags,
00388     LPVOID      lpContext);
00389 
00390 typedef BOOL (CALLBACK *LPDPENUMSESSIONSCALLBACK)(
00391     LPDPSESSIONDESC lpDPSessionDesc,
00392     LPVOID      lpContext,
00393     LPDWORD     lpdwTimeOut,
00394     DWORD       dwFlags);
00395 
00396 
00397 extern HRESULT WINAPI DirectPlayEnumerateA( LPDPENUMDPCALLBACKA, LPVOID );
00398 extern HRESULT WINAPI DirectPlayEnumerateW( LPDPENUMDPCALLBACKW, LPVOID );
00399 extern HRESULT WINAPI DirectPlayCreate( LPGUID lpGUID, LPDIRECTPLAY2 *lplpDP, IUnknown *pUnk);
00400 
00401 typedef BOOL (CALLBACK *LPDPENUMPLAYERSCALLBACK)(
00402     DPID   dpId,
00403     LPSTR  lpFriendlyName,
00404     LPSTR  lpFormalName,
00405     DWORD  dwFlags,
00406     LPVOID          lpContext );
00407 
00408 typedef BOOL (CALLBACK *LPDPENUMPLAYERSCALLBACK2)(
00409     DPID            dpId,
00410     DWORD           dwPlayerType,
00411     LPCDPNAME       lpName,
00412     DWORD           dwFlags,
00413     LPVOID          lpContext );
00414 
00415 typedef BOOL (CALLBACK *LPDPENUMSESSIONSCALLBACK2)(
00416     LPCDPSESSIONDESC2   lpThisSD,
00417     LPDWORD             lpdwTimeOut,
00418     DWORD               dwFlags,
00419     LPVOID              lpContext );
00420 
00421 #define DPESC_TIMEDOUT          0x00000001
00422 
00423 /*****************************************************************************
00424  * IDirectPlay interface
00425  */
00426 #define INTERFACE IDirectPlay
00427 DECLARE_INTERFACE_(IDirectPlay,IUnknown)
00428 {
00429     /*** IUnknown methods ***/
00430     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00431     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00432     STDMETHOD_(ULONG,Release)(THIS) PURE;
00433     /*** IDirectPlay methods ***/
00434     STDMETHOD(AddPlayerToGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
00435     STDMETHOD(Close)(THIS) PURE;
00436     STDMETHOD(CreatePlayer)(THIS_ LPDPID lpidPlayer, LPSTR lpPlayerName, LPSTR, LPHANDLE) PURE;
00437     STDMETHOD(CreateGroup)(THIS_ LPDPID lpidGroup, LPSTR lpGroupName, LPSTR) PURE;
00438     STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
00439     STDMETHOD(DestroyPlayer)(THIS_ DPID idPlayer) PURE;
00440     STDMETHOD(DestroyGroup)(THIS_ DPID idGroup) PURE;
00441     STDMETHOD(EnableNewPlayers)(THIS_ BOOL) PURE;
00442     STDMETHOD(EnumGroupPlayers)(THIS_ DPID idGroup, LPDPENUMPLAYERSCALLBACK lpEnumPlayersCallback, LPVOID lpContext, DWORD dwFlags) PURE;
00443     STDMETHOD(EnumGroups)(THIS_ DWORD, LPDPENUMPLAYERSCALLBACK lpEnumPlayersCallback, LPVOID lpContext, DWORD dwFlags) PURE;
00444     STDMETHOD(EnumPlayers)(THIS_ DWORD, LPDPENUMPLAYERSCALLBACK lpEnumPlayersCallback, LPVOID lpContext, DWORD dwFlags) PURE;
00445     STDMETHOD(EnumSessions)(THIS_ LPDPSESSIONDESC lpsd, DWORD dwTimeout, LPDPENUMSESSIONSCALLBACK lpEnumSessionsCallback, LPVOID lpContext, DWORD dwFlags) PURE;
00446     STDMETHOD(GetCaps)(THIS_ LPDPCAPS lpDPCaps) PURE;
00447     STDMETHOD(GetMessageCount)(THIS_ DPID idPlayer, LPDWORD lpdwCount) PURE;
00448     STDMETHOD(GetPlayerCaps)(THIS_ DPID idPlayer, LPDPCAPS lpPlayerCaps) PURE;
00449     STDMETHOD(GetPlayerName)(THIS_ DPID idPlayer, LPSTR, LPDWORD, LPSTR, LPDWORD) PURE;
00450     STDMETHOD(Initialize)(THIS_ LPGUID lpGUID) PURE;
00451     STDMETHOD(Open)(THIS_ LPDPSESSIONDESC lpsd) PURE;
00452     STDMETHOD(Receive)(THIS_ LPDPID lpidFrom, LPDPID lpidTo, DWORD dwFlags, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00453     STDMETHOD(SaveSession)(THIS_ LPSTR) PURE;
00454     STDMETHOD(Send)(THIS_ DPID idFrom, DPID idTo, DWORD dwFlags, LPVOID lpData, DWORD dwDataSize) PURE;
00455     STDMETHOD(SetPlayerName)(THIS_ DPID idPlayer, LPSTR lpPlayerName, LPSTR) PURE;
00456 };
00457 #undef INTERFACE
00458 
00459 #if !defined(__cplusplus) || defined(CINTERFACE)
00460 /*** IUnknown methods ***/
00461 #define IDirectPlay_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00462 #define IDirectPlay_AddRef(p)             (p)->lpVtbl->AddRef(p)
00463 #define IDirectPlay_Release(p)            (p)->lpVtbl->Release(p)
00464 /*** IDirectPlay methods ***/
00465 #define IDirectPlay_AddPlayerToGroup(p,a,b)      (p)->lpVtbl->AddPlayerToGroup(p,a,b)
00466 #define IDirectPlay_Close(p)                     (p)->lpVtbl->Close(p)
00467 #define IDirectPlay_CreatePlayer(p,a,b,c,d)      (p)->lpVtbl->CreatePlayer(p,a,b,c,d)
00468 #define IDirectPlay_CreateGroup(p,a,b,c)         (p)->lpVtbl->CreateGroup(p,a,b,c)
00469 #define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
00470 #define IDirectPlay_DestroyPlayer(p,a)           (p)->lpVtbl->DestroyPlayer(p,a)
00471 #define IDirectPlay_DestroyGroup(p,a)            (p)->lpVtbl->DestroyGroup(p,a)
00472 #define IDirectPlay_EnableNewPlayers(p,a)        (p)->lpVtbl->EnableNewPlayers(p,a)
00473 #define IDirectPlay_EnumGroupPlayers(p,a,b,c,d)  (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d)
00474 #define IDirectPlay_EnumGroups(p,a,b,c,d)        (p)->lpVtbl->EnumGroups(p,a,b,c,d)
00475 #define IDirectPlay_EnumPlayers(p,a,b,c,d)       (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
00476 #define IDirectPlay_EnumSessions(p,a,b,c,d,e)    (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
00477 #define IDirectPlay_GetCaps(p,a)                 (p)->lpVtbl->GetCaps(p,a)
00478 #define IDirectPlay_GetMessageCount(p,a,b)       (p)->lpVtbl->GetMessageCount(p,a,b)
00479 #define IDirectPlay_GetPlayerCaps(p,a,b)         (p)->lpVtbl->GetPlayerCaps(p,a,b)
00480 #define IDirectPlay_GetPlayerName(p,a,b,c,d,e)   (p)->lpVtbl->GetPlayerName(p,a,b,c,d,e)
00481 #define IDirectPlay_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
00482 #define IDirectPlay_Open(p,a)                    (p)->lpVtbl->Open(p,a)
00483 #define IDirectPlay_Receive(p,a,b,c,d,e)         (p)->lpVtbl->Receive(p,a,b,c,d,e)
00484 #define IDirectPlay_SaveSession(p,a)             (p)->lpVtbl->SaveSession(p,a)
00485 #define IDirectPlay_Send(p,a,b,c,d,e)            (p)->lpVtbl->Send(p,a,b,c,d,e)
00486 #define IDirectPlay_SetPlayerName(p,a,b,c)       (p)->lpVtbl->SetPlayerName(p,a,b,c)
00487 #else
00488 /*** IUnknown methods ***/
00489 #define IDirectPlay_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
00490 #define IDirectPlay_AddRef(p)             (p)->AddRef()
00491 #define IDirectPlay_Release(p)            (p)->Release()
00492 /*** IDirectPlay methods ***/
00493 #define IDirectPlay_AddPlayerToGroup(p,a,b)      (p)->AddPlayerToGroup(a,b)
00494 #define IDirectPlay_Close(p)                     (p)->Close()
00495 #define IDirectPlay_CreatePlayer(p,a,b,c,d)      (p)->CreatePlayer(a,b,c,d)
00496 #define IDirectPlay_CreateGroup(p,a,b,c)         (p)->CreateGroup(a,b,c)
00497 #define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b)
00498 #define IDirectPlay_DestroyPlayer(p,a)           (p)->DestroyPlayer(a)
00499 #define IDirectPlay_DestroyGroup(p,a)            (p)->DestroyGroup(a)
00500 #define IDirectPlay_EnableNewPlayers(p,a)        (p)->EnableNewPlayers(a)
00501 #define IDirectPlay_EnumGroupPlayers(p,a,b,c,d)  (p)->EnumGroupPlayers(a,b,c,d)
00502 #define IDirectPlay_EnumGroups(p,a,b,c,d)        (p)->EnumGroups(a,b,c,d)
00503 #define IDirectPlay_EnumPlayers(p,a,b,c,d)       (p)->EnumPlayers(a,b,c,d)
00504 #define IDirectPlay_EnumSessions(p,a,b,c,d,e)    (p)->EnumSessions(a,b,c,d,e)
00505 #define IDirectPlay_GetCaps(p,a)                 (p)->GetCaps(a)
00506 #define IDirectPlay_GetMessageCount(p,a,b)       (p)->GetMessageCount(a,b)
00507 #define IDirectPlay_GetPlayerCaps(p,a,b)         (p)->GetPlayerCaps(a,b)
00508 #define IDirectPlay_GetPlayerName(p,a,b,c,d,e)   (p)->GetPlayerName(a,b,c,d,e)
00509 #define IDirectPlay_Initialize(p,a)              (p)->Initialize(a)
00510 #define IDirectPlay_Open(p,a)                    (p)->Open(a)
00511 #define IDirectPlay_Receive(p,a,b,c,d,e)         (p)->Receive(a,b,c,d,e)
00512 #define IDirectPlay_SaveSession(p,a)             (p)->SaveSession(a)
00513 #define IDirectPlay_Send(p,a,b,c,d,e)            (p)->Send(a,b,c,d,e)
00514 #define IDirectPlay_SetPlayerName(p,a,b,c)       (p)->SetPlayerName(a,b,c)
00515 #endif
00516 
00517 
00518 /*****************************************************************************
00519  * IDirectPlay2 and IDirectPlay2A interface
00520  */
00521 #define INTERFACE IDirectPlay2
00522 DECLARE_INTERFACE_(IDirectPlay2,IUnknown)
00523 {
00524     /*** IUnknown methods ***/
00525     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00526     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00527     STDMETHOD_(ULONG,Release)(THIS) PURE;
00528     /*** IDirectPlay2 methods ***/
00529     STDMETHOD(AddPlayerToGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
00530     STDMETHOD(Close)(THIS) PURE;
00531     STDMETHOD(CreateGroup)(THIS_ LPDPID lpidGroup, LPDPNAME lpGroupName, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00532     STDMETHOD(CreatePlayer)(THIS_ LPDPID lpidPlayer, LPDPNAME lpPlayerName, HANDLE hEvent, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00533     STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
00534     STDMETHOD(DestroyGroup)(THIS_ DPID idGroup) PURE;
00535     STDMETHOD(DestroyPlayer)(THIS_ DPID idPlayer) PURE;
00536     STDMETHOD(EnumGroupPlayers)(THIS_ DPID idGroup, LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
00537     STDMETHOD(EnumGroups)(THIS_ LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
00538     STDMETHOD(EnumPlayers)(THIS_ LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
00539     STDMETHOD(EnumSessions)(THIS_ LPDPSESSIONDESC2 lpsd, DWORD dwTimeout, LPDPENUMSESSIONSCALLBACK2 lpEnumSessionsCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
00540     STDMETHOD(GetCaps)(THIS_ LPDPCAPS lpDPCaps, DWORD dwFlags) PURE;
00541     STDMETHOD(GetGroupData)(THIS_ DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize, DWORD dwFlags) PURE;
00542     STDMETHOD(GetGroupName)(THIS_ DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00543     STDMETHOD(GetMessageCount)(THIS_ DPID idPlayer, LPDWORD lpdwCount) PURE;
00544     STDMETHOD(GetPlayerAddress)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00545     STDMETHOD(GetPlayerCaps)(THIS_ DPID idPlayer, LPDPCAPS lpPlayerCaps, DWORD dwFlags) PURE;
00546     STDMETHOD(GetPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize, DWORD dwFlags) PURE;
00547     STDMETHOD(GetPlayerName)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00548     STDMETHOD(GetSessionDesc)(THIS_ LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00549     STDMETHOD(Initialize)(THIS_ LPGUID lpGUID) PURE;
00550     STDMETHOD(Open)(THIS_ LPDPSESSIONDESC2 lpsd, DWORD dwFlags) PURE;
00551     STDMETHOD(Receive)(THIS_ LPDPID lpidFrom, LPDPID lpidTo, DWORD dwFlags, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00552     STDMETHOD(Send)(THIS_ DPID idFrom, DPID idTo, DWORD dwFlags, LPVOID lpData, DWORD dwDataSize) PURE;
00553     STDMETHOD(SetGroupData)(THIS_ DPID idGroup, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00554     STDMETHOD(SetGroupName)(THIS_ DPID idGroup, LPDPNAME lpGroupName, DWORD dwFlags) PURE;
00555     STDMETHOD(SetPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00556     STDMETHOD(SetPlayerName)(THIS_ DPID idPlayer, LPDPNAME lpPlayerName, DWORD dwFlags) PURE;
00557     STDMETHOD(SetSessionDesc)(THIS_ LPDPSESSIONDESC2 lpSessDesc, DWORD dwFlags) PURE;
00558 };
00559 #undef INTERFACE
00560 
00561 #if !defined(__cplusplus) || defined(CINTERFACE)
00562 /*** IUnknown methods ***/
00563 #define IDirectPlay2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00564 #define IDirectPlay2_AddRef(p)             (p)->lpVtbl->AddRef(p)
00565 #define IDirectPlay2_Release(p)            (p)->lpVtbl->Release(p)
00566 /*** IDirectPlay2 methods ***/
00567 #define IDirectPlay2_AddPlayerToGroup(p,a,b)       (p)->lpVtbl->AddPlayerToGroup(p,a,b)
00568 #define IDirectPlay2_Close(p)                      (p)->lpVtbl->Close(p)
00569 #define IDirectPlay2_CreateGroup(p,a,b,c,d,e)      (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
00570 #define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f)   (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
00571 #define IDirectPlay2_DeletePlayerFromGroup(p,a,b)  (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
00572 #define IDirectPlay2_DestroyGroup(p,a)             (p)->lpVtbl->DestroyGroup(p,a)
00573 #define IDirectPlay2_DestroyPlayer(p,a)            (p)->lpVtbl->DestroyPlayer(p,a)
00574 #define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
00575 #define IDirectPlay2_EnumGroups(p,a,b,c,d)         (p)->lpVtbl->EnumGroups(p,a,b,c,d)
00576 #define IDirectPlay2_EnumPlayers(p,a,b,c,d)        (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
00577 #define IDirectPlay2_EnumSessions(p,a,b,c,d,e)     (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
00578 #define IDirectPlay2_GetCaps(p,a,b)                (p)->lpVtbl->GetCaps(p,a,b)
00579 #define IDirectPlay2_GetGroupData(p,a,b,c,d)       (p)->lpVtbl->GetGroupData(p,a,b,c,d)
00580 #define IDirectPlay2_GetGroupName(p,a,b,c)         (p)->lpVtbl->GetGroupName(p,a,b,c)
00581 #define IDirectPlay2_GetMessageCount(p,a,b)        (p)->lpVtbl->GetMessageCount(p,a,b)
00582 #define IDirectPlay2_GetPlayerAddress(p,a,b,c)     (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
00583 #define IDirectPlay2_GetPlayerCaps(p,a,b,c)        (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
00584 #define IDirectPlay2_GetPlayerData(p,a,b,c,d)      (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
00585 #define IDirectPlay2_GetPlayerName(p,a,b,c)        (p)->lpVtbl->GetPlayerName(p,a,b,c)
00586 #define IDirectPlay2_GetSessionDesc(p,a,b)         (p)->lpVtbl->GetSessionDesc(p,a,b)
00587 #define IDirectPlay2_Initialize(p,a)               (p)->lpVtbl->Initialize(p,a)
00588 #define IDirectPlay2_Open(p,a,b)                   (p)->lpVtbl->Open(p,a,b)
00589 #define IDirectPlay2_Receive(p,a,b,c,d,e)          (p)->lpVtbl->Receive(p,a,b,c,d,e)
00590 #define IDirectPlay2_Send(p,a,b,c,d,e)             (p)->lpVtbl->Send(p,a,b,c,d,e)
00591 #define IDirectPlay2_SetGroupData(p,a,b,c,d)       (p)->lpVtbl->SetGroupData(p,a,b,c,d)
00592 #define IDirectPlay2_SetGroupName(p,a,b,c)         (p)->lpVtbl->SetGroupName(p,a,b,c)
00593 #define IDirectPlay2_SetPlayerData(p,a,b,c,d)      (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
00594 #define IDirectPlay2_SetPlayerName(p,a,b,c)        (p)->lpVtbl->SetPlayerName(p,a,b,c)
00595 #define IDirectPlay2_SetSessionDesc(p,a,b)         (p)->lpVtbl->SetSessionDesc(p,a,b)
00596 #else
00597 /*** IUnknown methods ***/
00598 #define IDirectPlay2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
00599 #define IDirectPlay2_AddRef(p)             (p)->AddRef()
00600 #define IDirectPlay2_Release(p)            (p)->Release()
00601 /*** IDirectPlay2 methods ***/
00602 #define IDirectPlay2_AddPlayerToGroup(p,a,b)       (p)->AddPlayerToGroup(a,b)
00603 #define IDirectPlay2_Close(p)                      (p)->Close()
00604 #define IDirectPlay2_CreateGroup(p,a,b,c,d,e)      (p)->CreateGroup(a,b,c,d,e)
00605 #define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f)   (p)->CreatePlayer(a,b,c,d,e,f)
00606 #define IDirectPlay2_DeletePlayerFromGroup(p,a,b)  (p)->DeletePlayerFromGroup(a,b)
00607 #define IDirectPlay2_DestroyGroup(p,a)             (p)->DestroyGroup(a)
00608 #define IDirectPlay2_DestroyPlayer(p,a)            (p)->DestroyPlayer(a)
00609 #define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e)
00610 #define IDirectPlay2_EnumGroups(p,a,b,c,d)         (p)->EnumGroups(a,b,c,d)
00611 #define IDirectPlay2_EnumPlayers(p,a,b,c,d)        (p)->EnumPlayers(a,b,c,d)
00612 #define IDirectPlay2_EnumSessions(p,a,b,c,d,e)     (p)->EnumSessions(a,b,c,d,e)
00613 #define IDirectPlay2_GetCaps(p,a,b)                (p)->GetCaps(a,b)
00614 #define IDirectPlay2_GetGroupData(p,a,b,c,d)       (p)->GetGroupData(a,b,c,d)
00615 #define IDirectPlay2_GetGroupName(p,a,b,c)         (p)->GetGroupName(a,b,c)
00616 #define IDirectPlay2_GetMessageCount(p,a,b)        (p)->GetMessageCount(a,b)
00617 #define IDirectPlay2_GetPlayerAddress(p,a,b,c)     (p)->GetPlayerAddress(a,b,c)
00618 #define IDirectPlay2_GetPlayerCaps(p,a,b,c)        (p)->GetPlayerCaps(a,b,c)
00619 #define IDirectPlay2_GetPlayerData(p,a,b,c,d)      (p)->GetPlayerData(a,b,c,d)
00620 #define IDirectPlay2_GetPlayerName(p,a,b,c)        (p)->GetPlayerName(a,b,c)
00621 #define IDirectPlay2_GetSessionDesc(p,a,b)         (p)->GetSessionDesc(a,b)
00622 #define IDirectPlay2_Initialize(p,a)               (p)->Initialize(a)
00623 #define IDirectPlay2_Open(p,a,b)                   (p)->Open(a,b)
00624 #define IDirectPlay2_Receive(p,a,b,c,d,e)          (p)->Receive(a,b,c,d,e)
00625 #define IDirectPlay2_Send(p,a,b,c,d,e)             (p)->Send(a,b,c,d,e)
00626 #define IDirectPlay2_SetGroupData(p,a,b,c,d)       (p)->SetGroupData(a,b,c,d)
00627 #define IDirectPlay2_SetGroupName(p,a,b,c)         (p)->SetGroupName(a,b,c)
00628 #define IDirectPlay2_SetPlayerData(p,a,b,c,d)      (p)->SetPlayerData(a,b,c,d)
00629 #define IDirectPlay2_SetPlayerName(p,a,b,c)        (p)->SetPlayerName(a,b,c)
00630 #define IDirectPlay2_SetSessionDesc(p,a,b)         (p)->SetSessionDesc(a,b)
00631 #endif
00632 
00633 
00634 /*****************************************************************************
00635  * IDirectPlay3 and IDirectPlay3A interface
00636  */
00637 #define INTERFACE IDirectPlay3
00638 DECLARE_INTERFACE_(IDirectPlay3,IDirectPlay2)
00639 {
00640     /*** IUnknown methods ***/
00641     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00642     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00643     STDMETHOD_(ULONG,Release)(THIS) PURE;
00644     /*** IDirectPlay2 methods ***/
00645     STDMETHOD(AddPlayerToGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
00646     STDMETHOD(Close)(THIS) PURE;
00647     STDMETHOD(CreateGroup)(THIS_ LPDPID lpidGroup, LPDPNAME lpGroupName, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00648     STDMETHOD(CreatePlayer)(THIS_ LPDPID lpidPlayer, LPDPNAME lpPlayerName, HANDLE hEvent, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00649     STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
00650     STDMETHOD(DestroyGroup)(THIS_ DPID idGroup) PURE;
00651     STDMETHOD(DestroyPlayer)(THIS_ DPID idPlayer) PURE;
00652     STDMETHOD(EnumGroupPlayers)(THIS_ DPID idGroup, LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
00653     STDMETHOD(EnumGroups)(THIS_ LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
00654     STDMETHOD(EnumPlayers)(THIS_ LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
00655     STDMETHOD(EnumSessions)(THIS_ LPDPSESSIONDESC2 lpsd, DWORD dwTimeout, LPDPENUMSESSIONSCALLBACK2 lpEnumSessionsCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
00656     STDMETHOD(GetCaps)(THIS_ LPDPCAPS lpDPCaps, DWORD dwFlags) PURE;
00657     STDMETHOD(GetGroupData)(THIS_ DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize, DWORD dwFlags) PURE;
00658     STDMETHOD(GetGroupName)(THIS_ DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00659     STDMETHOD(GetMessageCount)(THIS_ DPID idPlayer, LPDWORD lpdwCount) PURE;
00660     STDMETHOD(GetPlayerAddress)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00661     STDMETHOD(GetPlayerCaps)(THIS_ DPID idPlayer, LPDPCAPS lpPlayerCaps, DWORD dwFlags) PURE;
00662     STDMETHOD(GetPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize, DWORD dwFlags) PURE;
00663     STDMETHOD(GetPlayerName)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00664     STDMETHOD(GetSessionDesc)(THIS_ LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00665     STDMETHOD(Initialize)(THIS_ LPGUID lpGUID) PURE;
00666     STDMETHOD(Open)(THIS_ LPDPSESSIONDESC2 lpsd, DWORD dwFlags) PURE;
00667     STDMETHOD(Receive)(THIS_ LPDPID lpidFrom, LPDPID lpidTo, DWORD dwFlags, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00668     STDMETHOD(Send)(THIS_ DPID idFrom, DPID idTo, DWORD dwFlags, LPVOID lpData, DWORD dwDataSize) PURE;
00669     STDMETHOD(SetGroupData)(THIS_ DPID idGroup, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00670     STDMETHOD(SetGroupName)(THIS_ DPID idGroup, LPDPNAME lpGroupName, DWORD dwFlags) PURE;
00671     STDMETHOD(SetPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00672     STDMETHOD(SetPlayerName)(THIS_ DPID idPlayer, LPDPNAME lpPlayerName, DWORD dwFlags) PURE;
00673     STDMETHOD(SetSessionDesc)(THIS_ LPDPSESSIONDESC2 lpSessDesc, DWORD dwFlags) PURE;
00674     /*** IDirectPlay3 methods ***/
00675     STDMETHOD(AddGroupToGroup)(THIS_ DPID idParentGroup, DPID idGroup) PURE;
00676     STDMETHOD(CreateGroupInGroup)(THIS_ DPID idParentGroup, LPDPID lpidGroup, LPDPNAME lpGroupName, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00677     STDMETHOD(DeleteGroupFromGroup)(THIS_ DPID idParentGroup, DPID idGroup) PURE;
00678     STDMETHOD(EnumConnections)(THIS_ LPCGUID lpguidApplication, LPDPENUMCONNECTIONSCALLBACK lpEnumCallback, LPVOID lpContext, DWORD dwFlags) PURE;
00679     STDMETHOD(EnumGroupsInGroup)(THIS_ DPID idGroup, LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumCallback, LPVOID lpContext, DWORD dwFlags) PURE;
00680     STDMETHOD(GetGroupConnectionSettings)(THIS_ DWORD dwFlags, DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00681     STDMETHOD(InitializeConnection)(THIS_ LPVOID lpConnection, DWORD dwFlags) PURE;
00682     STDMETHOD(SecureOpen)(THIS_ LPCDPSESSIONDESC2 lpsd, DWORD dwFlags, LPCDPSECURITYDESC lpSecurity, LPCDPCREDENTIALS lpCredentials) PURE;
00683     STDMETHOD(SendChatMessage)(THIS_ DPID idFrom, DPID idTo, DWORD dwFlags, LPDPCHAT lpChatMessage) PURE;
00684     STDMETHOD(SetGroupConnectionSettings)(THIS_ DWORD dwFlags, DPID idGroup, LPDPLCONNECTION lpConnection) PURE;
00685     STDMETHOD(StartSession)(THIS_ DWORD dwFlags, DPID idGroup) PURE;
00686     STDMETHOD(GetGroupFlags)(THIS_ DPID idGroup, LPDWORD lpdwFlags) PURE;
00687     STDMETHOD(GetGroupParent)(THIS_ DPID idGroup, LPDPID lpidParent) PURE;
00688     STDMETHOD(GetPlayerAccount)(THIS_ DPID idPlayer, DWORD dwFlags, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00689     STDMETHOD(GetPlayerFlags)(THIS_ DPID idPlayer, LPDWORD lpdwFlags) PURE;
00690 };
00691 #undef INTERFACE
00692 
00693 #if !defined(__cplusplus) || defined(CINTERFACE)
00694 /*** IUnknown methods ***/
00695 #define IDirectPlay3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00696 #define IDirectPlay3_AddRef(p)             (p)->lpVtbl->AddRef(p)
00697 #define IDirectPlay3_Release(p)            (p)->lpVtbl->Release(p)
00698 /*** IDirectPlay2 methods ***/
00699 #define IDirectPlay3_AddPlayerToGroup(p,a,b)       (p)->lpVtbl->AddPlayerToGroup(p,a,b)
00700 #define IDirectPlay3_Close(p)                      (p)->lpVtbl->Close(p)
00701 #define IDirectPlay3_CreateGroup(p,a,b,c,d,e)      (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
00702 #define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f)   (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
00703 #define IDirectPlay3_DeletePlayerFromGroup(p,a,b)  (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
00704 #define IDirectPlay3_DestroyGroup(p,a)             (p)->lpVtbl->DestroyGroup(p,a)
00705 #define IDirectPlay3_DestroyPlayer(p,a)            (p)->lpVtbl->DestroyPlayer(p,a)
00706 #define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
00707 #define IDirectPlay3_EnumGroups(p,a,b,c,d)         (p)->lpVtbl->EnumGroups(p,a,b,c,d)
00708 #define IDirectPlay3_EnumPlayers(p,a,b,c,d)        (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
00709 #define IDirectPlay3_EnumSessions(p,a,b,c,d,e)     (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
00710 #define IDirectPlay3_GetCaps(p,a,b)                (p)->lpVtbl->GetCaps(p,a,b)
00711 #define IDirectPlay3_GetGroupData(p,a,b,c,d)       (p)->lpVtbl->GetGroupData(p,a,b,c,d)
00712 #define IDirectPlay3_GetGroupName(p,a,b,c)         (p)->lpVtbl->GetGroupName(p,a,b,c)
00713 #define IDirectPlay3_GetMessageCount(p,a,b)        (p)->lpVtbl->GetMessageCount(p,a,b)
00714 #define IDirectPlay3_GetPlayerAddress(p,a,b,c)     (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
00715 #define IDirectPlay3_GetPlayerCaps(p,a,b,c)        (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
00716 #define IDirectPlay3_GetPlayerData(p,a,b,c,d)      (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
00717 #define IDirectPlay3_GetPlayerName(p,a,b,c)        (p)->lpVtbl->GetPlayerName(p,a,b,c)
00718 #define IDirectPlay3_GetSessionDesc(p,a,b)         (p)->lpVtbl->GetSessionDesc(p,a,b)
00719 #define IDirectPlay3_Initialize(p,a)               (p)->lpVtbl->Initialize(p,a)
00720 #define IDirectPlay3_Open(p,a,b)                   (p)->lpVtbl->Open(p,a,b)
00721 #define IDirectPlay3_Receive(p,a,b,c,d,e)          (p)->lpVtbl->Receive(p,a,b,c,d,e)
00722 #define IDirectPlay3_Send(p,a,b,c,d,e)             (p)->lpVtbl->Send(p,a,b,c,d,e)
00723 #define IDirectPlay3_SetGroupData(p,a,b,c,d)       (p)->lpVtbl->SetGroupData(p,a,b,c,d)
00724 #define IDirectPlay3_SetGroupName(p,a,b,c)         (p)->lpVtbl->SetGroupName(p,a,b,c)
00725 #define IDirectPlay3_SetPlayerData(p,a,b,c,d)      (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
00726 #define IDirectPlay3_SetPlayerName(p,a,b,c)        (p)->lpVtbl->SetPlayerName(p,a,b,c)
00727 #define IDirectPlay3_SetSessionDesc(p,a,b)         (p)->lpVtbl->SetSessionDesc(p,a,b)
00728 /*** IDirectPlay3 methods ***/
00729 #define IDirectPlay3_AddGroupToGroup(p,a,b)                (p)->lpVtbl->AddGroupToGroup(p,a,b)
00730 #define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f)     (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f)
00731 #define IDirectPlay3_DeleteGroupFromGroup(p,a,b)           (p)->lpVtbl->DeleteGroupFromGroup(p,a,b)
00732 #define IDirectPlay3_EnumConnections(p,a,b,c,d)            (p)->lpVtbl->EnumConnections(p,a,b,c,d)
00733 #define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e)        (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e)
00734 #define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d)
00735 #define IDirectPlay3_InitializeConnection(p,a,b)           (p)->lpVtbl->InitializeConnection(p,a,b)
00736 #define IDirectPlay3_SecureOpen(p,a,b,c,d)                 (p)->lpVtbl->SecureOpen(p,a,b,c,d)
00737 #define IDirectPlay3_SendChatMessage(p,a,b,c,d)            (p)->lpVtbl->SendChatMessage(p,a,b,c,d)
00738 #define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c)   (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c)
00739 #define IDirectPlay3_StartSession(p,a,b)                   (p)->lpVtbl->StartSession(p,a,b)
00740 #define IDirectPlay3_GetGroupFlags(p,a,b)                  (p)->lpVtbl->GetGroupFlags(p,a,b)
00741 #define IDirectPlay3_GetGroupParent(p,a,b)                 (p)->lpVtbl->GetGroupParent(p,a,b)
00742 #define IDirectPlay3_GetPlayerAccount(p,a,b,c,d)           (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d)
00743 #define IDirectPlay3_GetPlayerFlags(p,a,b)                 (p)->lpVtbl->GetPlayerFlags(p,a,b)
00744 #else
00745 /*** IUnknown methods ***/
00746 #define IDirectPlay3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
00747 #define IDirectPlay3_AddRef(p)             (p)->AddRef()
00748 #define IDirectPlay3_Release(p)            (p)->Release()
00749 /*** IDirectPlay2 methods ***/
00750 #define IDirectPlay3_AddPlayerToGroup(p,a,b)       (p)->AddPlayerToGroup(a,b)
00751 #define IDirectPlay3_Close(p)                      (p)->Close()
00752 #define IDirectPlay3_CreateGroup(p,a,b,c,d,e)      (p)->CreateGroup(a,b,c,d,e)
00753 #define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f)   (p)->CreatePlayer(a,b,c,d,e,f)
00754 #define IDirectPlay3_DeletePlayerFromGroup(p,a,b)  (p)->DeletePlayerFromGroup(a,b)
00755 #define IDirectPlay3_DestroyGroup(p,a)             (p)->DestroyGroup(a)
00756 #define IDirectPlay3_DestroyPlayer(p,a)            (p)->DestroyPlayer(a)
00757 #define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e)
00758 #define IDirectPlay3_EnumGroups(p,a,b,c,d)         (p)->EnumGroups(a,b,c,d)
00759 #define IDirectPlay3_EnumPlayers(p,a,b,c,d)        (p)->EnumPlayers(a,b,c,d)
00760 #define IDirectPlay3_EnumSessions(p,a,b,c,d,e)     (p)->EnumSessions(a,b,c,d,e)
00761 #define IDirectPlay3_GetCaps(p,a,b)                (p)->GetCaps(a,b)
00762 #define IDirectPlay3_GetGroupData(p,a,b,c,d)       (p)->GetGroupData(a,b,c,d)
00763 #define IDirectPlay3_GetGroupName(p,a,b,c)         (p)->GetGroupName(a,b,c)
00764 #define IDirectPlay3_GetMessageCount(p,a,b)        (p)->GetMessageCount(a,b)
00765 #define IDirectPlay3_GetPlayerAddress(p,a,b,c)     (p)->GetPlayerAddress(a,b,c)
00766 #define IDirectPlay3_GetPlayerCaps(p,a,b,c)        (p)->GetPlayerCaps(a,b,c)
00767 #define IDirectPlay3_GetPlayerData(p,a,b,c,d)      (p)->GetPlayerData(a,b,c,d)
00768 #define IDirectPlay3_GetPlayerName(p,a,b,c)        (p)->GetPlayerName(a,b,c)
00769 #define IDirectPlay3_GetSessionDesc(p,a,b)         (p)->GetSessionDesc(a,b)
00770 #define IDirectPlay3_Initialize(p,a)               (p)->Initialize(a)
00771 #define IDirectPlay3_Open(p,a,b)                   (p)->Open(a,b)
00772 #define IDirectPlay3_Receive(p,a,b,c,d,e)          (p)->Receive(a,b,c,d,e)
00773 #define IDirectPlay3_Send(p,a,b,c,d,e)             (p)->Send(a,b,c,d,e)
00774 #define IDirectPlay3_SetGroupData(p,a,b,c,d)       (p)->SetGroupData(a,b,c,d)
00775 #define IDirectPlay3_SetGroupName(p,a,b,c)         (p)->SetGroupName(a,b,c)
00776 #define IDirectPlay3_SetPlayerData(p,a,b,c,d)      (p)->SetPlayerData(a,b,c,d)
00777 #define IDirectPlay3_SetPlayerName(p,a,b,c)        (p)->SetPlayerName(a,b,c)
00778 #define IDirectPlay3_SetSessionDesc(p,a,b)         (p)->SetSessionDesc(a,b)
00779 /*** IDirectPlay3 methods ***/
00780 #define IDirectPlay3_AddGroupToGroup(p,a,b)                (p)->AddGroupToGroup(a,b)
00781 #define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f)     (p)->CreateGroupInGroup(a,b,c,d,e,f)
00782 #define IDirectPlay3_DeleteGroupFromGroup(p,a,b)           (p)->DeleteGroupFromGroup(a,b)
00783 #define IDirectPlay3_EnumConnections(p,a,b,c,d)            (p)->EnumConnections(a,b,c,d)
00784 #define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e)        (p)->EnumGroupsInGroup(a,b,c,d,e)
00785 #define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->GetGroupConnectionSettings(a,b,c,d)
00786 #define IDirectPlay3_InitializeConnection(p,a,b)           (p)->InitializeConnection(a,b)
00787 #define IDirectPlay3_SecureOpen(p,a,b,c,d)                 (p)->SecureOpen(a,b,c,d)
00788 #define IDirectPlay3_SendChatMessage(p,a,b,c,d)            (p)->SendChatMessage(a,b,c,d)
00789 #define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c)   (p)->SetGroupConnectionSettings(a,b,c)
00790 #define IDirectPlay3_StartSession(p,a,b)                   (p)->StartSession(a,b)
00791 #define IDirectPlay3_GetGroupFlags(p,a,b)                  (p)->GetGroupFlags(a,b)
00792 #define IDirectPlay3_GetGroupParent(p,a,b)                 (p)->GetGroupParent(a,b)
00793 #define IDirectPlay3_GetPlayerAccount(p,a,b,c,d)           (p)->GetPlayerAccount(a,b,c,d)
00794 #define IDirectPlay3_GetPlayerFlags(p,a,b)                 (p)->GetPlayerFlags(a,b)
00795 #endif
00796 
00797 /*****************************************************************************
00798  * IDirectPlay4 and IDirectPlay4A interface
00799  */
00800 #define INTERFACE IDirectPlay4
00801 DECLARE_INTERFACE_(IDirectPlay4,IDirectPlay3)
00802 {
00803     /*** IUnknown methods ***/
00804     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00805     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00806     STDMETHOD_(ULONG,Release)(THIS) PURE;
00807     /*** IDirectPlay2 methods ***/
00808     STDMETHOD(AddPlayerToGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
00809     STDMETHOD(Close)(THIS) PURE;
00810     STDMETHOD(CreateGroup)(THIS_ LPDPID lpidGroup, LPDPNAME lpGroupName, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00811     STDMETHOD(CreatePlayer)(THIS_ LPDPID lpidPlayer, LPDPNAME lpPlayerName, HANDLE hEvent, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00812     STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID idGroup, DPID idPlayer) PURE;
00813     STDMETHOD(DestroyGroup)(THIS_ DPID idGroup) PURE;
00814     STDMETHOD(DestroyPlayer)(THIS_ DPID idPlayer) PURE;
00815     STDMETHOD(EnumGroupPlayers)(THIS_ DPID idGroup, LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
00816     STDMETHOD(EnumGroups)(THIS_ LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
00817     STDMETHOD(EnumPlayers)(THIS_ LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
00818     STDMETHOD(EnumSessions)(THIS_ LPDPSESSIONDESC2 lpsd, DWORD dwTimeout, LPDPENUMSESSIONSCALLBACK2 lpEnumSessionsCallback2, LPVOID lpContext, DWORD dwFlags) PURE;
00819     STDMETHOD(GetCaps)(THIS_ LPDPCAPS lpDPCaps, DWORD dwFlags) PURE;
00820     STDMETHOD(GetGroupData)(THIS_ DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize, DWORD dwFlags) PURE;
00821     STDMETHOD(GetGroupName)(THIS_ DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00822     STDMETHOD(GetMessageCount)(THIS_ DPID idPlayer, LPDWORD lpdwCount) PURE;
00823     STDMETHOD(GetPlayerAddress)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00824     STDMETHOD(GetPlayerCaps)(THIS_ DPID idPlayer, LPDPCAPS lpPlayerCaps, DWORD dwFlags) PURE;
00825     STDMETHOD(GetPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize, DWORD dwFlags) PURE;
00826     STDMETHOD(GetPlayerName)(THIS_ DPID idPlayer, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00827     STDMETHOD(GetSessionDesc)(THIS_ LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00828     STDMETHOD(Initialize)(THIS_ LPGUID lpGUID) PURE;
00829     STDMETHOD(Open)(THIS_ LPDPSESSIONDESC2 lpsd, DWORD dwFlags) PURE;
00830     STDMETHOD(Receive)(THIS_ LPDPID lpidFrom, LPDPID lpidTo, DWORD dwFlags, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00831     STDMETHOD(Send)(THIS_ DPID idFrom, DPID idTo, DWORD dwFlags, LPVOID lpData, DWORD dwDataSize) PURE;
00832     STDMETHOD(SetGroupData)(THIS_ DPID idGroup, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00833     STDMETHOD(SetGroupName)(THIS_ DPID idGroup, LPDPNAME lpGroupName, DWORD dwFlags) PURE;
00834     STDMETHOD(SetPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00835     STDMETHOD(SetPlayerName)(THIS_ DPID idPlayer, LPDPNAME lpPlayerName, DWORD dwFlags) PURE;
00836     STDMETHOD(SetSessionDesc)(THIS_ LPDPSESSIONDESC2 lpSessDesc, DWORD dwFlags) PURE;
00837     /*** IDirectPlay3 methods ***/
00838     STDMETHOD(AddGroupToGroup)(THIS_ DPID idParentGroup, DPID idGroup) PURE;
00839     STDMETHOD(CreateGroupInGroup)(THIS_ DPID idParentGroup, LPDPID lpidGroup, LPDPNAME lpGroupName, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags) PURE;
00840     STDMETHOD(DeleteGroupFromGroup)(THIS_ DPID idParentGroup, DPID idGroup) PURE;
00841     STDMETHOD(EnumConnections)(THIS_ LPCGUID lpguidApplication, LPDPENUMCONNECTIONSCALLBACK lpEnumCallback, LPVOID lpContext, DWORD dwFlags) PURE;
00842     STDMETHOD(EnumGroupsInGroup)(THIS_ DPID idGroup, LPGUID lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumCallback, LPVOID lpContext, DWORD dwFlags) PURE;
00843     STDMETHOD(GetGroupConnectionSettings)(THIS_ DWORD dwFlags, DPID idGroup, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00844     STDMETHOD(InitializeConnection)(THIS_ LPVOID lpConnection, DWORD dwFlags) PURE;
00845     STDMETHOD(SecureOpen)(THIS_ LPCDPSESSIONDESC2 lpsd, DWORD dwFlags, LPCDPSECURITYDESC lpSecurity, LPCDPCREDENTIALS lpCredentials) PURE;
00846     STDMETHOD(SendChatMessage)(THIS_ DPID idFrom, DPID idTo, DWORD dwFlags, LPDPCHAT lpChatMessage) PURE;
00847     STDMETHOD(SetGroupConnectionSettings)(THIS_ DWORD dwFlags, DPID idGroup, LPDPLCONNECTION lpConnection) PURE;
00848     STDMETHOD(StartSession)(THIS_ DWORD dwFlags, DPID idGroup) PURE;
00849     STDMETHOD(GetGroupFlags)(THIS_ DPID idGroup, LPDWORD lpdwFlags) PURE;
00850     STDMETHOD(GetGroupParent)(THIS_ DPID idGroup, LPDPID lpidParent) PURE;
00851     STDMETHOD(GetPlayerAccount)(THIS_ DPID idPlayer, DWORD dwFlags, LPVOID lpData, LPDWORD lpdwDataSize) PURE;
00852     STDMETHOD(GetPlayerFlags)(THIS_ DPID idPlayer, LPDWORD lpdwFlags) PURE;
00853     /*** IDirectPlay4 methods ***/
00854     STDMETHOD(GetGroupOwner)(THIS_ DPID , LPDPID  ) PURE;
00855     STDMETHOD(SetGroupOwner)(THIS_ DPID , DPID  ) PURE;
00856     STDMETHOD(SendEx)(THIS_ DPID , DPID , DWORD , LPVOID , DWORD , DWORD , DWORD , LPVOID , LPDWORD  ) PURE;
00857     STDMETHOD(GetMessageQueue)(THIS_ DPID , DPID , DWORD , LPDWORD , LPDWORD  ) PURE;
00858     STDMETHOD(CancelMessage)(THIS_ DWORD , DWORD  ) PURE;
00859     STDMETHOD(CancelPriority)(THIS_ DWORD , DWORD , DWORD  ) PURE;
00860 };
00861 #undef INTERFACE
00862 
00863 #if !defined(__cplusplus) || defined(CINTERFACE)
00864 /*** IUnknown methods ***/
00865 #define IDirectPlayX_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00866 #define IDirectPlayX_AddRef(p)             (p)->lpVtbl->AddRef(p)
00867 #define IDirectPlayX_Release(p)            (p)->lpVtbl->Release(p)
00868 /*** IDirectPlay2 methods ***/
00869 #define IDirectPlayX_AddPlayerToGroup(p,a,b)       (p)->lpVtbl->AddPlayerToGroup(p,a,b)
00870 #define IDirectPlayX_Close(p)                      (p)->lpVtbl->Close(p)
00871 #define IDirectPlayX_CreateGroup(p,a,b,c,d,e)      (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
00872 #define IDirectPlayX_CreatePlayer(p,a,b,c,d,e,f)   (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
00873 #define IDirectPlayX_DeletePlayerFromGroup(p,a,b)  (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
00874 #define IDirectPlayX_DestroyGroup(p,a)             (p)->lpVtbl->DestroyGroup(p,a)
00875 #define IDirectPlayX_DestroyPlayer(p,a)            (p)->lpVtbl->DestroyPlayer(p,a)
00876 #define IDirectPlayX_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
00877 #define IDirectPlayX_EnumGroups(p,a,b,c,d)         (p)->lpVtbl->EnumGroups(p,a,b,c,d)
00878 #define IDirectPlayX_EnumPlayers(p,a,b,c,d)        (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
00879 #define IDirectPlayX_EnumSessions(p,a,b,c,d,e)     (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
00880 #define IDirectPlayX_GetCaps(p,a,b)                (p)->lpVtbl->GetCaps(p,a,b)
00881 #define IDirectPlayX_GetGroupData(p,a,b,c,d)       (p)->lpVtbl->GetGroupData(p,a,b,c,d)
00882 #define IDirectPlayX_GetGroupName(p,a,b,c)         (p)->lpVtbl->GetGroupName(p,a,b,c)
00883 #define IDirectPlayX_GetMessageCount(p,a,b)        (p)->lpVtbl->GetMessageCount(p,a,b)
00884 #define IDirectPlayX_GetPlayerAddress(p,a,b,c)     (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
00885 #define IDirectPlayX_GetPlayerCaps(p,a,b,c)        (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
00886 #define IDirectPlayX_GetPlayerData(p,a,b,c,d)      (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
00887 #define IDirectPlayX_GetPlayerName(p,a,b,c)        (p)->lpVtbl->GetPlayerName(p,a,b,c)
00888 #define IDirectPlayX_GetSessionDesc(p,a,b)         (p)->lpVtbl->GetSessionDesc(p,a,b)
00889 #define IDirectPlayX_Initialize(p,a)               (p)->lpVtbl->Initialize(p,a)
00890 #define IDirectPlayX_Open(p,a,b)                   (p)->lpVtbl->Open(p,a,b)
00891 #define IDirectPlayX_Receive(p,a,b,c,d,e)          (p)->lpVtbl->Receive(p,a,b,c,d,e)
00892 #define IDirectPlayX_Send(p,a,b,c,d,e)             (p)->lpVtbl->Send(p,a,b,c,d,e)
00893 #define IDirectPlayX_SetGroupData(p,a,b,c,d)       (p)->lpVtbl->SetGroupData(p,a,b,c,d)
00894 #define IDirectPlayX_SetGroupName(p,a,b,c)         (p)->lpVtbl->SetGroupName(p,a,b,c)
00895 #define IDirectPlayX_SetPlayerData(p,a,b,c,d)      (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
00896 #define IDirectPlayX_SetPlayerName(p,a,b,c)        (p)->lpVtbl->SetPlayerName(p,a,b,c)
00897 #define IDirectPlayX_SetSessionDesc(p,a,b)         (p)->lpVtbl->SetSessionDesc(p,a,b)
00898 /*** IDirectPlay3 methods ***/
00899 #define IDirectPlayX_AddGroupToGroup(p,a,b)                (p)->lpVtbl->AddGroupToGroup(p,a,b)
00900 #define IDirectPlayX_CreateGroupInGroup(p,a,b,c,d,e,f)     (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f)
00901 #define IDirectPlayX_DeleteGroupFromGroup(p,a,b)           (p)->lpVtbl->DeleteGroupFromGroup(p,a,b)
00902 #define IDirectPlayX_EnumConnections(p,a,b,c,d)            (p)->lpVtbl->EnumConnections(p,a,b,c,d)
00903 #define IDirectPlayX_EnumGroupsInGroup(p,a,b,c,d,e)        (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e)
00904 #define IDirectPlayX_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d)
00905 #define IDirectPlayX_InitializeConnection(p,a,b)           (p)->lpVtbl->InitializeConnection(p,a,b)
00906 #define IDirectPlayX_SecureOpen(p,a,b,c,d)                 (p)->lpVtbl->SecureOpen(p,a,b,c,d)
00907 #define IDirectPlayX_SendChatMessage(p,a,b,c,d)            (p)->lpVtbl->SendChatMessage(p,a,b,c,d)
00908 #define IDirectPlayX_SetGroupConnectionSettings(p,a,b,c)   (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c)
00909 #define IDirectPlayX_StartSession(p,a,b)                   (p)->lpVtbl->StartSession(p,a,b)
00910 #define IDirectPlayX_GetGroupFlags(p,a,b)                  (p)->lpVtbl->GetGroupFlags(p,a,b)
00911 #define IDirectPlayX_GetGroupParent(p,a,b)                 (p)->lpVtbl->GetGroupParent(p,a,b)
00912 #define IDirectPlayX_GetPlayerAccount(p,a,b,c,d)           (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d)
00913 #define IDirectPlayX_GetPlayerFlags(p,a,b)                 (p)->lpVtbl->GetPlayerFlags(p,a,b)
00914 /*** IDirectPlay4 methods ***/
00915 #define IDirectPlayX_GetGroupOwner(p,a,b)                  (p)->lpVtbl->GetGroupOwner(p,a,b)
00916 #define IDirectPlayX_SetGroupOwner(p,a,b)                  (p)->lpVtbl->SetGroupOwner(p,a,b)
00917 #define IDirectPlayX_SendEx(p,a,b,c,d,e,f,g,h,i)           (p)->lpVtbl->SendEx(p,a,b,c,d,e,f,g,h,i)
00918 #define IDirectPlayX_GetMessageQueue(p,a,b,c,d,e)          (p)->lpVtbl->GetMessageQueue(p,a,b,c,d,e)
00919 #define IDirectPlayX_CancelMessage(p,a,b)                  (p)->lpVtbl->CancelMessage(p,a,b)
00920 #define IDirectPlayX_CancelPriority(p,a,b,c)               (p)->lpVtbl->CancelPriority(p,a,b,c)
00921 #else
00922 /*** IUnknown methods ***/
00923 #define IDirectPlayX_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
00924 #define IDirectPlayX_AddRef(p)             (p)->AddRef()
00925 #define IDirectPlayX_Release(p)            (p)->Release()
00926 /*** IDirectPlay2 methods ***/
00927 #define IDirectPlayX_AddPlayerToGroup(p,a,b)       (p)->AddPlayerToGroup(a,b)
00928 #define IDirectPlayX_Close(p)                      (p)->Close()
00929 #define IDirectPlayX_CreateGroup(p,a,b,c,d,e)      (p)->CreateGroup(a,b,c,d,e)
00930 #define IDirectPlayX_CreatePlayer(p,a,b,c,d,e,f)   (p)->CreatePlayer(a,b,c,d,e,f)
00931 #define IDirectPlayX_DeletePlayerFromGroup(p,a,b)  (p)->DeletePlayerFromGroup(a,b)
00932 #define IDirectPlayX_DestroyGroup(p,a)             (p)->DestroyGroup(a)
00933 #define IDirectPlayX_DestroyPlayer(p,a)            (p)->DestroyPlayer(a)
00934 #define IDirectPlayX_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e)
00935 #define IDirectPlayX_EnumGroups(p,a,b,c,d)         (p)->EnumGroups(a,b,c,d)
00936 #define IDirectPlayX_EnumPlayers(p,a,b,c,d)        (p)->EnumPlayers(a,b,c,d)
00937 #define IDirectPlayX_EnumSessions(p,a,b,c,d,e)     (p)->EnumSessions(a,b,c,d,e)
00938 #define IDirectPlayX_GetCaps(p,a,b)                (p)->GetCaps(a,b)
00939 #define IDirectPlayX_GetGroupData(p,a,b,c,d)       (p)->GetGroupData(a,b,c,d)
00940 #define IDirectPlayX_GetGroupName(p,a,b,c)         (p)->GetGroupName(a,b,c)
00941 #define IDirectPlayX_GetMessageCount(p,a,b)        (p)->GetMessageCount(a,b)
00942 #define IDirectPlayX_GetPlayerAddress(p,a,b,c)     (p)->GetPlayerAddress(a,b,c)
00943 #define IDirectPlayX_GetPlayerCaps(p,a,b,c)        (p)->GetPlayerCaps(a,b,c)
00944 #define IDirectPlayX_GetPlayerData(p,a,b,c,d)      (p)->GetPlayerData(a,b,c,d)
00945 #define IDirectPlayX_GetPlayerName(p,a,b,c)        (p)->GetPlayerName(a,b,c)
00946 #define IDirectPlayX_GetSessionDesc(p,a,b)         (p)->GetSessionDesc(a,b)
00947 #define IDirectPlayX_Initialize(p,a)               (p)->Initialize(a)
00948 #define IDirectPlayX_Open(p,a,b)                   (p)->Open(a,b)
00949 #define IDirectPlayX_Receive(p,a,b,c,d,e)          (p)->Receive(a,b,c,d,e)
00950 #define IDirectPlayX_Send(p,a,b,c,d,e)             (p)->Send(a,b,c,d,e)
00951 #define IDirectPlayX_SetGroupData(p,a,b,c,d)       (p)->SetGroupData(a,b,c,d)
00952 #define IDirectPlayX_SetGroupName(p,a,b,c)         (p)->SetGroupName(a,b,c)
00953 #define IDirectPlayX_SetPlayerData(p,a,b,c,d)      (p)->SetPlayerData(a,b,c,d)
00954 #define IDirectPlayX_SetPlayerName(p,a,b,c)        (p)->SetPlayerName(a,b,c)
00955 #define IDirectPlayX_SetSessionDesc(p,a,b)         (p)->SetSessionDesc(a,b)
00956 /*** IDirectPlay3 methods ***/
00957 #define IDirectPlayX_AddGroupToGroup(p,a,b)                (p)->AddGroupToGroup(a,b)
00958 #define IDirectPlayX_CreateGroupInGroup(p,a,b,c,d,e,f)     (p)->CreateGroupInGroup(a,b,c,d,e,f)
00959 #define IDirectPlayX_DeleteGroupFromGroup(p,a,b)           (p)->DeleteGroupFromGroup(a,b)
00960 #define IDirectPlayX_EnumConnections(p,a,b,c,d)            (p)->EnumConnections(a,b,c,d)
00961 #define IDirectPlayX_EnumGroupsInGroup(p,a,b,c,d,e)        (p)->EnumGroupsInGroup(a,b,c,d,e)
00962 #define IDirectPlayX_GetGroupConnectionSettings(p,a,b,c,d) (p)->GetGroupConnectionSettings(a,b,c,d)
00963 #define IDirectPlayX_InitializeConnection(p,a,b)           (p)->InitializeConnection(a,b)
00964 #define IDirectPlayX_SecureOpen(p,a,b,c,d)                 (p)->SecureOpen(a,b,c,d)
00965 #define IDirectPlayX_SendChatMessage(p,a,b,c,d)            (p)->SendChatMessage(a,b,c,d)
00966 #define IDirectPlayX_SetGroupConnectionSettings(p,a,b,c)   (p)->SetGroupConnectionSettings(a,b,c)
00967 #define IDirectPlayX_StartSession(p,a,b)                   (p)->StartSession(a,b)
00968 #define IDirectPlayX_GetGroupFlags(p,a,b)                  (p)->GetGroupFlags(a,b)
00969 #define IDirectPlayX_GetGroupParent(p,a,b)                 (p)->GetGroupParent(a,b)
00970 #define IDirectPlayX_GetPlayerAccount(p,a,b,c,d)           (p)->GetPlayerAccount(a,b,c,d)
00971 #define IDirectPlayX_GetPlayerFlags(p,a,b)                 (p)->GetPlayerFlags(a,b)
00972 /*** IDirectPlay4 methods ***/
00973 #define IDirectPlayX_GetGroupOwner(p,a,b)                  (p)->GetGroupOwner(a,b)
00974 #define IDirectPlayX_SetGroupOwner(p,a,b)                  (p)->SetGroupOwner(a,b)
00975 #define IDirectPlayX_SendEx(p,a,b,c,d,e,f,g,h,i)           (p)->SendEx(a,b,c,d,e,f,g,h,i)
00976 #define IDirectPlayX_GetMessageQueue(p,a,b,c,d,e)          (p)->GetMessageQueue(a,b,c,d,e)
00977 #define IDirectPlayX_CancelMessage(p,a,b)                  (p)->CancelMessage(a,b)
00978 #define IDirectPlayX_CancelPriority(p,a,b,c)               (p)->CancelPriority(a,b,c)
00979 #endif
00980 
00981 
00982 /* For DirectPlay::EnumConnections */
00983 #define DPCONNECTION_DIRECTPLAY      0x00000001
00984 #define DPCONNECTION_DIRECTPLAYLOBBY 0x00000002
00985 
00986 /* For DirectPlay::EnumPlayers and DirectPlay::EnumGroups */
00987 #define DPENUMPLAYERS_ALL           0x00000000
00988 #define DPENUMPLAYERS_LOCAL         0x00000008
00989 #define DPENUMPLAYERS_REMOTE        0x00000010
00990 #define DPENUMPLAYERS_GROUP         0x00000020
00991 #define DPENUMPLAYERS_SESSION       0x00000080
00992 #define DPENUMPLAYERS_SERVERPLAYER  0x00000100
00993 #define DPENUMPLAYERS_SPECTATOR     0x00000200
00994 #define DPENUMPLAYERS_OWNER         0x00002000
00995 
00996 #define DPENUMGROUPS_ALL            DPENUMPLAYERS_ALL
00997 #define DPENUMGROUPS_LOCAL          DPENUMPLAYERS_LOCAL
00998 #define DPENUMGROUPS_REMOTE         DPENUMPLAYERS_REMOTE
00999 #define DPENUMGROUPS_SESSION        DPENUMPLAYERS_SESSION
01000 #define DPENUMGROUPS_SHORTCUT       0x00000400
01001 #define DPENUMGROUPS_STAGINGAREA    0x00000800
01002 #define DPENUMGROUPS_HIDDEN         0x00001000
01003 
01004 
01005 /* For DirectPlay::CreatePlayer */
01006 #define DPPLAYER_SERVERPLAYER  DPENUMPLAYERS_SERVERPLAYER
01007 #define DPPLAYER_SPECTATOR     DPENUMPLAYERS_SPECTATOR
01008 #define DPPLAYER_LOCAL         DPENUMPLAYERS_LOCAL
01009 #define DPPLAYER_OWNER         DPENUMPLAYERS_OWNER
01010 
01011 /* For DirectPlay::CreateGroup */
01012 #define DPGROUP_STAGINGAREA  DPENUMGROUPS_STAGINGAREA
01013 #define DPGROUP_LOCAL        DPENUMGROUPS_LOCAL
01014 #define DPGROUP_HIDDEN       DPENUMGROUPS_HIDDEN
01015 
01016 /* For DirectPlay::EnumSessions */
01017 #define DPENUMSESSIONS_AVAILABLE         0x00000001
01018 #define DPENUMSESSIONS_ALL               0x00000002
01019 #define DPENUMSESSIONS_ASYNC             0x00000010
01020 #define DPENUMSESSIONS_STOPASYNC         0x00000020
01021 #define DPENUMSESSIONS_PASSWORDREQUIRED  0x00000040
01022 #define DPENUMSESSIONS_RETURNSTATUS      0x00000080
01023 
01024 /* For DirectPlay::GetCaps and DirectPlay::GetPlayerCaps */
01025 #define DPGETCAPS_GUARANTEED  0x00000001
01026 
01027 /* For DirectPlay::GetGroupData and DirectPlay::GetPlayerData */
01028 #define DPGET_REMOTE  0x00000000
01029 #define DPGET_LOCAL   0x00000001
01030 
01031 /* For DirectPlay::Receive */
01032 #define DPRECEIVE_ALL         0x00000001
01033 #define DPRECEIVE_TOPLAYER    0x00000002
01034 #define DPRECEIVE_FROMPLAYER  0x00000004
01035 #define DPRECEIVE_PEEK        0x00000008
01036 
01037 /* For DirectPlay::Send */
01038 #define DPSEND_NONGUARANTEED       0x00000000
01039 #define DPSEND_GUARANTEED          0x00000001
01040 #define DPSEND_HIGHPRIORITY        0x00000002
01041 #define DPSEND_OPENSTREAM          0x00000008
01042 #define DPSEND_CLOSESTREAM         0x00000010
01043 #define DPSEND_SIGNED              0x00000020
01044 #define DPSEND_ENCRYPTED           0x00000040
01045 #define DPSEND_LOBBYSYSTEMMESSAGE  0x00000080
01046 #define DPSEND_ASYNC               0x00000200
01047 #define DPSEND_NOSENDCOMPLETEMSG   0x00000400
01048 
01049 #define DPSEND_MAX_PRI       0x0000FFFF
01050 #define DPSEND_MAX_PRIORITY  DPSEND_MAX_PRI
01051 
01052 
01053 /* For  DirectPlay::SetGroupData, DirectPlay::SetGroupName,
01054  * DirectPlay::SetPlayerData, DirectPlay::SetPlayerName and
01055  * DirectPlay::SetSessionDesc.
01056  */
01057 #define DPSET_REMOTE      0x00000000
01058 #define DPSET_LOCAL       0x00000001
01059 #define DPSET_GUARANTEED  0x00000002
01060 
01061 /* For DirectPlay::GetMessageQueue */
01062 #define DPMESSAGEQUEUE_SEND    0x00000001
01063 #define DPMESSAGEQUEUE_RECEIVE 0x00000002
01064 
01065 /* DirectPlay::Connect */
01066 #define DPCONNECT_RETURNSTATUS  (DPENUMSESSIONS_RETURNSTATUS)
01067 
01068 
01071 /* A new player or group has been created in the session */
01072 #define DPSYS_CREATEPLAYERORGROUP   0x0003
01073 
01074 /* A player or group has been deleted from the session */
01075 #define DPSYS_DESTROYPLAYERORGROUP  0x0005
01076 
01077 /* A player has been added to a group */
01078 #define DPSYS_ADDPLAYERTOGROUP      0x0007
01079 
01080 /* A player has been deleted from a group */
01081 #define DPSYS_DELETEPLAYERFROMGROUP 0x0021
01082 
01083 /* Session lost for this object - ie lost contact with all players */
01084 #define DPSYS_SESSIONLOST           0x0031
01085 
01086 /* The current host has left the session */
01087 #define DPSYS_HOST                  0x0101
01088 
01089 /* Player or group data has changed */
01090 #define DPSYS_SETPLAYERORGROUPDATA  0x0102
01091 
01092 /* The name of a player or group has changed */
01093 #define DPSYS_SETPLAYERORGROUPNAME  0x0103
01094 
01095 /* The session description has changed */
01096 #define DPSYS_SETSESSIONDESC        0x0104
01097 
01098 /* A group has been added to a group */
01099 #define DPSYS_ADDGROUPTOGROUP           0x0105
01100 
01101 /* A group has been deleted from a group */
01102 #define DPSYS_DELETEGROUPFROMGROUP      0x0106
01103 
01104 /* A secure player to player message has arrived */
01105 #define DPSYS_SECUREMESSAGE         0x0107
01106 
01107 /* Start a new session */
01108 #define DPSYS_STARTSESSION          0x0108
01109 
01110 /* A chat message has arrived */
01111 #define DPSYS_CHAT                  0x0109
01112 
01113 /* The owner of a group has changed */
01114 #define DPSYS_SETGROUPOWNER         0x010A
01115 
01116 /* An async send is done (finished normally, failed or cancelled) */
01117 #define DPSYS_SENDCOMPLETE          0x010d
01118 
01121 #define DPPLAYERTYPE_GROUP   0x00000000
01122 #define DPPLAYERTYPE_PLAYER  0x00000001
01123 
01124 
01125 /* NOTE: DPMSG_HOST and DPMSG_GENERIC share the same format */
01126 typedef struct tagDPMSG_GENERIC
01127 {
01128    DWORD       dwType; /* Use message type as described above */
01129 } DPMSG_GENERIC,     *LPDPMSG_GENERIC,
01130   DPMSG_HOST,        *LPDPMSG_HOST,
01131   DPMSG_SESSIONLOST, *LPDPMSG_SESSIONLOST;
01132 
01133 typedef struct tagDPMSG_CREATEPLAYERORGROUP
01134 {
01135    DWORD   dwType;           /* Use message type as described above */
01136    DWORD   dwPlayerType;     /* Use DPPLAYERTYPE_GROUP or DPPLAYERTYPE_PLAYER */
01137    DPID    dpId;             /* ID of the player/group */
01138    DWORD   dwCurrentPlayers; /* Current number of players/groups in session */
01139    LPVOID  lpData;           /* Pointer to data */
01140    DWORD   dwDataSize;       /* Size of data */
01141    DPNAME  dpnName;          /* Name info */
01142 
01143    /* dpIdParent and dwFlags are only valid in DirectPlay3 and later. What
01144     * does that mean about the message size before? -PH */
01145    DPID   dpIdParent;  /* id of parent group */
01146    DWORD  dwFlags;     /* Flags for the player/group */
01147 } DPMSG_CREATEPLAYERORGROUP, *LPDPMSG_CREATEPLAYERORGROUP;
01148 
01149 typedef struct tagDPMSG_DESTROYPLAYERORGROUP
01150 {
01151    DWORD   dwType;           /* Use message type as described above */
01152    DWORD   dwPlayerType;     /* Use DPPLAYERTYPE_GROUP or DPPLAYERTYPE_PLAYER */
01153    DPID    dpId;             /* ID of player/group to be deleted */
01154    LPVOID  lpLocalData;      /* Pointer to local data */
01155    DWORD   dwLocalDataSize;  /* Sizeof local data */
01156    LPVOID  lpRemoteData;     /* Pointer to remote data */
01157    DWORD   dwRemoteDataSize; /* Sizeof remote data */
01158 
01159    /* dpnName, dpIdParent and dwFlags are only valid in DirectPlay3 and later. What
01160     * does that mean about the message size before? -PH */
01161    DPNAME  dpnName;     /* Name info */
01162    DPID    dpIdParent;  /* id of parent group */
01163    DWORD   dwFlags;     /* Flags for the player/group */
01164 } DPMSG_DESTROYPLAYERORGROUP, *LPDPMSG_DESTROYPLAYERORGROUP;
01165 
01166 /* NOTE: DPMSG_ADDPLAYERTOGROUP and DPMSG_DELETEPLAYERFROMGROUP are the same */
01167 typedef struct tagDPMSG_ADDPLAYERTOGROUP
01168 {
01169    DWORD  dwType;      /* Use message type as described above */
01170    DPID   dpIdGroup;   /* Group ID to add player into */
01171    DPID   dpIdPlayer;  /* ID of player to add */
01172 } DPMSG_ADDPLAYERTOGROUP,      *LPDPMSG_ADDPLAYERTOGROUP,
01173   DPMSG_DELETEPLAYERFROMGROUP, *LPDPMSG_DELETEPLAYERFROMGROUP;
01174 
01175 /* NOTE: DPMSG_ADDGROUPTOGROUP and DPMSG_DELETEGROUPFROMGROUP are the same */
01176 typedef struct tagDPMSG_ADDGROUPTOGROUP
01177 {
01178    DWORD  dwType;          /* Use message type as described above */
01179    DPID   dpIdParentGroup; /* Group ID to add group into */
01180    DPID   dpIdGroup;       /* ID of group to add */
01181 } DPMSG_ADDGROUPTOGROUP,      *LPDPMSG_ADDGROUPTOGROUP,
01182   DPMSG_DELETEGROUPFROMGROUP, *LPDPMSG_DELETEGROUPFROMGROUP;
01183 
01184 typedef struct tagDPMSG_SETPLAYERORGROUPDATA
01185 {
01186    DWORD   dwType;       /* Use message type as described above */
01187    DWORD   dwPlayerType; /* Use DPPLAYERTYPE_GROUP or DPPLAYERTYPE_PLAYER */
01188    DPID    dpId;         /* ID of player/group */
01189    LPVOID  lpData;       /* Pointer to data */
01190    DWORD   dwDataSize;   /* Size of data */
01191 } DPMSG_SETPLAYERORGROUPDATA, *LPDPMSG_SETPLAYERORGROUPDATA;
01192 
01193 typedef struct tagDPMSG_SETPLAYERORGROUPNAME
01194 {
01195    DWORD  dwType;       /* Use message type as described above */
01196    DWORD  dwPlayerType; /* Use DPPLAYERTYPE_GROUP or DPPLAYERTYPE_PLAYER */
01197    DPID   dpId;         /* ID of player/group */
01198    DPNAME dpnName;      /* New name */
01199 } DPMSG_SETPLAYERORGROUPNAME, *LPDPMSG_SETPLAYERORGROUPNAME;
01200 
01201 typedef struct tagDPMSG_SETSESSIONDESC
01202 {
01203    DWORD           dwType; /* Use message type as described above */
01204    DPSESSIONDESC2  dpDesc; /* New session desc */
01205 } DPMSG_SETSESSIONDESC, *LPDPMSG_SETSESSIONDESC;
01206 
01207 typedef struct tagDPMSG_SECUREMESSAGE
01208 {
01209    DWORD   dwType;     /* Use message type as described above */
01210    DWORD   dwFlags;    /* Signed/Encrypted */
01211    DPID    dpIdFrom;   /* ID of from player */
01212    LPVOID  lpData;     /* Message sent */
01213    DWORD   dwDataSize; /* Size of message */
01214 } DPMSG_SECUREMESSAGE, *LPDPMSG_SECUREMESSAGE;
01215 
01216 typedef struct tagDPMSG_STARTSESSION
01217 {
01218    DWORD            dwType; /* Use message type as described above */
01219    LPDPLCONNECTION  lpConn; /* DPLCONNECTION structure */
01220 } DPMSG_STARTSESSION, *LPDPMSG_STARTSESSION;
01221 
01222 typedef struct tagDPMSG_CHAT
01223 {
01224    DWORD     dwType;       /* Use message type as described above */
01225    DWORD     dwFlags;      /* Message flags */
01226    DPID      idFromPlayer; /* ID of sender */
01227    DPID      idToPlayer;   /* ID of who msg is for */
01228    DPID      idToGroup;    /* ID of what group msg is for */
01229    LPDPCHAT  lpChat;       /* Chat message */
01230 } DPMSG_CHAT, *LPDPMSG_CHAT;
01231 
01232 typedef struct tagDPMSG_SETGROUPOWNER
01233 {
01234    DWORD  dwType;     /* Use message type as described above */
01235    DPID   idGroup;    /* Group ID */
01236    DPID   idNewOwner; /* ID of player who now owns group */
01237    DPID   idOldOwner; /* ID of player who used to own group */
01238 } DPMSG_SETGROUPOWNER, *LPDPMSG_SETGROUPOWNER;
01239 
01240 typedef struct
01241 {
01242    DWORD    dwType;      /* Use message type as described above */
01243    DPID     idFrom;      /* ID from */
01244    DPID     idTo;        /* ID to */
01245    DWORD    dwFlags;
01246    DWORD    dwPriority;
01247    DWORD    dwTimeout;
01248    LPVOID   lpvContext;
01249    DWORD    dwMsgID;
01250    HRESULT  hr;
01251    DWORD    dwSendTime;  /* When sent ? */
01252 } DPMSG_SENDCOMPLETE, *LPDPMSG_SENDCOMPLETE;
01253 
01254 
01255 
01256 #ifdef __cplusplus
01257 } /* extern "C" */
01258 #endif /* defined(__cplusplus) */
01259 
01260 #endif /* __WINE_DPLAY_H */

Generated on Sat May 26 2012 04:30:06 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.