|
|
/*==========================================================================;
* * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved. * * File: dplobby.h * Content: DirectPlayLobby include file *@@BEGIN_MSINTERNAL * History: * Date By Reason * =========== ======= ========== * 4/13/96 myronth Created it * 6/20/96 myronth Cleaned it up * 6/24/96 myronth More cleanup * 7/1/96 myronth Changed DPLERR_ to DPERR_ * 7/9/96 ajayj Cleaned up formatting to match dplay.h * 7/15/96 ajayj Added DPADDRESS chunk tags for dplaunch * sample app. * 7/16/96 kipo changed address types to be GUIDs instead of 4CC * 8/1/96 sohailm Added IDirectPlayLobby interface macros * 8/10/96 sohailm Bug#2227: declared pointers in callbacks as const. * 8/15/96 sohailm Added type definition for LPCDPLCONNECTION * Changed LPGUIDs to REFGUIDs in IDirectPlayLobby interface * Made function parameters constant where appropriate * 8/16/96 andyco took out some const and ref stuff for ship * 8/16/96 myronth Added SetConnectionSettings & Connect methods * 8/21/96 ajayj replace tabs with spaces * 8/21/96 kipo Added DPCOMPORTADDRESS structure * 9/5/96 myronth Wrapped DPLCAPS with MSINTERNAL * 10/23/96 myronth Added first cut of client/server methods * 10/25/96 myronth Added DX5 methods * 12/13/96 myronth Changed DPLAD_SYSTEM to DPLMSG_SYSTEM * 1/30/97 myronth Added MSINTERNAL's to DX5 stuff for meltdown * 2/12/97 myronth Removed meltdown changes * 2/12/97 myronth Mass DX5 changes * 2/18/97 myronth Implemented GetObjectCaps * 3/5/97 andyco added DPAID_TotalSize * 3/12/97 myronth Added DPAID_LobbyProvider chunk * 3/17/97 kipo Added data structures for CreateCompoundAddress() and * added guids for Unicode phone numbers and IP addresses * 3/24/97 kipo Added support for IDirectPlayLobby2 interface * 4/11/97 myronth Added CLSID_DirectPlayLobby clsid * 5/8/97 myronth Moved DPLCONNECTION structure definition to dplay.h * 5/21/97 ajayj Added structures and definitions for standard lobby * messages * 5/23/97 ajayj Added DPLDATA_PLAYERGUID structure * 5/30/97 ajayj Added DPLPROPERTY_MessagesSupported GUID * 6/7/97 myronth Fixed CreateCompoundAddress macros * 6/6/97 kipo Added "FAR" to all structures * 8/19/97 myronth Added DPLMSG_NEWSESSIONHOST structure * 11/13/97 myronth Added guidInstance to lobby system messages (#10944) * 12/2/97 myronth Added Register/UnregisterApplication * 12/4/97 myronth Added ConnectEx * 1/20/98 myronth Added WaitForConnectionSettings * 1/29/98 sohailm Added DPAID_INetPort. * 2/11/98 a-peterz Clarify that DPAID_INetPort value is a word (#18210) * 4/15/98 a-peterz Fix IDirectPlayLobby_CreateCompoundAddress C++ version * 10/22/99 aarono added support for application flags *@@END_MSINTERNAL ***************************************************************************/ #ifndef __DPLOBBY_INCLUDED__
#define __DPLOBBY_INCLUDED__
#include "dplay.h"
/* avoid warnings at Level 4 */ #pragma warning(disable:4201)
#ifdef __cplusplus
extern "C" { #endif /* __cplusplus */
/*
* GUIDS used by DirectPlay objects */
/* {AF465C71-9588-11cf-A020-00AA006157AC} */ DEFINE_GUID(IID_IDirectPlayLobby, 0xaf465c71, 0x9588, 0x11cf, 0xa0, 0x20, 0x0, 0xaa, 0x0, 0x61, 0x57, 0xac); /* {26C66A70-B367-11cf-A024-00AA006157AC} */ DEFINE_GUID(IID_IDirectPlayLobbyA, 0x26c66a70, 0xb367, 0x11cf, 0xa0, 0x24, 0x0, 0xaa, 0x0, 0x61, 0x57, 0xac); /* {0194C220-A303-11d0-9C4F-00A0C905425E} */ DEFINE_GUID(IID_IDirectPlayLobby2, 0x194c220, 0xa303, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); /* {1BB4AF80-A303-11d0-9C4F-00A0C905425E} */ DEFINE_GUID(IID_IDirectPlayLobby2A, 0x1bb4af80, 0xa303, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e); /* {2DB72490-652C-11d1-A7A8-0000F803ABFC} */ DEFINE_GUID(IID_IDirectPlayLobby3, 0x2db72490, 0x652c, 0x11d1, 0xa7, 0xa8, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); /* {2DB72491-652C-11d1-A7A8-0000F803ABFC} */ DEFINE_GUID(IID_IDirectPlayLobby3A, 0x2db72491, 0x652c, 0x11d1, 0xa7, 0xa8, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc); /* {2FE8F810-B2A5-11d0-A787-0000F803ABFC} */ DEFINE_GUID(CLSID_DirectPlayLobby, 0x2fe8f810, 0xb2a5, 0x11d0, 0xa7, 0x87, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
/****************************************************************************
* * IDirectPlayLobby Structures * * Various structures used to invoke DirectPlayLobby. * ****************************************************************************/
typedef struct IDirectPlayLobby FAR *LPDIRECTPLAYLOBBY; typedef struct IDirectPlayLobby FAR *LPDIRECTPLAYLOBBYA; typedef struct IDirectPlayLobby IDirectPlayLobbyA;
typedef struct IDirectPlayLobby2 FAR *LPDIRECTPLAYLOBBY2; typedef struct IDirectPlayLobby2 FAR *LPDIRECTPLAYLOBBY2A; typedef struct IDirectPlayLobby2 IDirectPlayLobby2A;
typedef struct IDirectPlayLobby3 FAR *LPDIRECTPLAYLOBBY3; typedef struct IDirectPlayLobby3 FAR *LPDIRECTPLAYLOBBY3A; typedef struct IDirectPlayLobby3 IDirectPlayLobby3A;
/*
* DPLAPPINFO * Used to hold information about a registered DirectPlay * application */ typedef struct DPLAPPINFO { DWORD dwSize; // Size of this structure
GUID guidApplication; // GUID of the Application
union { LPSTR lpszAppNameA; // Pointer to the Application Name
LPWSTR lpszAppName; };
} DPLAPPINFO, FAR *LPDPLAPPINFO;
/*
* LPCDPLAPPINFO * A constant pointer to DPLAPPINFO */ typedef const DPLAPPINFO FAR *LPCDPLAPPINFO;
/*
* DPCOMPOUNDADDRESSELEMENT * * An array of these is passed to CreateCompoundAddresses() */ typedef struct DPCOMPOUNDADDRESSELEMENT { GUID guidDataType; DWORD dwDataSize; LPVOID lpData; } DPCOMPOUNDADDRESSELEMENT, FAR *LPDPCOMPOUNDADDRESSELEMENT;
/*
* LPCDPCOMPOUNDADDRESSELEMENT * A constant pointer to DPCOMPOUNDADDRESSELEMENT */ typedef const DPCOMPOUNDADDRESSELEMENT FAR *LPCDPCOMPOUNDADDRESSELEMENT;
/*
* LPDPAPPLICATIONDESC * Used to register a DirectPlay application */ typedef struct DPAPPLICATIONDESC { DWORD dwSize; DWORD dwFlags; union { LPSTR lpszApplicationNameA; LPWSTR lpszApplicationName; }; GUID guidApplication; union { LPSTR lpszFilenameA; LPWSTR lpszFilename; }; union { LPSTR lpszCommandLineA; LPWSTR lpszCommandLine; }; union { LPSTR lpszPathA; LPWSTR lpszPath; }; union { LPSTR lpszCurrentDirectoryA; LPWSTR lpszCurrentDirectory; }; LPSTR lpszDescriptionA; LPWSTR lpszDescriptionW; } DPAPPLICATIONDESC, *LPDPAPPLICATIONDESC;
/*
* LPDPAPPLICATIONDESC2 * Used to register a DirectPlay application */ typedef struct DPAPPLICATIONDESC2 { DWORD dwSize; DWORD dwFlags; union { LPSTR lpszApplicationNameA; LPWSTR lpszApplicationName; }; GUID guidApplication; union { LPSTR lpszFilenameA; LPWSTR lpszFilename; }; union { LPSTR lpszCommandLineA; LPWSTR lpszCommandLine; }; union { LPSTR lpszPathA; LPWSTR lpszPath; }; union { LPSTR lpszCurrentDirectoryA; LPWSTR lpszCurrentDirectory; }; LPSTR lpszDescriptionA; LPWSTR lpszDescriptionW; union { LPSTR lpszAppLauncherNameA; LPWSTR lpszAppLauncherName; }; } DPAPPLICATIONDESC2, *LPDPAPPLICATIONDESC2;
/****************************************************************************
* * Enumeration Method Callback Prototypes * ****************************************************************************/
/*
* Callback for EnumAddress() */ typedef BOOL (FAR PASCAL *LPDPENUMADDRESSCALLBACK)( REFGUID guidDataType, DWORD dwDataSize, LPCVOID lpData, LPVOID lpContext);
/*
* Callback for EnumAddressTypes() */ typedef BOOL (FAR PASCAL *LPDPLENUMADDRESSTYPESCALLBACK)( REFGUID guidDataType, LPVOID lpContext, DWORD dwFlags);
/*
* Callback for EnumLocalApplications() */ typedef BOOL (FAR PASCAL * LPDPLENUMLOCALAPPLICATIONSCALLBACK)( LPCDPLAPPINFO lpAppInfo, LPVOID lpContext, DWORD dwFlags);
/****************************************************************************
* * DirectPlayLobby API Prototypes * ****************************************************************************/ #ifdef UNICODE
#define DirectPlayLobbyCreate DirectPlayLobbyCreateW
#else
#define DirectPlayLobbyCreate DirectPlayLobbyCreateA
#endif /* UNICODE */
extern HRESULT WINAPI DirectPlayLobbyCreateW(LPGUID, LPDIRECTPLAYLOBBY *, IUnknown *, LPVOID, DWORD ); extern HRESULT WINAPI DirectPlayLobbyCreateA(LPGUID, LPDIRECTPLAYLOBBYA *, IUnknown *, LPVOID, DWORD );
/****************************************************************************
* * IDirectPlayLobby (and IDirectPlayLobbyA) Interface * ****************************************************************************/ #undef INTERFACE
#define INTERFACE IDirectPlayLobby
DECLARE_INTERFACE_( IDirectPlayLobby, IUnknown ) { /* IUnknown Methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE;
/* IDirectPlayLobby Methods */ STDMETHOD(Connect) (THIS_ DWORD, LPDIRECTPLAY2 *, IUnknown FAR *) PURE; STDMETHOD(CreateAddress) (THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE; STDMETHOD(EnumAddress) (THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE; STDMETHOD(EnumAddressTypes) (THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE; STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE; STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE; STDMETHOD(ReceiveLobbyMessage) (THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE; STDMETHOD(RunApplication) (THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE; STDMETHOD(SendLobbyMessage) (THIS_ DWORD, DWORD, LPVOID, DWORD) PURE; STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE; STDMETHOD(SetLobbyMessageEvent) (THIS_ DWORD, DWORD, HANDLE) PURE;
};
/****************************************************************************
* * IDirectPlayLobby2 (and IDirectPlayLobby2A) Interface * ****************************************************************************/ #undef INTERFACE
#define INTERFACE IDirectPlayLobby2
DECLARE_INTERFACE_( IDirectPlayLobby2, IDirectPlayLobby ) { /* IUnknown Methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE;
/* IDirectPlayLobby Methods */ STDMETHOD(Connect) (THIS_ DWORD, LPDIRECTPLAY2 *, IUnknown FAR *) PURE; STDMETHOD(CreateAddress) (THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE; STDMETHOD(EnumAddress) (THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE; STDMETHOD(EnumAddressTypes) (THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE; STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE; STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE; STDMETHOD(ReceiveLobbyMessage) (THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE; STDMETHOD(RunApplication) (THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE; STDMETHOD(SendLobbyMessage) (THIS_ DWORD, DWORD, LPVOID, DWORD) PURE; STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE; STDMETHOD(SetLobbyMessageEvent) (THIS_ DWORD, DWORD, HANDLE) PURE;
/* IDirectPlayLobby2 Methods */ STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT,DWORD,LPVOID,LPDWORD) PURE; };
/****************************************************************************
* * IDirectPlayLobby3 (and IDirectPlayLobby3A) Interface * ****************************************************************************/ #undef INTERFACE
#define INTERFACE IDirectPlayLobby3
DECLARE_INTERFACE_( IDirectPlayLobby3, IDirectPlayLobby ) { /* IUnknown Methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE;
/* IDirectPlayLobby Methods */ STDMETHOD(Connect) (THIS_ DWORD, LPDIRECTPLAY2 *, IUnknown FAR *) PURE; STDMETHOD(CreateAddress) (THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE; STDMETHOD(EnumAddress) (THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE; STDMETHOD(EnumAddressTypes) (THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE; STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE; STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE; STDMETHOD(ReceiveLobbyMessage) (THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE; STDMETHOD(RunApplication) (THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE; STDMETHOD(SendLobbyMessage) (THIS_ DWORD, DWORD, LPVOID, DWORD) PURE; STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE; STDMETHOD(SetLobbyMessageEvent) (THIS_ DWORD, DWORD, HANDLE) PURE;
/* IDirectPlayLobby2 Methods */ STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT,DWORD,LPVOID,LPDWORD) PURE;
/* IDirectPlayLobby3 Methods */ STDMETHOD(ConnectEx) (THIS_ DWORD, REFIID, LPVOID *, IUnknown FAR *) PURE; STDMETHOD(RegisterApplication) (THIS_ DWORD, LPVOID) PURE; STDMETHOD(UnregisterApplication)(THIS_ DWORD, REFGUID) PURE; STDMETHOD(WaitForConnectionSettings)(THIS_ DWORD) PURE; };
/****************************************************************************
* * IDirectPlayLobby interface macros * ****************************************************************************/
#if !defined(__cplusplus) || defined(CINTERFACE)
#define IDirectPlayLobby_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectPlayLobby_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectPlayLobby_Release(p) (p)->lpVtbl->Release(p)
#define IDirectPlayLobby_Connect(p,a,b,c) (p)->lpVtbl->Connect(p,a,b,c)
#define IDirectPlayLobby_ConnectEx(p,a,b,c,d) (p)->lpVtbl->ConnectEx(p,a,b,c,d)
#define IDirectPlayLobby_CreateAddress(p,a,b,c,d,e,f) (p)->lpVtbl->CreateAddress(p,a,b,c,d,e,f)
#define IDirectPlayLobby_CreateCompoundAddress(p,a,b,c,d) (p)->lpVtbl->CreateCompoundAddress(p,a,b,c,d)
#define IDirectPlayLobby_EnumAddress(p,a,b,c,d) (p)->lpVtbl->EnumAddress(p,a,b,c,d)
#define IDirectPlayLobby_EnumAddressTypes(p,a,b,c,d) (p)->lpVtbl->EnumAddressTypes(p,a,b,c,d)
#define IDirectPlayLobby_EnumLocalApplications(p,a,b,c) (p)->lpVtbl->EnumLocalApplications(p,a,b,c)
#define IDirectPlayLobby_GetConnectionSettings(p,a,b,c) (p)->lpVtbl->GetConnectionSettings(p,a,b,c)
#define IDirectPlayLobby_ReceiveLobbyMessage(p,a,b,c,d,e) (p)->lpVtbl->ReceiveLobbyMessage(p,a,b,c,d,e)
#define IDirectPlayLobby_RegisterApplication(p,a,b) (p)->lpVtbl->RegisterApplication(p,a,b)
#define IDirectPlayLobby_RunApplication(p,a,b,c,d) (p)->lpVtbl->RunApplication(p,a,b,c,d)
#define IDirectPlayLobby_SendLobbyMessage(p,a,b,c,d) (p)->lpVtbl->SendLobbyMessage(p,a,b,c,d)
#define IDirectPlayLobby_SetConnectionSettings(p,a,b,c) (p)->lpVtbl->SetConnectionSettings(p,a,b,c)
#define IDirectPlayLobby_SetLobbyMessageEvent(p,a,b,c) (p)->lpVtbl->SetLobbyMessageEvent(p,a,b,c)
#define IDirectPlayLobby_UnregisterApplication(p,a,b) (p)->lpVtbl->UnregisterApplication(p,a,b)
#define IDirectPlayLobby_WaitForConnectionSettings(p,a) (p)->lpVtbl->WaitForConnectionSettings(p,a)
#else /* C++ */
#define IDirectPlayLobby_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirectPlayLobby_AddRef(p) (p)->AddRef()
#define IDirectPlayLobby_Release(p) (p)->Release()
#define IDirectPlayLobby_Connect(p,a,b,c) (p)->Connect(a,b,c)
#define IDirectPlayLobby_ConnectEx(p,a,b,c,d) (p)->ConnectEx(a,b,c,d)
#define IDirectPlayLobby_CreateAddress(p,a,b,c,d,e,f) (p)->CreateAddress(a,b,c,d,e,f)
#define IDirectPlayLobby_CreateCompoundAddress(p,a,b,c,d) (p)->CreateCompoundAddress(a,b,c,d)
#define IDirectPlayLobby_EnumAddress(p,a,b,c,d) (p)->EnumAddress(a,b,c,d)
#define IDirectPlayLobby_EnumAddressTypes(p,a,b,c,d) (p)->EnumAddressTypes(a,b,c,d)
#define IDirectPlayLobby_EnumLocalApplications(p,a,b,c) (p)->EnumLocalApplications(a,b,c)
#define IDirectPlayLobby_GetConnectionSettings(p,a,b,c) (p)->GetConnectionSettings(a,b,c)
#define IDirectPlayLobby_ReceiveLobbyMessage(p,a,b,c,d,e) (p)->ReceiveLobbyMessage(a,b,c,d,e)
#define IDirectPlayLobby_RegisterApplication(p,a,b) (p)->RegisterApplication(a,b)
#define IDirectPlayLobby_RunApplication(p,a,b,c,d) (p)->RunApplication(a,b,c,d)
#define IDirectPlayLobby_SendLobbyMessage(p,a,b,c,d) (p)->SendLobbyMessage(a,b,c,d)
#define IDirectPlayLobby_SetConnectionSettings(p,a,b,c) (p)->SetConnectionSettings(a,b,c)
#define IDirectPlayLobby_SetLobbyMessageEvent(p,a,b,c) (p)->SetLobbyMessageEvent(a,b,c)
#define IDirectPlayLobby_UnregisterApplication(p,a,b) (p)->UnregisterApplication(a,b)
#define IDirectPlayLobby_WaitForConnectionSettings(p,a) (p)->WaitForConnectionSettings(a)
#endif
/****************************************************************************
* * DirectPlayLobby Flags * ****************************************************************************/
/*
* This flag is used by IDirectPlayLobby->WaitForConnectionSettings to * cancel a current wait that is in progress. */ #define DPLWAIT_CANCEL 0x00000001
/*
* This is a message flag used by ReceiveLobbyMessage. It can be * returned in the dwMessageFlags parameter to indicate a message from * the system. */ #define DPLMSG_SYSTEM 0x00000001
/*
* This is a message flag used by ReceiveLobbyMessage and SendLobbyMessage. * It is used to indicate that the message is a standard lobby message. * DPLMSG_SETPROPERTY, DPLMSG_SETPROPERTYRESPONSE, DPLMSG_GETPROPERTY, * DPLMSG_GETPROPERTYRESPONSE */ #define DPLMSG_STANDARD 0x00000002
/*
* Lobbyable Application registration flags */
/*
* Applications registered with this flag will not show up when * applications are enumerated in the lobby. This application * will only be able to be launched by a lobby client that already * knows about the application. */ #define DPLAPP_NOENUM 0x80000000
/*
* Applications registered with this flag want voice to automatically * be enabled for their application. All players will be launched into * an 'n'-way voice conference when the application is started. The * user will be able to enable this flag for existing non-voice * directplay applications. */ #define DPLAPP_AUTOVOICE 0x00000001
/*
* Applications that do their own voice conferencing should register with * this flag to avoid allowing the user to enable other voice chat * capabilites during the same session. This is to avoid users forcing * the DPLAPP_AUTOVOICE flag for the application. */ #define DPLAPP_SELFVOICE 0x00000002
/****************************************************************************
* * DirectPlayLobby messages and message data structures * * All system messages have a dwMessageFlags value of DPLMSG_SYSTEM returned * from a call to ReceiveLobbyMessage. * * All standard messages have a dwMessageFlags value of DPLMSG_STANDARD returned * from a call to ReceiveLobbyMessage. * ****************************************************************************/
/*
* DPLMSG_GENERIC * Generic message structure used to identify the message type. */ typedef struct _DPLMSG_GENERIC { DWORD dwType; // Message type
} DPLMSG_GENERIC, FAR *LPDPLMSG_GENERIC;
/*
* DPLMSG_SYSTEMMESSAGE * Generic message format for all system messages -- * DPLSYS_CONNECTIONSETTINGSREAD, DPLSYS_DPLYCONNECTSUCCEEDED, * DPLSYS_DPLAYCONNECTFAILED, DPLSYS_APPTERMINATED, DPLSYS_NEWCONNECTIONSETTINGS */ typedef struct _DPLMSG_SYSTEMMESSAGE { DWORD dwType; // Message type
GUID guidInstance; // Instance GUID of the dplay session the message corresponds to
} DPLMSG_SYSTEMMESSAGE, FAR *LPDPLMSG_SYSTEMMESSAGE;
/*
* DPLMSG_SETPROPERTY * Standard message sent by an application to a lobby to set a * property */ typedef struct _DPLMSG_SETPROPERTY { DWORD dwType; // Message type
DWORD dwRequestID; // Request ID (DPL_NOCONFIRMATION if no confirmation desired)
GUID guidPlayer; // Player GUID
GUID guidPropertyTag; // Property GUID
DWORD dwDataSize; // Size of data
DWORD dwPropertyData[1]; // Buffer containing data
} DPLMSG_SETPROPERTY, FAR *LPDPLMSG_SETPROPERTY;
#define DPL_NOCONFIRMATION 0
/*
* DPLMSG_SETPROPERTYRESPONSE * Standard message returned by a lobby to confirm a * DPLMSG_SETPROPERTY message. */ typedef struct _DPLMSG_SETPROPERTYRESPONSE { DWORD dwType; // Message type
DWORD dwRequestID; // Request ID
GUID guidPlayer; // Player GUID
GUID guidPropertyTag; // Property GUID
HRESULT hr; // Return Code
} DPLMSG_SETPROPERTYRESPONSE, FAR *LPDPLMSG_SETPROPERTYRESPONSE;
/*
* DPLMSG_GETPROPERTY * Standard message sent by an application to a lobby to request * the current value of a property */ typedef struct _DPLMSG_GETPROPERTY { DWORD dwType; // Message type
DWORD dwRequestID; // Request ID
GUID guidPlayer; // Player GUID
GUID guidPropertyTag; // Property GUID
} DPLMSG_GETPROPERTY, FAR *LPDPLMSG_GETPROPERTY;
/*
* DPLMSG_GETPROPERTYRESPONSE * Standard message returned by a lobby in response to a * DPLMSG_GETPROPERTY message. */ typedef struct _DPLMSG_GETPROPERTYRESPONSE { DWORD dwType; // Message type
DWORD dwRequestID; // Request ID
GUID guidPlayer; // Player GUID
GUID guidPropertyTag; // Property GUID
HRESULT hr; // Return Code
DWORD dwDataSize; // Size of data
DWORD dwPropertyData[1]; // Buffer containing data
} DPLMSG_GETPROPERTYRESPONSE, FAR *LPDPLMSG_GETPROPERTYRESPONSE;
/*
* DPLMSG_NEWSESSIONHOST * Standard message returned by a lobby in response to a * the session host migrating to a new client */ typedef struct _DPLMSG_NEWSESSIONHOST { DWORD dwType; // Message type
GUID guidInstance; // GUID Instance of the session
} DPLMSG_NEWSESSIONHOST, FAR *LPDPLMSG_NEWSESSIONHOST;
/******************************************
* * DirectPlay Lobby message dwType values * *****************************************/
/*
* The application has read the connection settings. * It is now O.K. for the lobby client to release * its IDirectPlayLobby interface. */ #define DPLSYS_CONNECTIONSETTINGSREAD 0x00000001
/*
* The application's call to DirectPlayConnect failed */ #define DPLSYS_DPLAYCONNECTFAILED 0x00000002
/*
* The application has created a DirectPlay session. */ #define DPLSYS_DPLAYCONNECTSUCCEEDED 0x00000003
/*
* The application has terminated. */ #define DPLSYS_APPTERMINATED 0x00000004
/*
* The message is a DPLMSG_SETPROPERTY message. */ #define DPLSYS_SETPROPERTY 0x00000005
/*
* The message is a DPLMSG_SETPROPERTYRESPONSE message. */ #define DPLSYS_SETPROPERTYRESPONSE 0x00000006
/*
* The message is a DPLMSG_GETPROPERTY message. */ #define DPLSYS_GETPROPERTY 0x00000007
/*
* The message is a DPLMSG_GETPROPERTYRESPONSE message. */ #define DPLSYS_GETPROPERTYRESPONSE 0x00000008
/*
* The message is a DPLMSG_NEWSESSIONHOST message. */ #define DPLSYS_NEWSESSIONHOST 0x00000009
/*
* New connection settings are available. */ #define DPLSYS_NEWCONNECTIONSETTINGS 0x0000000A
/*
* The Lobby Client has released the DirectPlayLobby Interface */ #define DPLSYS_LOBBYCLIENTRELEASE 0x0000000B
/****************************************************************************
* * DirectPlay defined property GUIDs and associated data structures * ****************************************************************************/
/*
* DPLPROPERTY_MessagesSupported * * Request whether the lobby supports standard. Lobby with respond with either * TRUE or FALSE or may not respond at all. * * Property data is a single BOOL with TRUE or FALSE */ // {762CCDA1-D916-11d0-BA39-00C04FD7ED67}
DEFINE_GUID(DPLPROPERTY_MessagesSupported, 0x762ccda1, 0xd916, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67);
/*
* DPLPROPERTY_LobbyGuid * * Request the GUID that identifies the lobby software that the application * is communicating with. * * Property data is a single GUID. */ // {F56920A0-D218-11d0-BA39-00C04FD7ED67}
DEFINE_GUID(DPLPROPERTY_LobbyGuid, 0xf56920a0, 0xd218, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67);
/*
* DPLPROPERTY_PlayerGuid * * Request the GUID that identifies the player on this machine for sending * property data back to the lobby. * * Property data is the DPLDATA_PLAYERDATA structure */ // {B4319322-D20D-11d0-BA39-00C04FD7ED67}
DEFINE_GUID(DPLPROPERTY_PlayerGuid, 0xb4319322, 0xd20d, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67);
/*
* DPLDATA_PLAYERGUID * * Data structure to hold the GUID of the player and player creation flags * from the lobby. */ typedef struct _DPLDATA_PLAYERGUID { GUID guidPlayer; DWORD dwPlayerFlags; } DPLDATA_PLAYERGUID, FAR *LPDPLDATA_PLAYERGUID;
/*
* DPLPROPERTY_PlayerScore * * Used to send an array of long integers to the lobby indicating the * score of a player. * * Property data is the DPLDATA_PLAYERSCORE structure. */ // {48784000-D219-11d0-BA39-00C04FD7ED67}
DEFINE_GUID(DPLPROPERTY_PlayerScore, 0x48784000, 0xd219, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67);
/*
* DPLDATA_PLAYERSCORE * * Data structure to hold an array of long integers representing a player score. * Application must allocate enough memory to hold all the scores. */ typedef struct _DPLDATA_PLAYERSCORE { DWORD dwScoreCount; LONG Score[1]; } DPLDATA_PLAYERSCORE, FAR *LPDPLDATA_PLAYERSCORE;
/****************************************************************************
* * DirectPlay Address ID's * ****************************************************************************/
/* DirectPlay Address
* * A DirectPlay address consists of multiple chunks of data, each tagged * with a GUID signifying the type of data in the chunk. The chunk also * has a length so that unknown chunk types can be skipped. * * The EnumAddress() function is used to parse these address data chunks. */
/*
* DPADDRESS * * Header for block of address data elements */ typedef struct _DPADDRESS { GUID guidDataType; DWORD dwDataSize; } DPADDRESS;
typedef DPADDRESS FAR *LPDPADDRESS;
/*
* DPAID_TotalSize * * Chunk is a DWORD containing size of entire DPADDRESS structure */
// {1318F560-912C-11d0-9DAA-00A0C90A43CB}
DEFINE_GUID(DPAID_TotalSize, 0x1318f560, 0x912c, 0x11d0, 0x9d, 0xaa, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
/*
* DPAID_ServiceProvider * * Chunk is a GUID describing the service provider that created the chunk. * All addresses must contain this chunk. */
// {07D916C0-E0AF-11cf-9C4E-00A0C905425E}
DEFINE_GUID(DPAID_ServiceProvider, 0x7d916c0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
/*
* DPAID_LobbyProvider * * Chunk is a GUID describing the lobby provider that created the chunk. * All addresses must contain this chunk. */
// {59B95640-9667-11d0-A77D-0000F803ABFC}
DEFINE_GUID(DPAID_LobbyProvider, 0x59b95640, 0x9667, 0x11d0, 0xa7, 0x7d, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
/*
* DPAID_Phone and DPAID_PhoneW * * Chunk is a string containing a phone number (i.e. "1-800-555-1212") * in ANSI or UNICODE format */
// {78EC89A0-E0AF-11cf-9C4E-00A0C905425E}
DEFINE_GUID(DPAID_Phone, 0x78ec89a0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
// {BA5A7A70-9DBF-11d0-9CC1-00A0C905425E}
DEFINE_GUID(DPAID_PhoneW, 0xba5a7a70, 0x9dbf, 0x11d0, 0x9c, 0xc1, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
/*
* DPAID_Modem and DPAID_ModemW * * Chunk is a string containing a modem name registered with TAPI * in ANSI or UNICODE format */
// {F6DCC200-A2FE-11d0-9C4F-00A0C905425E}
DEFINE_GUID(DPAID_Modem, 0xf6dcc200, 0xa2fe, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
// {01FD92E0-A2FF-11d0-9C4F-00A0C905425E}
DEFINE_GUID(DPAID_ModemW, 0x1fd92e0, 0xa2ff, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
/*
* DPAID_Inet and DPAID_InetW * * Chunk is a string containing a TCP/IP host name or an IP address * (i.e. "dplay.microsoft.com" or "137.55.100.173") in ANSI or UNICODE format */
// {C4A54DA0-E0AF-11cf-9C4E-00A0C905425E}
DEFINE_GUID(DPAID_INet, 0xc4a54da0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
// {E63232A0-9DBF-11d0-9CC1-00A0C905425E}
DEFINE_GUID(DPAID_INetW, 0xe63232a0, 0x9dbf, 0x11d0, 0x9c, 0xc1, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
/*
* DPAID_InetPort * * Chunk is the port number used for creating the apps TCP and UDP sockets. * WORD value (i.e. 47624). */ // {E4524541-8EA5-11d1-8A96-006097B01411}
DEFINE_GUID(DPAID_INetPort, 0xe4524541, 0x8ea5, 0x11d1, 0x8a, 0x96, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11);
#ifdef BIGMESSAGEDEFENSE
//@@BEGIN_MSINTERNAL
/*
* DPAID_MaxMessageSize * * Tells DPLAY what the maximum allowed message size is. Enables SPs to * combat Denial of Service attacks */ // this terrible hack is needed so the SP can work with the Elmer build.
// it can be removed when the MSINTERNAL stuff is removed
#define MAXMSGSIZEGUIDDEFINED
// {F5D09980-F0C4-11d1-8326-006097B01411}
DEFINE_GUID(DPAID_MaxMessageSize, 0xf5d09980, 0xf0c4, 0x11d1, 0x83, 0x26, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11); //@@END_MSINTERNAL
#endif
/*
* DPCOMPORTADDRESS * * Used to specify com port settings. The constants that define baud rate, * stop bits and parity are defined in WINBASE.H. The constants for flow * control are given below. */
#define DPCPA_NOFLOW 0 // no flow control
#define DPCPA_XONXOFFFLOW 1 // software flow control
#define DPCPA_RTSFLOW 2 // hardware flow control with RTS
#define DPCPA_DTRFLOW 3 // hardware flow control with DTR
#define DPCPA_RTSDTRFLOW 4 // hardware flow control with RTS and DTR
typedef struct _DPCOMPORTADDRESS { DWORD dwComPort; // COM port to use (1-4)
DWORD dwBaudRate; // baud rate (100-256k)
DWORD dwStopBits; // no. stop bits (1-2)
DWORD dwParity; // parity (none, odd, even, mark)
DWORD dwFlowControl; // flow control (none, xon/xoff, rts, dtr)
} DPCOMPORTADDRESS;
typedef DPCOMPORTADDRESS FAR *LPDPCOMPORTADDRESS;
/*
* DPAID_ComPort * * Chunk contains a DPCOMPORTADDRESS structure defining the serial port. */
// {F2F0CE00-E0AF-11cf-9C4E-00A0C905425E}
DEFINE_GUID(DPAID_ComPort, 0xf2f0ce00, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
/****************************************************************************
* * dplobby 1.0 obsolete definitions * Included for compatibility only. * ****************************************************************************/ #define DPLAD_SYSTEM DPLMSG_SYSTEM
#ifdef __cplusplus
}; #endif /* __cplusplus */
#pragma warning(default:4201)
#endif /* __DPLOBBY_INCLUDED__ */
|