dplay.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:85k
- /*==========================================================================;
- *
- * Copyright (C) 1994-1997 Microsoft Corporation. All Rights Reserved.
- *
- * File: dplay.h
- * Content: DirectPlay include file
- *
- ***************************************************************************/
- #ifndef __DPLAY_INCLUDED__
- #define __DPLAY_INCLUDED__
- #include <ole2.h> // for DECLARE_INTERFACE and HRESULT
- /* avoid warnings in MSVC at Level4 */
- #pragma warning(disable:4201)
- /*
- * Some types
- */
- #ifndef _WIN64
- #define DWORD_PTR DWORD
- #endif
- typedef LPVOID (*LPRGLPVOID)[];
- typedef LPRGLPVOID PRGPVOID, LPRGPVOID, PRGLPVOID, PAPVOID, LPAPVOID, PALPVOID, LPALPVOID;
- #define VOL volatile
- typedef VOID *VOL LPVOIDV;
- #define _FACDP 0x877
- #define MAKE_DPHRESULT( code ) MAKE_HRESULT( 1, _FACDP, code )
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*
- * GUIDS used by DirectPlay objects
- */
- DEFINE_GUID(IID_IDirectPlay2, 0x2b74f7c0, 0x9154, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
- DEFINE_GUID(IID_IDirectPlay2A,0x9d460580, 0xa822, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82);
- DEFINE_GUID(IID_IDirectPlay3, 0x133efe40, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
- DEFINE_GUID(IID_IDirectPlay3A,0x133efe41, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
- DEFINE_GUID(IID_IDirectPlay4, 0xab1c530, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
- DEFINE_GUID(IID_IDirectPlay4A,0xab1c531, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
- // {D1EB6D20-8923-11d0-9D97-00A0C90A43CB}
- DEFINE_GUID(CLSID_DirectPlay,0xd1eb6d20, 0x8923, 0x11d0, 0x9d, 0x97, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
- /*
- * GUIDS used by Service Providers shipped with DirectPlay
- * Use these to identify Service Provider returned by EnumConnections
- */
- // GUID for IPX service provider
- // {685BC400-9D2C-11cf-A9CD-00AA006886E3}
- DEFINE_GUID(DPSPGUID_IPX,
- 0x685bc400, 0x9d2c, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
- // GUID for TCP/IP service provider
- // 36E95EE0-8577-11cf-960C-0080C7534E82
- DEFINE_GUID(DPSPGUID_TCPIP,
- 0x36E95EE0, 0x8577, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82);
- // GUID for Serial service provider
- // {0F1D6860-88D9-11cf-9C4E-00A0C905425E}
- DEFINE_GUID(DPSPGUID_SERIAL,
- 0xf1d6860, 0x88d9, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
- // GUID for Modem service provider
- // {44EAA760-CB68-11cf-9C4E-00A0C905425E}
- DEFINE_GUID(DPSPGUID_MODEM,
- 0x44eaa760, 0xcb68, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
- /****************************************************************************
- *
- * DirectPlay Structures
- *
- * Various structures used to invoke DirectPlay.
- *
- ****************************************************************************/
- #ifndef IDIRECTPLAY2_OR_GREATER
- typedef struct IDirectPlay FAR *LPDIRECTPLAY;
- #else
- typedef struct IUnknown FAR *LPDIRECTPLAY;
- #endif
- typedef struct IDirectPlay2 FAR *LPDIRECTPLAY2;
- typedef struct IDirectPlay2 FAR *LPDIRECTPLAY2A;
- typedef struct IDirectPlay2 IDirectPlay2A;
- typedef struct IDirectPlay3 FAR *LPDIRECTPLAY3;
- typedef struct IDirectPlay3 FAR *LPDIRECTPLAY3A;
- typedef struct IDirectPlay3 IDirectPlay3A;
- typedef struct IDirectPlay4 FAR *LPDIRECTPLAY4;
- typedef struct IDirectPlay4 FAR *LPDIRECTPLAY4A;
- typedef struct IDirectPlay4 IDirectPlay4A;
- /*
- * DPID
- * DirectPlay player and group ID
- */
- typedef DWORD DPID, FAR *LPDPID;
- /*
- * DPID that system messages come from
- */
- #define DPID_SYSMSG 0
- /*
- * DPID representing all players in the session
- */
- #define DPID_ALLPLAYERS 0
- /*
- * DPID representing the server player
- */
- #define DPID_SERVERPLAYER 1
- /*
- * DPID representing the maxiumum ID in the range of DPID's reserved for
- * use by DirectPlay.
- */
- #define DPID_RESERVEDRANGE 100
- /*
- * The player ID is unknown (used with e.g. DPSESSION_NOMESSAGEID)
- */
- #define DPID_UNKNOWN 0xFFFFFFFF
- /*
- * DPCAPS
- * Used to obtain the capabilities of a DirectPlay object
- */
- typedef struct
- {
- DWORD dwSize; // Size of structure, in bytes
- DWORD dwFlags; // DPCAPS_xxx flags
- DWORD dwMaxBufferSize; // Maximum message size, in bytes, for this service provider
- DWORD dwMaxQueueSize; // Obsolete.
- DWORD dwMaxPlayers; // Maximum players/groups (local + remote)
- DWORD dwHundredBaud; // Bandwidth in 100 bits per second units;
- // i.e. 24 is 2400, 96 is 9600, etc.
- DWORD dwLatency; // Estimated latency; 0 = unknown
- DWORD dwMaxLocalPlayers; // Maximum # of locally created players allowed
- DWORD dwHeaderLength; // Maximum header length, in bytes, on messages
- // added by the service provider
- DWORD dwTimeout; // Service provider's suggested timeout value
- // This is how long DirectPlay will wait for
- // responses to system messages
- } DPCAPS, FAR *LPDPCAPS;
- /*
- * This DirectPlay object is the session host. If the host exits the
- * session, another application will become the host and receive a
- * DPSYS_HOST system message.
- */
- #define DPCAPS_ISHOST 0x00000002
- /*
- * The service provider bound to this DirectPlay object can optimize
- * group messaging.
- */
- #define DPCAPS_GROUPOPTIMIZED 0x00000008
- /*
- * The service provider bound to this DirectPlay object can optimize
- * keep alives (see DPSESSION_KEEPALIVE)
- */
- #define DPCAPS_KEEPALIVEOPTIMIZED 0x00000010
- /*
- * The service provider bound to this DirectPlay object can optimize
- * guaranteed message delivery.
- */
- #define DPCAPS_GUARANTEEDOPTIMIZED 0x00000020
- /*
- * This DirectPlay object supports guaranteed message delivery.
- */
- #define DPCAPS_GUARANTEEDSUPPORTED 0x00000040
- /*
- * This DirectPlay object supports digital signing of messages.
- */
- #define DPCAPS_SIGNINGSUPPORTED 0x00000080
- /*
- * This DirectPlay object supports encryption of messages.
- */
- #define DPCAPS_ENCRYPTIONSUPPORTED 0x00000100
- /*
- * This DirectPlay player was created on this machine
- */
- #define DPPLAYERCAPS_LOCAL 0x00000800
- /*
- * Current Open settings supports all forms of Cancel
- */
- #define DPCAPS_ASYNCCANCELSUPPORTED 0x00001000
- /*
- * Current Open settings supports CancelAll, but not Cancel
- */
- #define DPCAPS_ASYNCCANCELALLSUPPORTED 0x00002000
- /*
- * Current Open settings supports Send Timeouts for sends
- */
- #define DPCAPS_SENDTIMEOUTSUPPORTED 0x00004000
- /*
- * Current Open settings supports send priority
- */
- #define DPCAPS_SENDPRIORITYSUPPORTED 0x00008000
- /*
- * Current Open settings supports DPSEND_ASYNC flag
- */
- #define DPCAPS_ASYNCSUPPORTED 0x00010000
- /*
- * DPSESSIONDESC2
- * Used to describe the properties of a DirectPlay
- * session instance
- */
- typedef struct
- {
- DWORD dwSize; // Size of structure
- DWORD dwFlags; // DPSESSION_xxx flags
- GUID guidInstance; // ID for the session instance
- GUID guidApplication; // GUID of the DirectPlay application.
- // GUID_NULL for all applications.
- DWORD dwMaxPlayers; // Maximum # players allowed in session
- DWORD dwCurrentPlayers; // Current # players in session (read only)
- union
- { // Name of the session
- LPWSTR lpszSessionName; // Unicode
- LPSTR lpszSessionNameA; // ANSI
- };
- union
- { // Password of the session (optional)
- LPWSTR lpszPassword; // Unicode
- LPSTR lpszPasswordA; // ANSI
- };
- DWORD_PTR dwReserved1; // Reserved for future MS use.
- DWORD_PTR dwReserved2;
- DWORD_PTR dwUser1; // For use by the application
- DWORD_PTR dwUser2;
- DWORD_PTR dwUser3;
- DWORD_PTR dwUser4;
- } DPSESSIONDESC2, FAR *LPDPSESSIONDESC2;
- typedef DPSESSIONDESC2 * VOL LPDPSESSIONDESC2_V;
- /*
- * LPCDPSESSIONDESC2
- * A constant pointer to DPSESSIONDESC2
- */
- typedef const DPSESSIONDESC2 FAR *LPCDPSESSIONDESC2;
-
- /*
- * Applications cannot create new players in this session.
- */
- #define DPSESSION_NEWPLAYERSDISABLED 0x00000001
- /*
- * If the DirectPlay object that created the session, the host,
- * quits, then the host will attempt to migrate to another
- * DirectPlay object so that new players can continue to be created
- * and new applications can join the session.
- */
- #define DPSESSION_MIGRATEHOST 0x00000004
- /*
- * This flag tells DirectPlay not to set the idPlayerTo and idPlayerFrom
- * fields in player messages. This cuts two DWORD's off the message
- * overhead.
- */
- #define DPSESSION_NOMESSAGEID 0x00000008
- /*
- * This flag tells DirectPlay to not allow any new applications to
- * join the session. Applications already in the session can still
- * create new players.
- */
- #define DPSESSION_JOINDISABLED 0x00000020
- /*
- * This flag tells DirectPlay to detect when remote players
- * exit abnormally (e.g. their computer or modem gets unplugged)
- */
- #define DPSESSION_KEEPALIVE 0x00000040
- /*
- * This flag tells DirectPlay not to send a message to all players
- * when a players remote data changes
- */
- #define DPSESSION_NODATAMESSAGES 0x00000080
- /*
- * This flag indicates that the session belongs to a secure server
- * and needs user authentication
- */
- #define DPSESSION_SECURESERVER 0x00000100
- /*
- * This flag indicates that the session is private and requirs a password
- * for EnumSessions as well as Open.
- */
- #define DPSESSION_PRIVATE 0x00000200
- /*
- * This flag indicates that the session requires a password for joining.
- */
- #define DPSESSION_PASSWORDREQUIRED 0x00000400
- /*
- * This flag tells DirectPlay to route all messages through the server
- */
- #define DPSESSION_MULTICASTSERVER 0x00000800
- /*
- * This flag tells DirectPlay to only download information about the
- * DPPLAYER_SERVERPLAYER.
- */
- #define DPSESSION_CLIENTSERVER 0x00001000
- /*
- * This flag tells DirectPlay to use the protocol built into dplay
- * for reliability and statistics all the time. When this bit is
- * set, only other sessions with this bit set can join or be joined.
- */
- #define DPSESSION_DIRECTPLAYPROTOCOL 0x00002000
- /*
- * This flag tells DirectPlay that preserving order of received
- * packets is not important, when using reliable delivery. This
- * will allow messages to be indicated out of order if preceding
- * messages have not yet arrived. Otherwise DPLAY will wait for
- * earlier messages before delivering later reliable messages.
- */
- #define DPSESSION_NOPRESERVEORDER 0x00004000
- /*
- * This flag tells DirectPlay to optimize communication for latency
- */
- #define DPSESSION_OPTIMIZELATENCY 0x00008000
- /*
- * This flag allows lobby launched games that aren't voice enabled
- * to get voice capabilities.
- */
- #define DPSESSION_ALLOWVOICERETRO 0x00010000
- /*
- * This flag supresses transmission of session desc changes.
- * DPSESSION_NODATAMESSAGES was supposed to do that, but SetSessionDesc
- * was ignoring the flag and some apps depended on the broken behavior, this
- * flag allows applications to get the right behaviour without breaking apps depending
- * on old broken behavior.
- */
- #define DPSESSION_NOSESSIONDESCMESSAGES 0x00020000
-
- /*
- * DPNAME
- * Used to hold the name of a DirectPlay entity
- * like a player or a group
- */
- typedef struct
- {
- DWORD dwSize; // Size of structure
- DWORD dwFlags; // Not used. Must be zero.
- union
- { // The short or friendly name
- LPWSTR lpszShortName; // Unicode
- LPSTR lpszShortNameA; // ANSI
- };
- union
- { // The long or formal name
- LPWSTR lpszLongName; // Unicode
- LPSTR lpszLongNameA; // ANSI
- };
- } DPNAME, FAR *LPDPNAME;
- /*
- * LPCDPNAME
- * A constant pointer to DPNAME
- */
- typedef const DPNAME FAR *LPCDPNAME;
- /*
- * DPCREDENTIALS
- * Used to hold the user name and password of a DirectPlay user
- */
- typedef struct
- {
- DWORD dwSize; // Size of structure
- DWORD dwFlags; // Not used. Must be zero.
- union
- { // User name of the account
- LPWSTR lpszUsername; // Unicode
- LPSTR lpszUsernameA; // ANSI
- };
- union
- { // Password of the account
- LPWSTR lpszPassword; // Unicode
- LPSTR lpszPasswordA; // ANSI
- };
- union
- { // Domain name of the account
- LPWSTR lpszDomain; // Unicode
- LPSTR lpszDomainA; // ANSI
- };
- } DPCREDENTIALS, FAR *LPDPCREDENTIALS;
- typedef const DPCREDENTIALS FAR *LPCDPCREDENTIALS;
- /*
- * DPSECURITYDESC
- * Used to describe the security properties of a DirectPlay
- * session instance
- */
- typedef struct
- {
- DWORD dwSize; // Size of structure
- DWORD dwFlags; // Not used. Must be zero.
- union
- { // SSPI provider name
- LPWSTR lpszSSPIProvider; // Unicode
- LPSTR lpszSSPIProviderA; // ANSI
- };
- union
- { // CAPI provider name
- LPWSTR lpszCAPIProvider; // Unicode
- LPSTR lpszCAPIProviderA; // ANSI
- };
- DWORD dwCAPIProviderType; // Crypto Service Provider type
- DWORD dwEncryptionAlgorithm; // Encryption Algorithm type
- } DPSECURITYDESC, FAR *LPDPSECURITYDESC;
- typedef const DPSECURITYDESC FAR *LPCDPSECURITYDESC;
- /*
- * DPACCOUNTDESC
- * Used to describe a user membership account
- */
- typedef struct
- {
- DWORD dwSize; // Size of structure
- DWORD dwFlags; // Not used. Must be zero.
- union
- { // Account identifier
- LPWSTR lpszAccountID; // Unicode
- LPSTR lpszAccountIDA; // ANSI
- };
- } DPACCOUNTDESC, FAR *LPDPACCOUNTDESC;
- typedef const DPACCOUNTDESC FAR *LPCDPACCOUNTDESC;
- /*
- * LPCGUID
- * A constant pointer to a guid
- */
- typedef const GUID FAR *LPCGUID;
- /*
- * DPLCONNECTION
- * Used to hold all in the informaion needed to connect
- * an application to a session or create a session
- */
- typedef struct
- {
- DWORD dwSize; // Size of this structure
- DWORD dwFlags; // Flags specific to this structure
- LPDPSESSIONDESC2 lpSessionDesc; // Pointer to session desc to use on connect
- LPDPNAME lpPlayerName; // Pointer to Player name structure
- GUID guidSP; // GUID of the DPlay SP to use
- LPVOID lpAddress; // Address for service provider
- DWORD dwAddressSize; // Size of address data
- } DPLCONNECTION, FAR *LPDPLCONNECTION;
- /*
- * LPCDPLCONNECTION
- * A constant pointer to DPLCONNECTION
- */
- typedef const DPLCONNECTION FAR *LPCDPLCONNECTION;
- /*
- * DPCHAT
- * Used to hold the a DirectPlay chat message
- */
- typedef struct
- {
- DWORD dwSize;
- DWORD dwFlags;
- union
- { // Message string
- LPWSTR lpszMessage; // Unicode
- LPSTR lpszMessageA; // ANSI
- };
- } DPCHAT, FAR * LPDPCHAT;
- /*
- * SGBUFFER
- * Scatter Gather Buffer used for SendEx
- */
- typedef struct
- {
- UINT len; // length of buffer data
- PUCHAR pData; // pointer to buffer data
- } SGBUFFER, *PSGBUFFER, FAR *LPSGBUFFER;
- /****************************************************************************
- *
- * Prototypes for DirectPlay callback functions
- *
- ****************************************************************************/
- /*
- * Callback for IDirectPlay2::EnumSessions
- */
- typedef BOOL (FAR PASCAL * LPDPENUMSESSIONSCALLBACK2)(
- LPCDPSESSIONDESC2 lpThisSD,
- LPDWORD lpdwTimeOut,
- DWORD dwFlags,
- LPVOID lpContext );
- /*
- * This flag is set on the EnumSessions callback dwFlags parameter when
- * the time out has occurred. There will be no session data for this
- * callback. If *lpdwTimeOut is set to a non-zero value and the
- * EnumSessionsCallback function returns TRUE then EnumSessions will
- * continue waiting until the next timeout occurs. Timeouts are in
- * milliseconds.
- */
- #define DPESC_TIMEDOUT 0x00000001
- /*
- * Callback for IDirectPlay2::EnumPlayers
- * IDirectPlay2::EnumGroups
- * IDirectPlay2::EnumGroupPlayers
- */
- typedef BOOL (FAR PASCAL *LPDPENUMPLAYERSCALLBACK2)(
- DPID dpId,
- DWORD dwPlayerType,
- LPCDPNAME lpName,
- DWORD dwFlags,
- LPVOID lpContext );
- /*
- * Unicode callback for DirectPlayEnumerate
- * This callback prototype will be used if compiling
- * for Unicode strings
- */
- typedef BOOL (FAR PASCAL * LPDPENUMDPCALLBACK)(
- LPGUID lpguidSP,
- LPWSTR lpSPName,
- DWORD dwMajorVersion,
- DWORD dwMinorVersion,
- LPVOID lpContext);
- /*
- * ANSI callback for DirectPlayEnumerate
- * This callback prototype will be used if compiling
- * for ANSI strings
- */
- typedef BOOL (FAR PASCAL * LPDPENUMDPCALLBACKA)(
- LPGUID lpguidSP,
- LPSTR lpSPName,
- DWORD dwMajorVersion,
- DWORD dwMinorVersion,
- LPVOID lpContext);
- /*
- * Callback for IDirectPlay3(A)::EnumConnections
- */
- typedef BOOL (FAR PASCAL * LPDPENUMCONNECTIONSCALLBACK)(
- LPCGUID lpguidSP,
- LPVOID lpConnection,
- DWORD dwConnectionSize,
- LPCDPNAME lpName,
- DWORD dwFlags,
- LPVOID lpContext);
- /*
- * API's
- */
- #ifdef UNICODE
- #define DirectPlayEnumerate DirectPlayEnumerateW
- #else
- #define DirectPlayEnumerate DirectPlayEnumerateA
- #endif // UNICODE
- extern HRESULT WINAPI DirectPlayEnumerateA( LPDPENUMDPCALLBACKA, LPVOID );
- extern HRESULT WINAPI DirectPlayEnumerateW( LPDPENUMDPCALLBACK, LPVOID );
- extern HRESULT WINAPI DirectPlayCreate( LPGUID lpGUID, LPDIRECTPLAY *lplpDP, IUnknown *pUnk);
- /****************************************************************************
- *
- * IDirectPlay2 (and IDirectPlay2A) Interface
- *
- ****************************************************************************/
- #undef INTERFACE
- #define INTERFACE IDirectPlay2
- DECLARE_INTERFACE_( IDirectPlay2, IUnknown )
- {
- /*** IUnknown methods ***/
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
- /*** IDirectPlay2 methods ***/
- STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE;
- STDMETHOD(Close) (THIS) PURE;
- STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;
- STDMETHOD(DestroyGroup) (THIS_ DPID) PURE;
- STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE;
- STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE;
- STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
- STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
- STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE;
- STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE;
- STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE;
- STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
- STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
- STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE;
- STDMETHOD(Initialize) (THIS_ LPGUID) PURE;
- STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
- STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE;
- STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE;
- STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
- STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
- STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
- };
- /****************************************************************************
- *
- * IDirectPlay2 interface macros
- *
- ****************************************************************************/
- #if !defined(__cplusplus) || defined(CINTERFACE)
- #define IDirectPlay2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
- #define IDirectPlay2_AddRef(p) (p)->lpVtbl->AddRef(p)
- #define IDirectPlay2_Release(p) (p)->lpVtbl->Release(p)
- #define IDirectPlay2_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b)
- #define IDirectPlay2_Close(p) (p)->lpVtbl->Close(p)
- #define IDirectPlay2_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
- #define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
- #define IDirectPlay2_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
- #define IDirectPlay2_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a)
- #define IDirectPlay2_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a)
- #define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
- #define IDirectPlay2_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d)
- #define IDirectPlay2_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
- #define IDirectPlay2_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
- #define IDirectPlay2_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
- #define IDirectPlay2_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b)
- #define IDirectPlay2_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d)
- #define IDirectPlay2_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c)
- #define IDirectPlay2_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
- #define IDirectPlay2_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
- #define IDirectPlay2_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
- #define IDirectPlay2_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c)
- #define IDirectPlay2_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b)
- #define IDirectPlay2_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
- #define IDirectPlay2_Open(p,a,b) (p)->lpVtbl->Open(p,a,b)
- #define IDirectPlay2_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e)
- #define IDirectPlay2_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e)
- #define IDirectPlay2_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d)
- #define IDirectPlay2_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c)
- #define IDirectPlay2_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
- #define IDirectPlay2_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c)
- #define IDirectPlay2_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b)
- #else /* C++ */
- #define IDirectPlay2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
- #define IDirectPlay2_AddRef(p) (p)->AddRef()
- #define IDirectPlay2_Release(p) (p)->Release()
- #define IDirectPlay2_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b)
- #define IDirectPlay2_Close(p) (p)->Close()
- #define IDirectPlay2_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e)
- #define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f) (p)->CreatePlayer(a,b,c,d,e,f)
- #define IDirectPlay2_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b)
- #define IDirectPlay2_DestroyGroup(p,a) (p)->DestroyGroup(a)
- #define IDirectPlay2_DestroyPlayer(p,a) (p)->DestroyPlayer(a)
- #define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e)
- #define IDirectPlay2_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d)
- #define IDirectPlay2_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d)
- #define IDirectPlay2_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e)
- #define IDirectPlay2_GetCaps(p,a,b) (p)->GetCaps(a,b)
- #define IDirectPlay2_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b)
- #define IDirectPlay2_GetGroupData(p,a,b,c,d) (p)->GetGroupData(a,b,c,d)
- #define IDirectPlay2_GetGroupName(p,a,b,c) (p)->GetGroupName(a,b,c)
- #define IDirectPlay2_GetPlayerAddress(p,a,b,c) (p)->GetPlayerAddress(a,b,c)
- #define IDirectPlay2_GetPlayerCaps(p,a,b,c) (p)->GetPlayerCaps(a,b,c)
- #define IDirectPlay2_GetPlayerData(p,a,b,c,d) (p)->GetPlayerData(a,b,c,d)
- #define IDirectPlay2_GetPlayerName(p,a,b,c) (p)->GetPlayerName(a,b,c)
- #define IDirectPlay2_GetSessionDesc(p,a,b) (p)->GetSessionDesc(a,b)
- #define IDirectPlay2_Initialize(p,a) (p)->Initialize(a)
- #define IDirectPlay2_Open(p,a,b) (p)->Open(a,b)
- #define IDirectPlay2_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e)
- #define IDirectPlay2_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e)
- #define IDirectPlay2_SetGroupData(p,a,b,c,d) (p)->SetGroupData(a,b,c,d)
- #define IDirectPlay2_SetGroupName(p,a,b,c) (p)->SetGroupName(a,b,c)
- #define IDirectPlay2_SetPlayerData(p,a,b,c,d) (p)->SetPlayerData(a,b,c,d)
- #define IDirectPlay2_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c)
- #define IDirectPlay2_SetSessionDesc(p,a,b) (p)->SetSessionDesc(a,b)
- #endif
- /****************************************************************************
- *
- * IDirectPlay3 (and IDirectPlay3A) Interface
- *
- ****************************************************************************/
- #undef INTERFACE
- #define INTERFACE IDirectPlay3
- DECLARE_INTERFACE_( IDirectPlay3, IDirectPlay2 )
- {
- /*** IUnknown methods ***/
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
- /*** IDirectPlay2 methods ***/
- STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE;
- STDMETHOD(Close) (THIS) PURE;
- STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;
- STDMETHOD(DestroyGroup) (THIS_ DPID) PURE;
- STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE;
- STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE;
- STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
- STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
- STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE;
- STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE;
- STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE;
- STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
- STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
- STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE;
- STDMETHOD(Initialize) (THIS_ LPGUID) PURE;
- STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
- STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE;
- STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE;
- STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
- STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
- STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
- /*** IDirectPlay3 methods ***/
- STDMETHOD(AddGroupToGroup) (THIS_ DPID, DPID) PURE;
- STDMETHOD(CreateGroupInGroup) (THIS_ DPID,LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(DeleteGroupFromGroup) (THIS_ DPID,DPID) PURE;
- STDMETHOD(EnumConnections) (THIS_ LPCGUID,LPDPENUMCONNECTIONSCALLBACK,LPVOID,DWORD) PURE;
- STDMETHOD(EnumGroupsInGroup) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(GetGroupConnectionSettings)(THIS_ DWORD, DPID, LPVOID, LPDWORD) PURE;
- STDMETHOD(InitializeConnection) (THIS_ LPVOID,DWORD) PURE;
- STDMETHOD(SecureOpen) (THIS_ LPCDPSESSIONDESC2,DWORD,LPCDPSECURITYDESC,LPCDPCREDENTIALS) PURE;
- STDMETHOD(SendChatMessage) (THIS_ DPID,DPID,DWORD,LPDPCHAT) PURE;
- STDMETHOD(SetGroupConnectionSettings)(THIS_ DWORD,DPID,LPDPLCONNECTION) PURE;
- STDMETHOD(StartSession) (THIS_ DWORD,DPID) PURE;
- STDMETHOD(GetGroupFlags) (THIS_ DPID,LPDWORD) PURE;
- STDMETHOD(GetGroupParent) (THIS_ DPID,LPDPID) PURE;
- STDMETHOD(GetPlayerAccount) (THIS_ DPID, DWORD, LPVOID, LPDWORD) PURE;
- STDMETHOD(GetPlayerFlags) (THIS_ DPID,LPDWORD) PURE;
- };
- /****************************************************************************
- *
- * IDirectPlay3 interface macros
- *
- ****************************************************************************/
- #if !defined(__cplusplus) || defined(CINTERFACE)
- #define IDirectPlay3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
- #define IDirectPlay3_AddRef(p) (p)->lpVtbl->AddRef(p)
- #define IDirectPlay3_Release(p) (p)->lpVtbl->Release(p)
- #define IDirectPlay3_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b)
- #define IDirectPlay3_Close(p) (p)->lpVtbl->Close(p)
- #define IDirectPlay3_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
- #define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
- #define IDirectPlay3_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
- #define IDirectPlay3_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a)
- #define IDirectPlay3_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a)
- #define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
- #define IDirectPlay3_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d)
- #define IDirectPlay3_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
- #define IDirectPlay3_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
- #define IDirectPlay3_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
- #define IDirectPlay3_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b)
- #define IDirectPlay3_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d)
- #define IDirectPlay3_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c)
- #define IDirectPlay3_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
- #define IDirectPlay3_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
- #define IDirectPlay3_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
- #define IDirectPlay3_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c)
- #define IDirectPlay3_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b)
- #define IDirectPlay3_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
- #define IDirectPlay3_Open(p,a,b) (p)->lpVtbl->Open(p,a,b)
- #define IDirectPlay3_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e)
- #define IDirectPlay3_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e)
- #define IDirectPlay3_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d)
- #define IDirectPlay3_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c)
- #define IDirectPlay3_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
- #define IDirectPlay3_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c)
- #define IDirectPlay3_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b)
- #define IDirectPlay3_AddGroupToGroup(p,a,b) (p)->lpVtbl->AddGroupToGroup(p,a,b)
- #define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f)
- #define IDirectPlay3_DeleteGroupFromGroup(p,a,b) (p)->lpVtbl->DeleteGroupFromGroup(p,a,b)
- #define IDirectPlay3_EnumConnections(p,a,b,c,d) (p)->lpVtbl->EnumConnections(p,a,b,c,d)
- #define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e)
- #define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d)
- #define IDirectPlay3_InitializeConnection(p,a,b) (p)->lpVtbl->InitializeConnection(p,a,b)
- #define IDirectPlay3_SecureOpen(p,a,b,c,d) (p)->lpVtbl->SecureOpen(p,a,b,c,d)
- #define IDirectPlay3_SendChatMessage(p,a,b,c,d) (p)->lpVtbl->SendChatMessage(p,a,b,c,d)
- #define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c) (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c)
- #define IDirectPlay3_StartSession(p,a,b) (p)->lpVtbl->StartSession(p,a,b)
- #define IDirectPlay3_GetGroupFlags(p,a,b) (p)->lpVtbl->GetGroupFlags(p,a,b)
- #define IDirectPlay3_GetGroupParent(p,a,b) (p)->lpVtbl->GetGroupParent(p,a,b)
- #define IDirectPlay3_GetPlayerAccount(p,a,b,c,d) (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d)
- #define IDirectPlay3_GetPlayerFlags(p,a,b) (p)->lpVtbl->GetPlayerFlags(p,a,b)
- #else /* C++ */
- #define IDirectPlay3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
- #define IDirectPlay3_AddRef(p) (p)->AddRef()
- #define IDirectPlay3_Release(p) (p)->Release()
- #define IDirectPlay3_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b)
- #define IDirectPlay3_Close(p) (p)->Close()
- #define IDirectPlay3_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e)
- #define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f) (p)->CreatePlayer(a,b,c,d,e,f)
- #define IDirectPlay3_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b)
- #define IDirectPlay3_DestroyGroup(p,a) (p)->DestroyGroup(a)
- #define IDirectPlay3_DestroyPlayer(p,a) (p)->DestroyPlayer(a)
- #define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e)
- #define IDirectPlay3_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d)
- #define IDirectPlay3_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d)
- #define IDirectPlay3_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e)
- #define IDirectPlay3_GetCaps(p,a,b) (p)->GetCaps(a,b)
- #define IDirectPlay3_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b)
- #define IDirectPlay3_GetGroupData(p,a,b,c,d) (p)->GetGroupData(a,b,c,d)
- #define IDirectPlay3_GetGroupName(p,a,b,c) (p)->GetGroupName(a,b,c)
- #define IDirectPlay3_GetPlayerAddress(p,a,b,c) (p)->GetPlayerAddress(a,b,c)
- #define IDirectPlay3_GetPlayerCaps(p,a,b,c) (p)->GetPlayerCaps(a,b,c)
- #define IDirectPlay3_GetPlayerData(p,a,b,c,d) (p)->GetPlayerData(a,b,c,d)
- #define IDirectPlay3_GetPlayerName(p,a,b,c) (p)->GetPlayerName(a,b,c)
- #define IDirectPlay3_GetSessionDesc(p,a,b) (p)->GetSessionDesc(a,b)
- #define IDirectPlay3_Initialize(p,a) (p)->Initialize(a)
- #define IDirectPlay3_Open(p,a,b) (p)->Open(a,b)
- #define IDirectPlay3_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e)
- #define IDirectPlay3_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e)
- #define IDirectPlay3_SetGroupData(p,a,b,c,d) (p)->SetGroupData(a,b,c,d)
- #define IDirectPlay3_SetGroupName(p,a,b,c) (p)->SetGroupName(a,b,c)
- #define IDirectPlay3_SetPlayerData(p,a,b,c,d) (p)->SetPlayerData(a,b,c,d)
- #define IDirectPlay3_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c)
- #define IDirectPlay3_SetSessionDesc(p,a,b) (p)->SetSessionDesc(a,b)
- #define IDirectPlay3_AddGroupToGroup(p,a,b) (p)->AddGroupToGroup(a,b)
- #define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->CreateGroupInGroup(a,b,c,d,e,f)
- #define IDirectPlay3_DeleteGroupFromGroup(p,a,b) (p)->DeleteGroupFromGroup(a,b)
- #define IDirectPlay3_EnumConnections(p,a,b,c,d) (p)->EnumConnections(a,b,c,d)
- #define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e) (p)->EnumGroupsInGroup(a,b,c,d,e)
- #define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->GetGroupConnectionSettings(a,b,c,d)
- #define IDirectPlay3_InitializeConnection(p,a,b) (p)->InitializeConnection(a,b)
- #define IDirectPlay3_SecureOpen(p,a,b,c,d) (p)->SecureOpen(a,b,c,d)
- #define IDirectPlay3_SendChatMessage(p,a,b,c,d) (p)->SendChatMessage(a,b,c,d)
- #define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c) (p)->SetGroupConnectionSettings(a,b,c)
- #define IDirectPlay3_StartSession(p,a,b) (p)->StartSession(a,b)
- #define IDirectPlay3_GetGroupFlags(p,a,b) (p)->GetGroupFlags(a,b)
- #define IDirectPlay3_GetGroupParent(p,a,b) (p)->GetGroupParent(a,b)
- #define IDirectPlay3_GetPlayerAccount(p,a,b,c,d) (p)->GetPlayerAccount(a,b,c,d)
- #define IDirectPlay3_GetPlayerFlags(p,a,b) (p)->GetPlayerFlags(a,b)
- #endif
- /****************************************************************************
- *
- * IDirectPlay4 (and IDirectPlay4A) Interface
- *
- ****************************************************************************/
- #undef INTERFACE
- #define INTERFACE IDirectPlay4
- DECLARE_INTERFACE_( IDirectPlay4, IDirectPlay3 )
- {
- /*** IUnknown methods ***/
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
- /*** IDirectPlay2 methods ***/
- STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE;
- STDMETHOD(Close) (THIS) PURE;
- STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;
- STDMETHOD(DestroyGroup) (THIS_ DPID) PURE;
- STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE;
- STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE;
- STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
- STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
- STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE;
- STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE;
- STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE;
- STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
- STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
- STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE;
- STDMETHOD(Initialize) (THIS_ LPGUID) PURE;
- STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
- STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE;
- STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE;
- STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
- STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
- STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
- /*** IDirectPlay3 methods ***/
- STDMETHOD(AddGroupToGroup) (THIS_ DPID, DPID) PURE;
- STDMETHOD(CreateGroupInGroup) (THIS_ DPID,LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
- STDMETHOD(DeleteGroupFromGroup) (THIS_ DPID,DPID) PURE;
- STDMETHOD(EnumConnections) (THIS_ LPCGUID,LPDPENUMCONNECTIONSCALLBACK,LPVOID,DWORD) PURE;
- STDMETHOD(EnumGroupsInGroup) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
- STDMETHOD(GetGroupConnectionSettings)(THIS_ DWORD, DPID, LPVOID, LPDWORD) PURE;
- STDMETHOD(InitializeConnection) (THIS_ LPVOID,DWORD) PURE;
- STDMETHOD(SecureOpen) (THIS_ LPCDPSESSIONDESC2,DWORD,LPCDPSECURITYDESC,LPCDPCREDENTIALS) PURE;
- STDMETHOD(SendChatMessage) (THIS_ DPID,DPID,DWORD,LPDPCHAT) PURE;
- STDMETHOD(SetGroupConnectionSettings)(THIS_ DWORD,DPID,LPDPLCONNECTION) PURE;
- STDMETHOD(StartSession) (THIS_ DWORD,DPID) PURE;
- STDMETHOD(GetGroupFlags) (THIS_ DPID,LPDWORD) PURE;
- STDMETHOD(GetGroupParent) (THIS_ DPID,LPDPID) PURE;
- STDMETHOD(GetPlayerAccount) (THIS_ DPID, DWORD, LPVOID, LPDWORD) PURE;
- STDMETHOD(GetPlayerFlags) (THIS_ DPID,LPDWORD) PURE;
- /*** IDirectPlay4 methods ***/
- STDMETHOD(GetGroupOwner) (THIS_ DPID, LPDPID) PURE;
- STDMETHOD(SetGroupOwner) (THIS_ DPID, DPID) PURE;
- STDMETHOD(SendEx) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD, DWORD, DWORD, LPVOID, DWORD_PTR *) PURE;
- STDMETHOD(GetMessageQueue) (THIS_ DPID, DPID, DWORD, LPDWORD, LPDWORD) PURE;
- STDMETHOD(CancelMessage) (THIS_ DWORD, DWORD) PURE;
- STDMETHOD(CancelPriority) (THIS_ DWORD, DWORD, DWORD) PURE;
- };
- /****************************************************************************
- *
- * IDirectPlayX interface macros (for IDirectPlay4 and beyond)
- *
- ****************************************************************************/
- #if !defined(__cplusplus) || defined(CINTERFACE)
- #define IDirectPlayX_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
- #define IDirectPlayX_AddRef(p) (p)->lpVtbl->AddRef(p)
- #define IDirectPlayX_Release(p) (p)->lpVtbl->Release(p)
- #define IDirectPlayX_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b)
- #define IDirectPlayX_CancelMessage(p,a,b) (p)->lpVtbl->CancelMessage(p,a,b)
- #define IDirectPlayX_CancelPriority(p,a,b,c) (p)->lpVtbl->CancelPriority(p,a,b,c)
- #define IDirectPlayX_Close(p) (p)->lpVtbl->Close(p)
- #define IDirectPlayX_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
- #define IDirectPlayX_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
- #define IDirectPlayX_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
- #define IDirectPlayX_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a)
- #define IDirectPlayX_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a)
- #define IDirectPlayX_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
- #define IDirectPlayX_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d)
- #define IDirectPlayX_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
- #define IDirectPlayX_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
- #define IDirectPlayX_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
- #define IDirectPlayX_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b)
- #define IDirectPlayX_GetMessageQueue(p,a,b,c,d,e) (p)->lpVtbl->GetMessageQueue(p,a,b,c,d,e)
- #define IDirectPlayX_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d)
- #define IDirectPlayX_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c)
- #define IDirectPlayX_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
- #define IDirectPlayX_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
- #define IDirectPlayX_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
- #define IDirectPlayX_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c)
- #define IDirectPlayX_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b)
- #define IDirectPlayX_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
- #define IDirectPlayX_Open(p,a,b) (p)->lpVtbl->Open(p,a,b)
- #define IDirectPlayX_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e)
- #define IDirectPlayX_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e)
- #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)
- #define IDirectPlayX_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d)
- #define IDirectPlayX_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c)
- #define IDirectPlayX_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
- #define IDirectPlayX_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c)
- #define IDirectPlayX_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b)
- #define IDirectPlayX_AddGroupToGroup(p,a,b) (p)->lpVtbl->AddGroupToGroup(p,a,b)
- #define IDirectPlayX_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f)
- #define IDirectPlayX_DeleteGroupFromGroup(p,a,b) (p)->lpVtbl->DeleteGroupFromGroup(p,a,b)
- #define IDirectPlayX_EnumConnections(p,a,b,c,d) (p)->lpVtbl->EnumConnections(p,a,b,c,d)
- #define IDirectPlayX_EnumGroupsInGroup(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e)
- #define IDirectPlayX_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d)
- #define IDirectPlayX_InitializeConnection(p,a,b) (p)->lpVtbl->InitializeConnection(p,a,b)
- #define IDirectPlayX_SecureOpen(p,a,b,c,d) (p)->lpVtbl->SecureOpen(p,a,b,c,d)
- #define IDirectPlayX_SendChatMessage(p,a,b,c,d) (p)->lpVtbl->SendChatMessage(p,a,b,c,d)
- #define IDirectPlayX_SetGroupConnectionSettings(p,a,b,c) (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c)
- #define IDirectPlayX_StartSession(p,a,b) (p)->lpVtbl->StartSession(p,a,b)
- #define IDirectPlayX_GetGroupFlags(p,a,b) (p)->lpVtbl->GetGroupFlags(p,a,b)
- #define IDirectPlayX_GetGroupParent(p,a,b) (p)->lpVtbl->GetGroupParent(p,a,b)
- #define IDirectPlayX_GetPlayerAccount(p,a,b,c,d) (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d)
- #define IDirectPlayX_GetPlayerFlags(p,a,b) (p)->lpVtbl->GetPlayerFlags(p,a,b)
- #define IDirectPlayX_GetGroupOwner(p,a,b) (p)->lpVtbl->GetGroupOwner(p,a,b)
- #define IDirectPlayX_SetGroupOwner(p,a,b) (p)->lpVtbl->SetGroupOwner(p,a,b)
- #else /* C++ */
- #define IDirectPlayX_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
- #define IDirectPlayX_AddRef(p) (p)->AddRef()
- #define IDirectPlayX_Release(p) (p)->Release()
- #define IDirectPlayX_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b)
- #define IDirectPlayX_CancelMessage(p,a,b) (p)->CancelMessage(a,b)
- #define IDirectPlayX_CancelPriority(p,a,b,c) (p)->CancelPriority(a,b,c)
- #define IDirectPlayX_Close(p) (p)->Close()
- #define IDirectPlayX_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e)
- #define IDirectPlayX_CreatePlayer(p,a,b,c,d,e,f) (p)->CreatePlayer(a,b,c,d,e,f)
- #define IDirectPlayX_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b)
- #define IDirectPlayX_DestroyGroup(p,a) (p)->DestroyGroup(a)
- #define IDirectPlayX_DestroyPlayer(p,a) (p)->DestroyPlayer(a)
- #define IDirectPlayX_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e)
- #define IDirectPlayX_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d)
- #define IDirectPlayX_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d)
- #define IDirectPlayX_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e)
- #define IDirectPlayX_GetCaps(p,a,b) (p)->GetCaps(a,b)
- #define IDirectPlayX_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b)
- #define IDirectPlayX_GetMessageQueue(p,a,b,c,d,e) (p)->GetMessageQueue(a,b,c,d,e)
- #define IDirectPlayX_GetGroupData(p,a,b,c,d) (p)->GetGroupData(a,b,c,d)
- #define IDirectPlayX_GetGroupName(p,a,b,c) (p)->GetGroupName(a,b,c)
- #define IDirectPlayX_GetPlayerAddress(p,a,b,c) (p)->GetPlayerAddress(a,b,c)
- #define IDirectPlayX_GetPlayerCaps(p,a,b,c) (p)->GetPlayerCaps(a,b,c)
- #define IDirectPlayX_GetPlayerData(p,a,b,c,d) (p)->GetPlayerData(a,b,c,d)
- #define IDirectPlayX_GetPlayerName(p,a,b,c) (p)->GetPlayerName(a,b,c)
- #define IDirectPlayX_GetSessionDesc(p,a,b) (p)->GetSessionDesc(a,b)
- #define IDirectPlayX_Initialize(p,a) (p)->Initialize(a)
- #define IDirectPlayX_Open(p,a,b) (p)->Open(a,b)
- #define IDirectPlayX_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e)
- #define IDirectPlayX_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e)
- #define IDirectPlayX_SendEx(p,a,b,c,d,e,f,g,h,i) (p)->SendEx(a,b,c,d,e,f,g,h,i)
- #define IDirectPlayX_SetGroupData(p,a,b,c,d) (p)->SetGroupData(a,b,c,d)
- #define IDirectPlayX_SetGroupName(p,a,b,c) (p)->SetGroupName(a,b,c)
- #define IDirectPlayX_SetPlayerData(p,a,b,c,d) (p)->SetPlayerData(a,b,c,d)
- #define IDirectPlayX_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c)
- #define IDirectPlayX_SetSessionDesc(p,a,b) (p)->SetSessionDesc(a,b)
- #define IDirectPlayX_AddGroupToGroup(p,a,b) (p)->AddGroupToGroup(a,b)
- #define IDirectPlayX_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->CreateGroupInGroup(a,b,c,d,e,f)
- #define IDirectPlayX_DeleteGroupFromGroup(p,a,b) (p)->DeleteGroupFromGroup(a,b)
- #define IDirectPlayX_EnumConnections(p,a,b,c,d) (p)->EnumConnections(a,b,c,d)
- #define IDirectPlayX_EnumGroupsInGroup(p,a,b,c,d,e) (p)->EnumGroupsInGroup(a,b,c,d,e)
- #define IDirectPlayX_GetGroupConnectionSettings(p,a,b,c,d) (p)->GetGroupConnectionSettings(a,b,c,d)
- #define IDirectPlayX_InitializeConnection(p,a,b) (p)->InitializeConnection(a,b)
- #define IDirectPlayX_SecureOpen(p,a,b,c,d) (p)->SecureOpen(a,b,c,d)
- #define IDirectPlayX_SendChatMessage(p,a,b,c,d) (p)->SendChatMessage(a,b,c,d)
- #define IDirectPlayX_SetGroupConnectionSettings(p,a,b,c) (p)->SetGroupConnectionSettings(a,b,c)
- #define IDirectPlayX_StartSession(p,a,b) (p)->StartSession(a,b)
- #define IDirectPlayX_GetGroupFlags(p,a,b) (p)->GetGroupFlags(a,b)
- #define IDirectPlayX_GetGroupParent(p,a,b) (p)->GetGroupParent(a,b)
- #define IDirectPlayX_GetPlayerAccount(p,a,b,c,d) (p)->GetPlayerAccount(a,b,c,d)
- #define IDirectPlayX_GetPlayerFlags(p,a,b) (p)->GetPlayerFlags(a,b)
- #define IDirectPlayX_GetGroupOwner(p,a,b) (p)->GetGroupOwner(a,b)
- #define IDirectPlayX_SetGroupOwner(p,a,b) (p)->SetGroupOwner(a,b)
- #endif
- /****************************************************************************
- *
- * EnumConnections API flags
- *
- ****************************************************************************/
- /*
- * Enumerate Service Providers
- */
- #define DPCONNECTION_DIRECTPLAY 0x00000001
- /*
- * Enumerate Lobby Providers
- */
- #define DPCONNECTION_DIRECTPLAYLOBBY 0x00000002
- /****************************************************************************
- *
- * EnumPlayers API flags
- *
- ****************************************************************************/
- /*
- * Enumerate all players in the current session
- */
- #define DPENUMPLAYERS_ALL 0x00000000
- #define DPENUMGROUPS_ALL DPENUMPLAYERS_ALL
- /*
- * Enumerate only local (created by this application) players
- * or groups
- */
- #define DPENUMPLAYERS_LOCAL 0x00000008
- #define DPENUMGROUPS_LOCAL DPENUMPLAYERS_LOCAL
- /*
- * Enumerate only remote (non-local) players
- * or groups
- */
- #define DPENUMPLAYERS_REMOTE 0x00000010
- #define DPENUMGROUPS_REMOTE DPENUMPLAYERS_REMOTE
- /*
- * Enumerate groups along with the players
- */
- #define DPENUMPLAYERS_GROUP 0x00000020
- /*
- * Enumerate players or groups in another session
- * (must supply lpguidInstance)
- */
- #define DPENUMPLAYERS_SESSION 0x00000080
- #define DPENUMGROUPS_SESSION DPENUMPLAYERS_SESSION
- /*
- * Enumerate server players
- */
- #define DPENUMPLAYERS_SERVERPLAYER 0x00000100
- /*
- * Enumerate spectator players
- */
- #define DPENUMPLAYERS_SPECTATOR 0x00000200
- /*
- * Enumerate shortcut groups
- */
- #define DPENUMGROUPS_SHORTCUT 0x00000400
- /*
- * Enumerate staging area groups
- */
- #define DPENUMGROUPS_STAGINGAREA 0x00000800
- /*
- * Enumerate hidden groups
- */
- #define DPENUMGROUPS_HIDDEN 0x00001000
- /*
- * Enumerate the group's owner
- */
- #define DPENUMPLAYERS_OWNER 0x00002000
- /****************************************************************************
- *
- * CreatePlayer API flags
- *
- ****************************************************************************/
- /*
- * This flag indicates that this player should be designated
- * the server player. The app should specify this at CreatePlayer.
- */
- #define DPPLAYER_SERVERPLAYER DPENUMPLAYERS_SERVERPLAYER
- /*
- * This flag indicates that this player should be designated
- * a spectator. The app should specify this at CreatePlayer.
- */
- #define DPPLAYER_SPECTATOR DPENUMPLAYERS_SPECTATOR
- /*
- * This flag indicates that this player was created locally.
- * (returned from GetPlayerFlags)
- */
- #define DPPLAYER_LOCAL DPENUMPLAYERS_LOCAL
- /*
- * This flag indicates that this player is the group's owner
- * (Only returned in EnumGroupPlayers)
- */
- #define DPPLAYER_OWNER DPENUMPLAYERS_OWNER
- /****************************************************************************
- *
- * CreateGroup API flags
- *
- ****************************************************************************/
- /*
- * This flag indicates that the StartSession can be called on the group.
- * The app should specify this at CreateGroup, or CreateGroupInGroup.
- */
- #define DPGROUP_STAGINGAREA DPENUMGROUPS_STAGINGAREA
- /*
- * This flag indicates that this group was created locally.
- * (returned from GetGroupFlags)
- */
- #define DPGROUP_LOCAL DPENUMGROUPS_LOCAL
- /*
- * This flag indicates that this group was created hidden.
- */
- #define DPGROUP_HIDDEN DPENUMGROUPS_HIDDEN
- /****************************************************************************
- *
- * EnumSessions API flags
- *
- ****************************************************************************/
- /*
- * Enumerate sessions which can be joined
- */
- #define DPENUMSESSIONS_AVAILABLE 0x00000001
- /*
- * Enumerate all sessions even if they can't be joined.
- */
- #define DPENUMSESSIONS_ALL 0x00000002
- /*
- * Start an asynchronous enum sessions
- */
- #define DPENUMSESSIONS_ASYNC 0x00000010
- /*
- * Stop an asynchronous enum sessions
- */
- #define DPENUMSESSIONS_STOPASYNC 0x00000020
-
- /*
- * Enumerate sessions even if they require a password
- */
- #define DPENUMSESSIONS_PASSWORDREQUIRED 0x00000040
- /*
- * Return status about progress of enumeration instead of
- * showing any status dialogs.
- */
- #define DPENUMSESSIONS_RETURNSTATUS 0x00000080
- /****************************************************************************
- *
- * GetCaps and GetPlayerCaps API flags
- *
- ****************************************************************************/
- /*
- * The latency returned should be for guaranteed message sending.
- * Default is non-guaranteed messaging.
- */
- #define DPGETCAPS_GUARANTEED 0x00000001
-
- /****************************************************************************
- *
- * GetGroupData, GetPlayerData API flags
- * Remote and local Group/Player data is maintained separately.
- * Default is DPGET_REMOTE.
- *
- ****************************************************************************/
- /*
- * Get the remote data (set by any DirectPlay object in
- * the session using DPSET_REMOTE)
- */
- #define DPGET_REMOTE 0x00000000
-
- /*
- * Get the local data (set by this DirectPlay object
- * using DPSET_LOCAL)
- */
- #define DPGET_LOCAL 0x00000001
- /****************************************************************************
- *
- * Open API flags
- *
- ****************************************************************************/
- /*
- * Join the session that is described by the DPSESSIONDESC2 structure
- */
- #define DPOPEN_JOIN 0x00000001
- /*
- * Create a new session as described by the DPSESSIONDESC2 structure
- */
- #define DPOPEN_CREATE 0x00000002
- /*
- * Return status about progress of open instead of showing
- * any status dialogs.
- */
- #define DPOPEN_RETURNSTATUS DPENUMSESSIONS_RETURNSTATUS
- /****************************************************************************
- *
- * DPLCONNECTION flags
- *
- ****************************************************************************/
- /*
- * This application should create a new session as
- * described by the DPSESIONDESC structure
- */
- #define DPLCONNECTION_CREATESESSION DPOPEN_CREATE
- /*
- * This application should join the session described by
- * the DPSESIONDESC structure with the lpAddress data
- */
- #define DPLCONNECTION_JOINSESSION DPOPEN_JOIN
- /****************************************************************************
- *
- * Receive API flags
- * Default is DPRECEIVE_ALL
- *
- ****************************************************************************/
- /*
- * Get the first message in the queue
- */
- #define DPRECEIVE_ALL 0x00000001
- /*
- * Get the first message in the queue directed to a specific player
- */
- #define DPRECEIVE_TOPLAYER 0x00000002
- /*
- * Get the first message in the queue from a specific player
- */
- #define DPRECEIVE_FROMPLAYER 0x00000004
- /*
- * Get the message but don't remove it from the queue
- */
- #define DPRECEIVE_PEEK 0x00000008
- /****************************************************************************
- *
- * Send API flags
- *
- ****************************************************************************/
- /*
- * Send the message using a guaranteed send method.
- * Default is non-guaranteed.
- */
- #define DPSEND_GUARANTEED 0x00000001
- /*
- * This flag is obsolete. It is ignored by DirectPlay
- */
- #define DPSEND_HIGHPRIORITY 0x00000002
- /*
- * This flag is obsolete. It is ignored by DirectPlay
- */
- #define DPSEND_OPENSTREAM 0x00000008
- /*
- * This flag is obsolete. It is ignored by DirectPlay
- */
- #define DPSEND_CLOSESTREAM 0x00000010
- /*
- * Send the message digitally signed to ensure authenticity.
- */
- #define DPSEND_SIGNED 0x00000020
- /*
- * Send the message with encryption to ensure privacy.
- */
- #define DPSEND_ENCRYPTED 0x00000040
- /*
- * The message is a lobby system message
- */
- #define DPSEND_LOBBYSYSTEMMESSAGE 0x00000080
- /*
- * Send message asynchronously, must check caps
- * before using this flag. It is always provided
- * if the protocol flag is set.
- */
- #define DPSEND_ASYNC 0x00000200
- /*
- * When an message is completed, don't tell me.
- * by default the application is notified with a system message.
- */
- #define DPSEND_NOSENDCOMPLETEMSG 0x00000400
- /*
- * Maximum priority for sends available to applications
- */
- #define DPSEND_MAX_PRI 0x0000FFFF
- #define DPSEND_MAX_PRIORITY DPSEND_MAX_PRI
- /****************************************************************************
- *
- * SetGroupData, SetGroupName, SetPlayerData, SetPlayerName,
- * SetSessionDesc API flags.
- * Default is DPSET_REMOTE.
- *
- ****************************************************************************/
- /*
- * Propagate the data to all players in the session
- */
- #define DPSET_REMOTE 0x00000000
- /*
- * Do not propagate the data to other players
- */
- #define DPSET_LOCAL 0x00000001
- /*
- * Used with DPSET_REMOTE, use guaranteed message send to
- * propagate the data
- */
- #define DPSET_GUARANTEED 0x00000002
- /****************************************************************************
- *
- * GetMessageQueue API flags.
- * Default is DPMESSAGEQUEUE_SEND
- *
- ****************************************************************************/
- /*
- * Get Send Queue - requires Service Provider Support
- */
- #define DPMESSAGEQUEUE_SEND 0x00000001
- /*
- * Get Receive Queue
- */
- #define DPMESSAGEQUEUE_RECEIVE 0x00000002
- /****************************************************************************
- *
- * Connect API flags
- *
- ****************************************************************************/
-
- /*
- * Start an asynchronous connect which returns status codes
- */
- #define DPCONNECT_RETURNSTATUS (DPENUMSESSIONS_RETURNSTATUS)
- /****************************************************************************
- *
- * DirectPlay system messages and message data structures
- *
- * All system message come 'From' player DPID_SYSMSG. To determine what type
- * of message it is, cast the lpData from Receive to DPMSG_GENERIC and check
- * the dwType member against one of the following DPSYS_xxx constants. Once
- * a match is found, cast the lpData to the corresponding of the DPMSG_xxx
- * structures to access the data of the message.
- *
- ****************************************************************************/
- /*
- * A new player or group has been created in the session
- * Use DPMSG_CREATEPLAYERORGROUP. Check dwPlayerType to see if it
- * is a player or a group.
- */
- #define DPSYS_CREATEPLAYERORGROUP 0x0003
- /*
- * A player has been deleted from the session
- * Use DPMSG_DESTROYPLAYERORGROUP
- */
- #define DPSYS_DESTROYPLAYERORGROUP 0x0005
- /*
- * A player has been added to a group
- * Use DPMSG_ADDPLAYERTOGROUP
- */
- #define DPSYS_ADDPLAYERTOGROUP 0x0007
- /*
- * A player has been removed from a group
- * Use DPMSG_DELETEPLAYERFROMGROUP
- */
- #define DPSYS_DELETEPLAYERFROMGROUP 0x0021
- /*
- * This DirectPlay object lost its connection with all the
- * other players in the session.
- * Use DPMSG_SESSIONLOST.
- */
- #define DPSYS_SESSIONLOST 0x0031
- /*
- * The current host has left the session.
- * This DirectPlay object is now the host.
- * Use DPMSG_HOST.
- */
- #define DPSYS_HOST 0x0101
- /*
- * The remote data associated with a player or
- * group has changed. Check dwPlayerType to see
- * if it is a player or a group
- * Use DPMSG_SETPLAYERORGROUPDATA
- */
- #define DPSYS_SETPLAYERORGROUPDATA 0x0102
- /*
- * The name of a player or group has changed.
- * Check dwPlayerType to see if it is a player
- * or a group.
- * Use DPMSG_SETPLAYERORGROUPNAME
- */
- #define DPSYS_SETPLAYERORGROUPNAME 0x0103
- /*
- * The session description has changed.
- * Use DPMSG_SETSESSIONDESC
- */
- #define DPSYS_SETSESSIONDESC 0x0104
- /*
- * A group has been added to a group
- * Use DPMSG_ADDGROUPTOGROUP
- */
- #define DPSYS_ADDGROUPTOGROUP 0x0105
- /*
- * A group has been removed from a group
- * Use DPMSG_DELETEGROUPFROMGROUP
- */
- #define DPSYS_DELETEGROUPFROMGROUP 0x0106
- /*
- * A secure player-player message has arrived.
- * Use DPMSG_SECUREMESSAGE
- */
- #define DPSYS_SECUREMESSAGE 0x0107
- /*
- * Start a new session.
- * Use DPMSG_STARTSESSION
- */
- #define DPSYS_STARTSESSION 0x0108
- /*
- * A chat message has arrived
- * Use DPMSG_CHAT
- */
- #define DPSYS_CHAT 0x0109
- /*
- * The owner of a group has changed
- * Use DPMSG_SETGROUPOWNER
- */
- #define DPSYS_SETGROUPOWNER 0x010A
- /*
- * An async send has finished, failed or been cancelled
- * Use DPMSG_SENDCOMPLETE
- */
- #define DPSYS_SENDCOMPLETE 0x010d
- /*
- * Used in the dwPlayerType field to indicate if it applies to a group
- * or a player
- */
- #define DPPLAYERTYPE_GROUP 0x00000000
- #define DPPLAYERTYPE_PLAYER 0x00000001
- /*
- * DPMSG_GENERIC
- * Generic message structure used to identify the message type.
- */
- typedef struct
- {
- DWORD dwType; // Message type
- } DPMSG_GENERIC, FAR *LPDPMSG_GENERIC;
- /*
- * DPMSG_CREATEPLAYERORGROUP
- * System message generated when a new player or group
- * created in the session with information about it.
- */
- typedef struct
- {
- DWORD dwType; // Message type
- DWORD dwPlayerType; // Is it a player or group
- DPID dpId; // ID of the player or group
- DWORD dwCurrentPlayers; // current # players & groups in session
- LPVOID lpData; // pointer to remote data
- DWORD dwDataSize; // size of remote data
- DPNAME dpnName; // structure with name info
- // the following fields are only available when using
- // the IDirectPlay3 interface or greater
- DPID dpIdParent; // id of parent group
- DWORD dwFlags; // player or group flags
- } DPMSG_CREATEPLAYERORGROUP, FAR *LPDPMSG_CREATEPLAYERORGROUP;
- /*
- * DPMSG_DESTROYPLAYERORGROUP
- * System message generated when a player or group is being
- * destroyed in the session with information about it.
- */
- typedef struct
- {
- DWORD dwType; // Message type
- DWORD dwPlayerType; // Is it a player or group
- DPID dpId; // player ID being deleted
- LPVOID lpLocalData; // copy of players local data
- DWORD dwLocalDataSize; // sizeof local data
- LPVOID lpRemoteData; // copy of players remote data
- DWORD dwRemoteDataSize; // sizeof remote data
- // the following fields are only available when using
- // the IDirectPlay3 interface or greater
- DPNAME dpnName; // structure with name info
- DPID dpIdParent; // id of parent group
- DWORD dwFlags; // player or group flags
- } DPMSG_DESTROYPLAYERORGROUP, FAR *LPDPMSG_DESTROYPLAYERORGROUP;
- /*
- * DPMSG_ADDPLAYERTOGROUP
- * System message generated when a player is being added
- * to a group.
- */
- typedef struct
- {
- DWORD dwType; // Message type
- DPID dpIdGroup; // group ID being added to
- DPID dpIdPlayer; // player ID being added
- } DPMSG_ADDPLAYERTOGROUP, FAR *LPDPMSG_ADDPLAYERTOGROUP;
- /*
- * DPMSG_DELETEPLAYERFROMGROUP
- * System message generated when a player is being
- * removed from a group
- */
- typedef DPMSG_ADDPLAYERTOGROUP DPMSG_DELETEPLAYERFROMGROUP;
- typedef DPMSG_DELETEPLAYERFROMGROUP FAR *LPDPMSG_DELETEPLAYERFROMGROUP;
- /*
- * DPMSG_ADDGROUPTOGROUP
- * System message generated when a group is being added
- * to a group.
- */
- typedef struct
- {
- DWORD dwType; // Message type
- DPID dpIdParentGroup; // group ID being added to
- DPID dpIdGroup; // group ID being added
- } DPMSG_ADDGROUPTOGROUP, FAR *LPDPMSG_ADDGROUPTOGROUP;
- /*
- * DPMSG_DELETEGROUPFROMGROUP
- * System message generated when a GROUP is being
- * removed from a group
- */
- typedef DPMSG_ADDGROUPTOGROUP DPMSG_DELETEGROUPFROMGROUP;
- typedef DPMSG_DELETEGROUPFROMGROUP FAR *LPDPMSG_DELETEGROUPFROMGROUP;
- /*
- * DPMSG_SETPLAYERORGROUPDATA
- * System message generated when remote data for a player or
- * group has changed.
- */
- typedef struct
- {
- DWORD dwType; // Message type
- DWORD dwPlayerType; // Is it a player or group
- DPID dpId; // ID of player or group
- LPVOID lpData; // pointer to remote data
- DWORD dwDataSize; // size of remote data
- } DPMSG_SETPLAYERORGROUPDATA, FAR *LPDPMSG_SETPLAYERORGROUPDATA;
- /*
- * DPMSG_SETPLAYERORGROUPNAME
- * System message generated when the name of a player or
- * group has changed.
- */
- typedef struct
- {
- DWORD dwType; // Message type
- DWORD dwPlayerType; // Is it a player or group
- DPID dpId; // ID of player or group
- DPNAME dpnName; // structure with new name info
- } DPMSG_SETPLAYERORGROUPNAME, FAR *LPDPMSG_SETPLAYERORGROUPNAME;
- /*
- * DPMSG_SETSESSIONDESC
- * System message generated when session desc has changed
- */
- typedef struct
- {
- DWORD dwType; // Message type
- DPSESSIONDESC2 dpDesc; // Session desc
- } DPMSG_SETSESSIONDESC, FAR *LPDPMSG_SETSESSIONDESC;
- /*
- * DPMSG_HOST
- * System message generated when the host has migrated to this
- * DirectPlay object.
- *
- */
- typedef DPMSG_GENERIC DPMSG_HOST;
- typedef DPMSG_HOST FAR *LPDPMSG_HOST;
- /*
- * DPMSG_SESSIONLOST
- * System message generated when the connection to the session is lost.
- *
- */
- typedef DPMSG_GENERIC DPMSG_SESSIONLOST;
- typedef DPMSG_SESSIONLOST FAR *LPDPMSG_SESSIONLOST;
- /*
- * DPMSG_SECUREMESSAGE
- * System message generated when a player requests a secure send
- */
- typedef struct
- {
- DWORD dwType; // Message Type
- DWORD dwFlags; // Signed/Encrypted
- DPID dpIdFrom; // ID of Sending Player
- LPVOID lpData; // Player message
- DWORD dwDataSize; // Size of player message
- } DPMSG_SECUREMESSAGE, FAR *LPDPMSG_SECUREMESSAGE;
- /*
- * DPMSG_STARTSESSION
- * System message containing all information required to
- * start a new session
- */
- typedef struct
- {
- DWORD dwType; // Message type
- LPDPLCONNECTION lpConn; // DPLCONNECTION structure
- } DPMSG_STARTSESSION, FAR *LPDPMSG_STARTSESSION;
- /*
- * DPMSG_CHAT
- * System message containing a chat message
- */
- typedef struct
- {
- DWORD dwType; // Message type
- DWORD dwFlags; // Message flags
- DPID idFromPlayer; // ID of the Sending Player
- DPID idToPlayer; // ID of the To Player
- DPID idToGroup; // ID of the To Group
- LPDPCHAT lpChat; // Pointer to a structure containing the chat message
- } DPMSG_CHAT, FAR *LPDPMSG_CHAT;
- /*
- * DPMSG_SETGROUPOWNER
- * System message generated when the owner of a group has changed
- */
- typedef struct
- {
- DWORD dwType; // Message type
- DPID idGroup; // ID of the group
- DPID idNewOwner; // ID of the player that is the new owner
- DPID idOldOwner; // ID of the player that used to be the owner
- } DPMSG_SETGROUPOWNER, FAR *LPDPMSG_SETGROUPOWNER;
- /*
- * DPMSG_SENDCOMPLETE
- * System message generated when finished with an Async Send message
- *
- * NOTE SENDPARMS has an overlay for DPMSG_SENDCOMPLETE, don't
- * change this message w/o changing SENDPARMS.
- */
- typedef struct
- {
- DWORD dwType;
- DPID idFrom;
- DPID idTo;
- DWORD dwFlags;
- DWORD dwPriority;
- DWORD dwTimeout;
- LPVOID lpvContext;
- DWORD dwMsgID;
- HRESULT hr;
- DWORD dwSendTime;
- } DPMSG_SENDCOMPLETE, *LPDPMSG_SENDCOMPLETE;
- /****************************************************************************
- *
- * DIRECTPLAY ERRORS
- *
- * Errors are represented by negative values and cannot be combined.
- *
- ****************************************************************************/
- #define DP_OK S_OK
- #define DPERR_ALREADYINITIALIZED MAKE_DPHRESULT( 5 )
- #define DPERR_ACCESSDENIED MAKE_DPHRESULT( 10 )
- #define DPERR_ACTIVEPLAYERS MAKE_DPHRESULT( 20 )
- #define DPERR_BUFFERTOOSMALL MAKE_DPHRESULT( 30 )
- #define DPERR_CANTADDPLAYER MAKE_DPHRESULT( 40 )
- #define DPERR_CANTCREATEGROUP MAKE_DPHRESULT( 50 )
- #define DPERR_CANTCREATEPLAYER MAKE_DPHRESULT( 60 )
- #define DPERR_CANTCREATESESSION MAKE_DPHRESULT( 70 )
- #define DPERR_CAPSNOTAVAILABLEYET MAKE_DPHRESULT( 80 )
- #define DPERR_EXCEPTION MAKE_DPHRESULT( 90 )
- #define DPERR_GENERIC E_FAIL
- #define DPERR_INVALIDFLAGS MAKE_DPHRESULT( 120 )
- #define DPERR_INVALIDOBJECT MAKE_DPHRESULT( 130 )
- #define DPERR_INVALIDPARAM E_INVALIDARG
- #define DPERR_INVALIDPARAMS DPERR_INVALIDPARAM
- #define DPERR_INVALIDPLAYER MAKE_DPHRESULT( 150 )
- #define DPERR_INVALIDGROUP MAKE_DPHRESULT( 155 )
- #define DPERR_NOCAPS MAKE_DPHRESULT( 160 )
- #define DPERR_NOCONNECTION MAKE_DPHRESULT( 170 )
- #define DPERR_NOMEMORY E_OUTOFMEMORY
- #define DPERR_OUTOFMEMORY DPERR_NOMEMORY
- #define DPERR_NOMESSAGES MAKE_DPHRESULT( 190 )
- #define DPERR_NONAMESERVERFOUND MAKE_DPHRESULT( 200 )
- #define DPERR_NOPLAYERS MAKE_DPHRESULT( 210 )
- #define DPERR_NOSESSIONS MAKE_DPHRESULT( 220 )
- #define DPERR_PENDING E_PENDING
- #define DPERR_SENDTOOBIG MAKE_DPHRESULT( 230 )
- #define DPERR_TIMEOUT MAKE_DPHRESULT( 240 )
- #define DPERR_UNAVAILABLE MAKE_DPHRESULT( 250 )
- #define DPERR_UNSUPPORTED E_NOTIMPL
- #define DPERR_BUSY MAKE_DPHRESULT( 270 )
- #define DPERR_USERCANCEL MAKE_DPHRESULT( 280 )
- #define DPERR_NOINTERFACE E_NOINTERFACE
- #define DPERR_CANNOTCREATESERVER MAKE_DPHRESULT( 290 )
- #define DPERR_PLAYERLOST MAKE_DPHRESULT( 300 )
- #define DPERR_SESSIONLOST MAKE_DPHRESULT( 310 )
- #define DPERR_UNINITIALIZED MAKE_DPHRESULT( 320 )
- #define DPERR_NONEWPLAYERS MAKE_DPHRESULT( 330 )
- #define DPERR_INVALIDPASSWORD MAKE_DPHRESULT( 340 )
- #define DPERR_CONNECTING MAKE_DPHRESULT( 350 )
- #define DPERR_CONNECTIONLOST MAKE_DPHRESULT( 360 )
- #define DPERR_UNKNOWNMESSAGE MAKE_DPHRESULT( 370 )
- #define DPERR_CANCELFAILED MAKE_DPHRESULT( 380 )
- #define DPERR_INVALIDPRIORITY MAKE_DPHRESULT( 390 )
- #define DPERR_NOTHANDLED MAKE_DPHRESULT( 400 )
- #define DPERR_CANCELLED MAKE_DPHRESULT( 410 )
- #define DPERR_ABORTED MAKE_DPHRESULT( 420 )
- #define DPERR_BUFFERTOOLARGE MAKE_DPHRESULT( 1000 )
- #define DPERR_CANTCREATEPROCESS MAKE_DPHRESULT( 1010 )
- #define DPERR_APPNOTSTARTED MAKE_DPHRESULT( 1020 )
- #define DPERR_INVALIDINTERFACE MAKE_DPHRESULT( 1030 )
- #define DPERR_NOSERVICEPROVIDER MAKE_DPHRESULT( 1040 )
- #define DPERR_UNKNOWNAPPLICATION MAKE_DPHRESULT( 1050 )
- #define DPERR_NOTLOBBIED MAKE_DPHRESULT( 1070 )
- #define DPERR_SERVICEPROVIDERLOADED MAKE_DPHRESULT( 1080 )
- #define DPERR_ALREADYREGISTERED MAKE_DPHRESULT( 1090 )
- #define DPERR_NOTREGISTERED MAKE_DPHRESULT( 1100 )
- //
- // Security related errors
- //
- #define DPERR_AUTHENTICATIONFAILED MAKE_DPHRESULT( 2000 )
- #define DPERR_CANTLOADSSPI MAKE_DPHRESULT( 2010 )
- #define DPERR_ENCRYPTIONFAILED MAKE_DPHRESULT( 2020 )
- #define DPERR_SIGNFAILED MAKE_DPHRESULT( 2030 )
- #define DPERR_CANTLOADSECURITYPACKAGE MAKE_DPHRESULT( 2040 )
- #define DPERR_ENCRYPTIONNOTSUPPORTED MAKE_DPHRESULT( 2050 )
- #define DPERR_CANTLOADCAPI MAKE_DPHRESULT( 2060 )
- #define DPERR_NOTLOGGEDIN MAKE_DPHRESULT( 2070 )
- #define DPERR_LOGONDENIED MAKE_DPHRESULT( 2080 )
- /****************************************************************************
- *
- * dplay 1.0 obsolete structures + interfaces
- * Included for compatibility only. New apps should
- * use IDirectPlay2
- *
- ****************************************************************************/
- // define this to ignore obsolete interfaces and constants
- #ifndef IDIRECTPLAY2_OR_GREATER
- #define DPOPEN_OPENSESSION DPOPEN_JOIN
- #define DPOPEN_CREATESESSION DPOPEN_CREATE
- #define DPENUMSESSIONS_PREVIOUS 0x00000004
- #define DPENUMPLAYERS_PREVIOUS 0x00000004
- #define DPSEND_GUARANTEE DPSEND_GUARANTEED
- #define DPSEND_TRYONCE 0x00000004
- #define DPCAPS_NAMESERVICE 0x00000001
- #define DPCAPS_NAMESERVER DPCAPS_ISHOST
- #define DPCAPS_GUARANTEED 0x00000004
- #define DPLONGNAMELEN 52
- #define DPSHORTNAMELEN 20
- #define DPSESSIONNAMELEN 32
- #define DPPASSWORDLEN 16
- #define DPUSERRESERVED 16
- #define DPSYS_ADDPLAYER 0x0003
- #define DPSYS_DELETEPLAYER 0x0005
- #define DPSYS_DELETEGROUP 0x0020
- #define DPSYS_DELETEPLAYERFROMGRP 0x0021
- #define DPSYS_CONNECT 0x484b
- typedef struct
- {
- DWORD dwType;
- DWORD dwPlayerType;
- DPID dpId;
- char szLongName[DPLONGNAMELEN];
- char szShortName[DPSHORTNAMELEN];
- DWORD dwCurrentPlayers;
- } DPMSG_ADDPLAYER;
- typedef DPMSG_ADDPLAYER DPMSG_ADDGROUP;
- typedef struct
- {
- DWORD dwType;
- DPID dpIdGroup;
- DPID dpIdPlayer;
- } DPMSG_GROUPADD;
- typedef DPMSG_GROUPADD DPMSG_GROUPDELETE;
- typedef struct
- {
- DWORD dwType;
- DPID dpId;
- } DPMSG_DELETEPLAYER;
- typedef BOOL (PASCAL *LPDPENUMPLAYERSCALLBACK)(
- DPID dpId,
- LPSTR lpFriendlyName,
- LPSTR lpFormalName,
- DWORD dwFlags,
- LPVOID lpContext );
- typedef struct
- {
- DWORD dwSize;
- GUID guidSession;
- DWORD_PTR dwSession;
- DWORD dwMaxPlayers;
- DWORD dwCurrentPlayers;
- DWORD dwFlags;
- char szSessionName[DPSESSIONNAMELEN];
- char szUserField[DPUSERRESERVED];
- DWORD_PTR dwReserved1;
- char szPassword[DPPASSWORDLEN];
- DWORD_PTR dwReserved2;
- DWORD_PTR dwUser1;
- DWORD_PTR dwUser2;
- DWORD_PTR dwUser3;
- DWORD_PTR dwUser4;
- } DPSESSIONDESC,*LPDPSESSIONDESC;
- typedef BOOL (PASCAL * LPDPENUMSESSIONSCALLBACK)(
- LPDPSESSIONDESC lpDPSessionDesc,
- LPVOID lpContext,
- LPDWORD lpdwTimeOut,
- DWORD dwFlags);
- /*
- * IDirectPlay
- */
- #undef INTERFACE
- #define INTERFACE IDirectPlay
- DECLARE_INTERFACE_( IDirectPlay, IUnknown )
- {
- /*** IUnknown methods ***/
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
- /*** IDirectPlay methods ***/
- STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE;
- STDMETHOD(Close) (THIS) PURE;
- STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPSTR,LPSTR,LPHANDLE) PURE;
- STDMETHOD(CreateGroup) (THIS_ LPDPID,LPSTR,LPSTR) PURE;
- STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;
- STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE;
- STDMETHOD(DestroyGroup) (THIS_ DPID) PURE;
- STDMETHOD(EnableNewPlayers) (THIS_ BOOL) PURE;
- STDMETHOD(EnumGroupPlayers) (THIS_ DPID, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE;
- STDMETHOD(EnumGroups) (THIS_ DWORD_PTR, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE;
- STDMETHOD(EnumPlayers) (THIS_ DWORD_PTR, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE;
- STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC,DWORD,LPDPENUMSESSIONSCALLBACK,LPVOID,DWORD) PURE;
- STDMETHOD(GetCaps) (THIS_ LPDPCAPS) PURE;
- STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE;
- STDMETHOD(GetPlayerCaps) (THIS_ DPID, LPDPCAPS) PURE;
- STDMETHOD(GetPlayerName) (THIS_ DPID,LPSTR,LPDWORD,LPSTR,LPDWORD) PURE;
- STDMETHOD(Initialize) (THIS_ LPGUID) PURE;
- STDMETHOD(Open) (THIS_ LPDPSESSIONDESC) PURE;
- STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE;
- STDMETHOD(SaveSession) (THIS_ LPSTR) PURE;
- STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE;
- STDMETHOD(SetPlayerName) (THIS_ DPID,LPSTR,LPSTR) PURE;
- };
- /****************************************************************************
- *
- * IDirectPlay interface macros
- *
- ****************************************************************************/
- #if !defined(__cplusplus) || defined(CINTERFACE)
- #define IDirectPlay_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b)
- #define IDirectPlay_Close(p) (p)->lpVtbl->Close(p)
- #define IDirectPlay_CreateGroup(p,a,b,c) (p)->lpVtbl->CreateGroup(p,a,b,c)
- #define IDirectPlay_CreatePlayer(p,a,b,c,d) (p)->lpVtbl->CreatePlayer(p,a,b,c,d)
- #define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
- #define IDirectPlay_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a)
- #define IDirectPlay_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a)
- #define IDirectPlay_EnableNewPlayers(p,a) (p)->lpVtbl->EnableNewPlayers(p,a)
- #define IDirectPlay_EnumGroupPlayers(p,a,b,c,d) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d)
- #define IDirectPlay_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d)
- #define IDirectPlay_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
- #define IDirectPlay_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
- #define IDirectPlay_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
- #define IDirectPlay_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b)
- #define IDirectPlay_GetPlayerCaps(p,a,b) (p)->lpVtbl->GetPlayerCaps(p,a,b)
- #define IDirectPlay_GetPlayerName(p,a,b,c,d,e) (p)->lpVtbl->GetPlayerName(p,a,b,c,d,e)
- #define IDirectPlay_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
- #define IDirectPlay_Open(p,a) (p)->lpVtbl->Open(p,a)
- #define IDirectPlay_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e)
- #define IDirectPlay_SaveSession(p,a) (p)->lpVtbl->SaveSession(p,a)
- #define IDirectPlay_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e)
- #define IDirectPlay_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c)
- #else /* C++ */
- #define IDirectPlay_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b)
- #define IDirectPlay_Close(p) (p)->Close()
- #define IDirectPlay_CreateGroup(p,a,b,c) (p)->CreateGroup(a,b,c)
- #define IDirectPlay_CreatePlayer(p,a,b,c,d) (p)->CreatePlayer(a,b,c,d)
- #define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b)
- #define IDirectPlay_DestroyGroup(p,a) (p)->DestroyGroup(a)
- #define IDirectPlay_DestroyPlayer(p,a) (p)->DestroyPlayer(a)
- #define IDirectPlay_EnableNewPlayers(p,a) (p)->EnableNewPlayers(a)
- #define IDirectPlay_EnumGroupPlayers(p,a,b,c,d) (p)->EnumGroupPlayers(a,b,c,d)
- #define IDirectPlay_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d)
- #define IDirectPlay_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d)
- #define IDirectPlay_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e)
- #define IDirectPlay_GetCaps(p,a) (p)->GetCaps(a)
- #define IDirectPlay_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b)
- #define IDirectPlay_GetPlayerCaps(p,a,b) (p)->GetPlayerCaps(a,b)
- #define IDirectPlay_GetPlayerName(p,a,b,c,d,e) (p)->GetPlayerName(a,b,c,d,e)
- #define IDirectPlay_Initialize(p,a) (p)->Initialize(a)
- #define IDirectPlay_Open(p,a) (p)->Open(a)
- #define IDirectPlay_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e)
- #define IDirectPlay_SaveSession(p,a) (p)->SaveSession(a)
- #define IDirectPlay_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e)
- #define IDirectPlay_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c)
- #endif
- DEFINE_GUID(IID_IDirectPlay, 0x5454e9a0, 0xdb65, 0x11ce, 0x92, 0x1c, 0x00, 0xaa, 0x00, 0x6c, 0x49, 0x72);
- #endif // IDIRECTPLAY2_OR_GREATER
- /****************************************************************************
- *
- * IDirectPlay macros (included regardless of IDIRECTPLAY2_OR_GREATER flag)
- *
- ****************************************************************************/
- #if !defined(__cplusplus) || defined(CINTERFACE)
- #define IDirectPlay_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
- #define IDirectPlay_AddRef(p) (p)->lpVtbl->AddRef(p)
- #define IDirectPlay_Release(p) (p)->lpVtbl->Release(p)
- #else
- #define IDirectPlay_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
- #define IDirectPlay_AddRef(p) (p)->AddRef()
- #define IDirectPlay_Release(p) (p)->Release()
- #endif // IDirectPlay interface macros
- #ifdef __cplusplus
- };
- #endif
- #pragma warning(default:4201)
- #endif