//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//
//  Copyright (C) Microsoft Corporation, 1998 - 1999
//
//  File:       directxconst.idl
//
//--------------------------------------------------------------------------

#ifdef VB_ONLY

	//
	// DirectPlayVoice
	//

	#define I_dxj_DirectPlayVoiceSetup 		DirectPlayVoiceTest8
	#define I_dxj_DirectPlayVoiceServer 		DirectPlayVoiceServer8 
	#define I_dxj_DirectPlayVoiceClient 		DirectPlayVoiceClient8
	#define I_dxj_DPVoiceEvent			DirectPlayVoiceEvent8


	// 
	// DirectPlay8
	//

	#define I_dxj_DirectPlayPeer			DirectPlay8Peer
	#define I_dxj_DirectPlayClient			DirectPlay8Client
	#define I_dxj_DirectPlayServer			DirectPlay8Server
	#define I_dxj_DirectPlayLobbyClient		DirectPlay8LobbyClient
	#define I_dxj_DirectPlayLobbiedApplication	DirectPlay8LobbiedApplication

	#define I_dxj_DirectPlayEvent			DirectPlay8Event
	#define I_dxj_DirectPlayLobbyEvent		DirectPlay8LobbyEvent

	//Addresses
	#define I_dxj_DirectPlayAddress			DirectPlay8Address

	//
	// DirectplayVoice structs
	//

	#define DVMESSAGETYPE_CDESC			DVMESSAGETYPE
	#define DVCAPS_CDESC				DVCAPS
	#define DVCOMPRESSIONINFO_CDESC			DVCOMPRESSIONINFO	
	#define DVSESSIONDESC_CDESC			DVSESSIONDESC
	#define DVCLIENTCONFIG_CDESC			DVCLIENTCONFIG
	#define DVSOUNDDEVICECONFIG_CDESC		DVSOUNDDEVICECONFIG

	//
	// Directplay structs
	//

	#define DPN_APPLICATION_DESC_CDESC		DPN_APPLICATION_DESC
	#define DPNCAPS_CDESC				DPN_CAPS
	#define DPN_SERVICE_PROVIDER_INFO_CDESC		DPN_SERVICE_PROVIDER_INFO
	#define DPN_PLAYER_INFO_CDESC			DPN_PLAYER_INFO
	#define DPN_GROUP_INFO_CDESC			DPN_GROUP_INFO
	#define DPN_SERVICE_PROVIDER_INFO_CDESC		DPN_SERVICE_PROVIDER_INFO
	#define DPN_SP_CAPS_CDESC			DPN_SP_CAPS

	#define DPL_APPLICATION_INFO_CDESC		DPL_APPLICATION_INFO
	#define DPL_PROGRAM_DESC_CDESC			DPL_PROGRAM_DESC
	#define DPL_CONNECT_INFO_CDESC			DPL_CONNECT_INFO
	#define DPL_MESSAGE_RECEIVE_CDESC		DPL_MESSAGE_RECEIVE
	#define DPL_MESSAGE_CONNECT_CDESC		DPL_MESSAGE_CONNECT
	#define DPL_CONNECTION_SETTINGS_CDESC		DPL_CONNECTION_SETTINGS
	#define DPL_MESSAGE_CONNECTION_SETTINGS_CDESC	DPL_MESSAGE_CONNECTION_SETTINGS

	//
	// DirectPlay MSG structs
	//

	#define DPNMSG_TERMINATE_SESSION_CDESC		DPNMSG_TERMINATE_SESSION
	#define DPNMSG_INDICATE_CONNECT_CDESC		DPNMSG_INDICATE_CONNECT
	#define DPNMSG_CONNECT_COMPLETE_CDESC		DPNMSG_CONNECT_COMPLETE
	#define DPNMSG_SEND_COMPLETE_CDESC		DPNMSG_SEND_COMPLETE
	#define DPNMSG_RECEIVE_CDESC			DPNMSG_RECEIVE
	#define DPNMSG_ASYNC_OP_COMPLETE_CDESC		DPNMSG_ASYNC_OP_COMPLETE
	#define DPNMSG_ENUM_HOSTS_QUERY_CDESC		DPNMSG_ENUM_HOSTS_QUERY
	#define DPNMSG_ENUM_HOSTS_RESPONSE_CDESC	DPNMSG_ENUM_HOSTS_RESPONSE
	#define DPN_CONNECTION_INFO_CDESC		DPN_CONNECTION_INFO

#endif

#ifdef C_ONLY
	#define CONST_DVSOUNDEFFECT			LONG
	#define CONST_DVCLIENTCONFIGENUM		LONG
	#define CONST_DVSESSION				LONG
	#define CONST_DVCOMPRESSIONCAPS			LONG
	#define CONST_DVNOTIFY				LONG
	#define CONST_DVCAPSENUM			LONG
	#define CONST_DVFLAGS				LONG
	#define CONST_DVTHRESHOLD			LONG
	#define CONST_DVBUFFERQUALITY			LONG
	#define CONST_DVBUFFERAGGRESSIVENESS		LONG
	#define CONST_DVSESSIONTYPE			LONG
	#define CONST_DVPLAYBACKVOLUME			LONG
	#define CONST_DVMESSAGE				LONG
	#define CONST_DVERR				LONG
	#define CONST_DPNENUMCLIENTGROUPFLAGS		LONG
	#define CONST_DPLCONNECT			LONG
	#define CONST_DPLSESSION			LONG
	#define CONST_DPNPLAYINFOFLAGS			LONG
	#define CONST_DPNINFO				LONG
	#define CONST_DPNGROUPINFOFLAGS			LONG
	#define CONST_DPNCANCELFLAGS			LONG
	#define CONST_DVSOUNDEFFECT			LONG
	#define CONST_DPNSENDFLAGS			LONG
	#define CONST_DPLAVAILABLE			LONG
	#define CONST_DPNSESSIONFLAGS			LONG
	#define CONST_DPNOPERATIONS			LONG
	#define CONST_DPLCONNECTSETTINGS		LONG
	#define CONST_DPNGETSENDQUEUEINFO		LONG
#endif


	//
	// DirectPlay & DirectPlayLobby
	//
	interface I_dxj_DirectPlayPeer;
	interface I_dxj_DirectPlayClient;
	interface I_dxj_DirectPlayServer;
	interface I_dxj_DirectPlayLobbyClient;
	interface I_dxj_DirectPlayLobbiedApplication;
    
	// 
	// DirectPlayAdress
	//

	interface I_dxj_DirectPlayAddress;

	//
	// DirectPlayVoice (Server/Client/Setup)
	//
	interface I_dxj_DirectPlayVoiceClient;
	interface I_dxj_DirectPlayVoiceServer;
	interface I_dxj_DirectPlayVoiceSetup;

	//
	// DirectPlay Events
	//

	interface I_dxj_DPVoiceEvent;
	interface I_dxj_DirectPlayEvent;		
	interface I_dxj_DirectPlayLobbyEvent;


#ifdef VB_ONLY

#define	DPL_MSGID_LOBBY	0x8000

 [helpcontext(79390)]
typedef enum CONST_DPNDESTROYPLAYERREASON
{
	DPNDESTROYPLAYERREASON_NORMAL			= 0x0001,
	DPNDESTROYPLAYERREASON_CONNECTIONLOST		= 0x0002,
	DPNDESTROYPLAYERREASON_SESSIONTERMINATED	= 0x0003,
	DPNDESTROYPLAYERREASON_HOSTDESTROYEDPLAYER	= 0x0004
} CONST_DPNDESTROYPLAYERREASON;

 [helpcontext(79391)]
typedef enum CONST_DPNDESTROYGROUPREASON
{
	DPNDESTROYGROUPREASON_NORMAL			= 0x0001,
	DPNDESTROYGROUPREASON_AUTODESTRUCTED		= 0x0002,
	DPNDESTROYGROUPREASON_SESSIONTERMINATED		= 0x0003
} CONST_DPNDESTROYGROUPREASON;

 [helpcontext(79490)]
typedef enum CONST_DPLHANDLE
{
	DPLHANDLE_ALLCONNECTIONS		= 0xFFFFFFFF
} CONST_DPLHANDLE;

 [helpcontext(79491)]
typedef enum CONST_DPNGETSENDQUEUEINFO
{
	DPNGETSENDQUEUEINFO_PRIORITY_NORMAL	= 0x0001,
	DPNGETSENDQUEUEINFO_PRIORITY_HIGH	= 0x0002,
	DPNGETSENDQUEUEINFO_PRIORITY_LOW	= 0x0004
} CONST_DPNGETSENDQUEUEINFO;

 [helpcontext(79392)]
typedef enum CONST_DPLAVAILABLE
{
	DPLAVAILABLE_ALLOWMULTIPLECONNECT   	= 0x0001
} CONST_DPLAVAILABLE;

 [helpcontext(78390)]
typedef enum CONST_DPLAYBUFSIZE {
	SIZE_BYTE				= 1,
	SIZE_LONG				= 4,
	SIZE_INTEGER				= 2,
	SIZE_BOOLEAN				= 2,
	SIZE_SINGLE				= 4,
	SIZE_DOUBLE				= 8,
	SIZE_CURRENCY				= 8,
	SIZE_DECIMAL				= 14,
	SIZE_DATE				= 8,
} CONST_DPLAYBUFSIZE;

 [helpcontext(78406)]
typedef enum CONST_DPNSPCAPS {
	DPNSPCAPS_SUPPORTSDPNSRV		= 0x0001,
	DPNSPCAPS_SUPPORTSBROADCAST		= 0x0002,
	DPNSPCAPS_SUPPORTSALLADAPTERS		= 0x0004
} CONST_DPNSPCAPS;

 [helpcontext(78392)]
typedef enum CONST_DPLMSG {
	DPL_MSGID_RECEIVE			= (0x0001 | DPL_MSGID_LOBBY),
	DPL_MSGID_CONNECT			= (0x0002 | DPL_MSGID_LOBBY),
	DPL_MSGID_DISCONNECT			= (0x0003 | DPL_MSGID_LOBBY),
	DPL_MSGID_SESSION_STATUS		= (0x0004 | DPL_MSGID_LOBBY),
	DPL_MSGID_CONNECTION_SETTINGS       	= (0x0005 | DPL_MSGID_LOBBY)
} CONST_DPLMSG;

 [helpcontext(78391)]
typedef enum CONST_DPLCONNECT {
	DPLCONNECT_LAUNCHNEW			= 0x0001,
	DPLCONNECT_LAUNCHNOTFOUND		= 0x0002,
} CONST_DPLCONNECT;

 [helpcontext(79395)]
typedef enum CONST_DPLCONNECTSETTINGS {
	DPLCONNECTSETTINGS_HOST             	= 0x0001,
} CONST_DPLCONNECTSETTINGS;

 [helpcontext(78393)]
typedef enum CONST_DPLSESSION {
	DPLSESSION_CONNECTED			= 0x0001,
	DPLSESSION_COULDNOTCONNECT		= 0x0002,
	DPLSESSION_DISCONNECTED			= 0x0003,
	DPLSESSION_TERMINATED			= 0x0004,
	DPLSESSION_HOSTMIGRATED			= 0x0005,
	DPLSESSION_HOSTMIGRATEDHERE		= 0x0006
} CONST_DPLSESSION;

 [helpcontext(78408)]
typedef enum CONST_DPNWAITTIME {
	INFINITE			= 0xFFFFFFFF
} CONST_DPNWAITTIME;

 [helpcontext(78399)]
typedef enum CONST_DPNLOBBY {
	DPNLOBBY_REGISTER			= 0x0001,
	DPNLOBBY_UNREGISTER			= 0x0002
} CONST_DPNLOBBY;

#define E_FAIL 0x80000008
#define E_POINTER 0x80004003
#define E_PENDING 0x00000103

 [helpcontext(78396)]
typedef enum CONST_DPNERROR {
	DPN_OK						= 0,
	DPNSUCCESS_PENDING				= E_PENDING,
	DPNERR_ABORTED					= 0x80158030,
	DPNERR_ADDRESSING				= 0x80158040,
	DPNERR_ALREADYCLOSING				= 0x80158050,
	DPNERR_ALREADYCONNECTED				= 0x80158060,
	DPNERR_ALREADYDISCONNECTING			= 0x80158070,
	DPNERR_ALREADYINITIALIZED			= 0x80158080,
	DPNERR_ALREADYREGISTERED			= 0x80158090,
	DPNERR_BUFFERTOOSMALL				= 0x80158100,
	DPNERR_CANNOTCANCEL				= 0x80158110,
	DPNERR_CANTCREATEGROUP				= 0x80158120,
	DPNERR_CANTCREATEPLAYER				= 0x80158130,
	DPNERR_CANTLAUNCHAPPLICATION			= 0x80158140,
	DPNERR_CONNECTING				= 0x80158150,
	DPNERR_CONNECTIONLOST				= 0x80158160,
	DPNERR_CONVERSION				= 0x80158170,
	DPNERR_DATATOOLARGE				= 0x80158175,
	DPNERR_DOESNOTEXIST				= 0x80158180,
	DPNERR_DUPLICATECOMMAND				= 0x80158190,
	DPNERR_ENDPOINTNOTRECEIVING			= 0x80158200,
	DPNERR_ENUMQUERYTOOLARGE			= 0x80158210,
	DPNERR_ENUMRESPONSETOOLARGE			= 0x80158220,
	DPNERR_EXCEPTION				= 0x80158230,
	DPNERR_GENERIC					= E_FAIL,
	DPNERR_GROUPNOTEMPTY				= 0x80158240,
	DPNERR_HOSTING					= 0x80158250,
	DPNERR_HOSTREJECTEDCONNECTION			= 0x80158260,
	DPNERR_HOSTTERMINATEDSESSION			= 0x80158270,
	DPNERR_INCOMPLETEADDRESS			= 0x80158280,
	DPNERR_INVALIDADDRESSFORMAT 			= 0x80158290,
	DPNERR_INVALIDAPPLICATION			= 0x80158300,
	DPNERR_INVALIDCOMMAND				= 0x80158310,
	DPNERR_INVALIDDEVICEADDRESS			= 0x80158320,
	DPNERR_INVALIDENDPOINT				= 0x80158330,
	DPNERR_INVALIDFLAGS				= 0x80158340,
	DPNERR_INVALIDGROUP			 	= 0x80158350,
	DPNERR_INVALIDHANDLE				= 0x80158360,
	DPNERR_INVALIDHOSTADDRESS			= 0x80158370,
	DPNERR_INVALIDINSTANCE				= 0x80158380,
	DPNERR_INVALIDINTERFACE				= 0x80158390,
	DPNERR_INVALIDOBJECT				= 0x80158400,
	DPNERR_INVALIDPARAM				= 5,
	DPNERR_INVALIDPASSWORD				= 0x80158410,
	DPNERR_INVALIDPLAYER				= 0x80158420,
	DPNERR_INVALIDPOINTER				= E_POINTER,
	DPNERR_INVALIDPRIORITY				= 0x80158430,
	DPNERR_INVALIDSTRING				= 0x80158440,
	DPNERR_INVALIDURL				= 0x80158450,
	DPNERR_INVALIDVERSION				= 0x80158460,
	DPNERR_NOCAPS					= 0x80158470,
	DPNERR_NOCONNECTION				= 0x80158480,
	DPNERR_NOHOSTPLAYER				= 0x80158490,
	DPNERR_NOINTERFACE				= 430,
	DPNERR_NOMOREADDRESSCOMPONENTS			= 0x80158500,
	DPNERR_NORESPONSE				= 0x80158510,
	DPNERR_NOTALLOWED				= 0x80158520,
	DPNERR_NOTHOST					= 0x80158530,
	DPNERR_NOTREADY					= 0x80158540,
	DPNERR_NOTREGISTERED				= 0x80158550,
	DPNERR_OUTOFMEMORY				= 7,
	DPNERR_PENDING					= E_PENDING,
	DPNERR_PLAYERALREADYINGROUP     		= 0x80158560,
	DPNERR_PLAYERLOST				= 0x80158570,
	DPNERR_PLAYERNOTINGROUP				= 0x80158580,
	DPNERR_PLAYERNOTREACHABLE			= 0x80158590,
	DPNERR_SENDTOOLARGE				= 0x80158600,
	DPNERR_SESSIONFULL				= 0x80158610,
	DPNERR_TABLEFULL				= 0x80158620,
	DPNERR_TIMEDOUT					= 0x80158630,
	DPNERR_UNINITIALIZED				= 0x80158640,
	DPNERR_UNSUPPORTED				= 445,
	DPNERR_USERCANCEL				= 0x80158650,
} CONST_DPNERROR;

 [helpcontext(78407)]
typedef enum CONST_DPNSTATUS {
	DPN_ACCEPTED					= DPN_OK,
	DPN_REJECTED					= DPNERR_GENERIC
} CONST_DPNSTATUS;

 [helpcontext(78388)]
typedef enum CONST_DPCONNECT {
	DPNCONNECT_OKTOQUERYFORADDRESSING		= 0x0001
} CONST_DPCONNECT;

 [helpcontext(78389)]
typedef enum CONST_DPENUMHOSTS {
	DPNENUMHOSTS_OKTOQUERYFORADDRESSING	= 0x0001,
	DPNENUMHOSTS_NOBROADCASTFALLBACK	= 0x0002,
#if 0
	DPNENUMHOSTS_DONTSENDADDRESS		= 0x0004
#endif
} CONST_DPENUMHOSTS;

 [helpcontext(78401)]
typedef enum CONST_DPNOPERATIONS {
	DPNOP_SYNC					= 0x80000000,
	DPNCONNECT_SYNC					= DPNOP_SYNC,
	DPNENUMHOSTS_SYNC				= DPNOP_SYNC,
	DPNCREATEGROUP_SYNC				= DPNOP_SYNC,
	DPNDESTROYGROUP_SYNC				= DPNOP_SYNC,
	DPNADDPLAYERTOGROUP_SYNC			= DPNOP_SYNC,
	DPNREMOVEPLAYERFROMGROUP_SYNC			= DPNOP_SYNC,
	DPNSETGROUPINFO_SYNC				= DPNOP_SYNC,
	DPNSETCLIENTINFO_SYNC				= DPNOP_SYNC,
	DPNSETSERVERINFO_SYNC				= DPNOP_SYNC,
	DPNSETPEERINFO_SYNC				= DPNOP_SYNC,
	DPNHOST_OKTOQUERYFORADDRESSING			= 0x1,
} CONST_DPNOPERATIONS;


 [helpcontext(78404)]
typedef enum CONST_DPNSENDFLAGS {
	DPNSEND_SYNC					= DPNOP_SYNC,
	DPNSEND_NOCOPY					= 0x0001,
	DPNSEND_NOCOMPLETE				= 0x0002,
	DPNSEND_COMPLETEONPROCESS			= 0x0004,
	DPNSEND_GUARANTEED				= 0x0008,
	DPNSEND_NONSEQUENTIAL				= 0x0010,
	DPNSEND_NOLOOPBACK				= 0x0020,
	DPNSEND_PRIORITY_LOW				= 0x0040,
	DPNSEND_PRIORITY_HIGH				= 0x0080
} CONST_DPNSENDFLAGS;

 [helpcontext(78403)]
typedef enum CONST_DPNPLAYINFOFLAGS {
	DPNPLAYER_LOCAL					= 0x0002,
	DPNPLAYER_HOST					= 0x0004
} CONST_DPNPLAYINFOFLAGS;

 [helpcontext(78397)]
typedef enum CONST_DPNGROUPINFOFLAGS {
	DPNGROUP_AUTODESTRUCT				= 0x0001,
} CONST_DPNGROUPINFOFLAGS;

 [helpcontext(78402)]
typedef enum CONST_DPNPLAYERGROUPFLAGS {
	DPNID_ALL_PLAYERS_GROUP				= 0
} CONST_DPNPLAYERGROUPFLAGS;

 [helpcontext(78395)]
typedef enum CONST_DPNENUMCLIENTGROUPFLAGS {
	DPNENUM_PLAYERS					= 0x0001,
	DPNENUM_GROUPS					= 0x0010,
} CONST_DPNENUMCLIENTGROUPFLAGS;

 [helpcontext(78398)]
typedef enum CONST_DPNINFO {
	DPNINFO_NAME					= 0x0001,
	DPNINFO_DATA					= 0x0002
} CONST_DPNINFO;

 [helpcontext(78405)]
typedef enum CONST_DPNSESSIONFLAGS {
	DPNSESSION_CLIENT_SERVER			= 0x0001,
//	DPNSESSION_KEEPALIVE				= 0x0002,
	DPNSESSION_MIGRATE_HOST				= 0x0004,
//	DPNSESSION_SERVER_ROUTING			= 0x0010,
//	DPNSESSION_SECURE_ROUTING			= 0x0020,
	DPNSESSION_NODPNSVR				= 0x0040,
	DPNSESSION_REQUIREPASSWORD          		= 0x0080
} CONST_DPNSESSIONFLAGS;

 [helpcontext(78394)]
typedef enum CONST_DPNCANCELFLAGS {
	DPNCANCEL_ALL_OPERATIONS			= 0x8000,
	DPNCANCEL_CONNECT				= 0x0001,
	DPNCANCEL_ENUM					= 0x0002,
	DPNCANCEL_SEND					= 0x0004
} CONST_DPNCANCELFLAGS;

#define	DPN_MSGID_OFFSET					0xFFFF0000
 [helpcontext(78400)]
typedef enum CONST_DPNMESSAGEID {
	DPN_MSGID_ADD_PLAYER_TO_GROUP			= ( DPN_MSGID_OFFSET | 0x0001 ),
	DPN_MSGID_APPLICATION_DESC			= ( DPN_MSGID_OFFSET | 0x0002 ),
	DPN_MSGID_ASYNC_OP_COMPLETE			= ( DPN_MSGID_OFFSET | 0x0003 ),
	DPN_MSGID_CLIENT_INFO				= ( DPN_MSGID_OFFSET | 0x0004 ),
	DPN_MSGID_CONNECT_COMPLETE			= ( DPN_MSGID_OFFSET | 0x0005 ),
	DPN_MSGID_CREATE_GROUP				= ( DPN_MSGID_OFFSET | 0x0006 ),
	DPN_MSGID_CREATE_PLAYER				= ( DPN_MSGID_OFFSET | 0x0007 ),
	DPN_MSGID_DESTROY_GROUP				= ( DPN_MSGID_OFFSET | 0x0008 ),
	DPN_MSGID_DESTROY_PLAYER			= ( DPN_MSGID_OFFSET | 0x0009 ),
	DPN_MSGID_ENUM_HOSTS_QUERY			= ( DPN_MSGID_OFFSET | 0x000a ),
	DPN_MSGID_ENUM_HOSTS_RESPONSE			= ( DPN_MSGID_OFFSET | 0x000b ),
	DPN_MSGID_GROUP_INFO				= ( DPN_MSGID_OFFSET | 0x000c ),
	DPN_MSGID_HOST_MIGRATE				= ( DPN_MSGID_OFFSET | 0x000d ),
	DPN_MSGID_INDICATE_CONNECT			= ( DPN_MSGID_OFFSET | 0x000e ),
	DPN_MSGID_INDICATED_CONNECT_ABORTED		= ( DPN_MSGID_OFFSET | 0x000f ),
	DPN_MSGID_PEER_INFO				= ( DPN_MSGID_OFFSET | 0x0010 ),
	DPN_MSGID_RECEIVE				= ( DPN_MSGID_OFFSET | 0x0011 ),
	DPN_MSGID_REMOVE_PLAYER_FROM_GROUP		= ( DPN_MSGID_OFFSET | 0x0012 ),
	DPN_MSGID_RETURN_BUFFER				= ( DPN_MSGID_OFFSET | 0x0013 ),
	DPN_MSGID_SEND_COMPLETE				= ( DPN_MSGID_OFFSET | 0x0014 ),
	DPN_MSGID_SERVER_INFO				= ( DPN_MSGID_OFFSET | 0x0015 ),
	DPN_MSGID_TERMINATE_SESSION			= ( DPN_MSGID_OFFSET | 0x0016 )
} CONST_DPNMESSAGEID;

//
// DirectPlayVoice Enums
//
 [helpcontext(78422)]
typedef enum CONST_DVSOUNDEFFECT {
	DVSOUNDCONFIG_NORMALMODE            	= 0x00000001,
	DVSOUNDCONFIG_AUTOSELECT            	= 0x00000002,
	DVSOUNDCONFIG_HALFDUPLEX            	= 0x00000004,
	DVSOUNDCONFIG_SETCONVERSIONQUALITY	= 0x00000008,
	DVSOUNDCONFIG_NORECVOLAVAILABLE		= 0x00000010,
	DVSOUNDCONFIG_NOFOCUS               	= 0x20000000,
	DVSOUNDCONFIG_STRICTFOCUS           	= 0x40000000
} CONST_DVSOUNDEFFECT;

 [helpcontext(78412)]
typedef enum CONST_DVCLIENTCONFIGENUM {
	DVCLIENTCONFIG_RECORDMUTE           	= 0x00000001,
	DVCLIENTCONFIG_PLAYBACKMUTE         	= 0x00000002,
	DVCLIENTCONFIG_MANUALVOICEACTIVATED 	= 0x00000004,
	DVCLIENTCONFIG_AUTORECORDVOLUME     	= 0x00000008,
	DVCLIENTCONFIG_MUTEGLOBAL           	= 0x00000010,
	DVCLIENTCONFIG_AUTOVOICEACTIVATED   	= 0x00000020,
	DVCLIENTCONFIG_ECHOSUPPRESSION      	= 0x08000000
} CONST_DVCLIENTCONFIGENUM;

 [helpcontext(78420)]
typedef enum CONST_DVSESSION {
	DVSESSION_NOHOSTMIGRATION           	= 0x00000001,
	DVSESSION_SERVERCONTROLTARGET       	= 0x00000002
} CONST_DVSESSION;

 [helpcontext(78413)]
typedef enum CONST_DVCOMPRESSIONCAPS {
	DVCOMPRESSIONCAPS_HW			= 0x00000001,
	DVCOMPRESSIONCAPS_VARIABLE 		= 0x00000002,
	DVCOMPRESSIONCAPS_NATIVE		= 0x00000004,
} CONST_DVCOMPRESSIONCAPS;

 [helpcontext(78417)]
typedef enum CONST_DVNOTIFY {
	DVNOTIFYPERIOD_MINPERIOD		= 20
}CONST_DVNOTIFY;

 [helpcontext(78411)]
typedef enum CONST_DVCAPSENUM {
	DVCAPS_HWMIXING				= 0x00000001,
} CONST_DVCAPSENUM;

 [helpcontext(78415)]
typedef enum CONST_DVFLAGS {
	DVFLAGS_SYNC                        	= 0x00000001,
	DVFLAGS_QUERYONLY                   	= 0x00000002,
	DVFLAGS_NOHOSTMIGRATE               	= 0x00000008,
	DVFLAGS_ALLOWBACK                   	= 0x00000010
} CONST_DVFLAGS;

 [helpcontext(78419)]
typedef enum CONST_DVTHRESHOLD {
	DVTHRESHOLD_MIN                   	= 0x00000000,
	DVTHRESHOLD_MAX                   	= 0x00000063,	// 99 decimal
	DVTHRESHOLD_DEFAULT               	= 0xFFFFFFFF,
	DVTHRESHOLD_UNUSED                	= 0xFFFFFFFE
} CONST_DVTHRESHOLD;

 [helpcontext(78410)]
typedef enum CONST_DVBUFFERQUALITY {
	DVBUFFERQUALITY_MIN 			= 0x00000001,
	DVBUFFERQUALITY_MAX 			= 0x00000064,
	DVBUFFERQUALITY_DEFAULT 		= 0x00000000,
} CONST_DVBUFFERQUALITY;

 [helpcontext(78409)]
typedef enum CONST_DVBUFFERAGGRESSIVENESS {
	DVBUFFERAGGRESSIVENESS_MIN 		= 0x00000001,
	DVBUFFERAGGRESSIVENESS_MAX		= 0x00000064,
	DVBUFFERAGGRESSIVENESS_DEFAULT		= 0x00000000,
} CONST_DVBUFFERAGGRESSIVENESS;

 [helpcontext(78421)]
typedef enum CONST_DVSESSIONTYPE {
	DVSESSIONTYPE_PEER			= 0x00000001,
	DVSESSIONTYPE_MIXING			= 0x00000002,
	DVSESSIONTYPE_FORWARDING		= 0x00000003,
	DVSESSIONTYPE_ECHO			= 0x00000004
} CONST_DVSESSIONTYPE;

 [helpcontext(78418)]
typedef enum CONST_DVPLAYBACKVOLUME {
	DVPLAYBACKVOLUME_DEFAULT			= 0,
} CONST_DVPLAYBACKVOLUME;

 [helpcontext(78416)]
typedef enum CONST_DVMESSAGE {
	DVMSGID_BASE                        = 0x0000,

	DVMSGID_CREATEVOICEPLAYER           = (DVMSGID_BASE+0x0001),
	DVMSGID_DELETEVOICEPLAYER           = (DVMSGID_BASE+0x0002),
	DVMSGID_SESSIONLOST                 = (DVMSGID_BASE+0x0003),
	DVMSGID_PLAYERVOICESTART            = (DVMSGID_BASE+0x0004),
	DVMSGID_PLAYERVOICESTOP             = (DVMSGID_BASE+0x0005),
	DVMSGID_RECORDSTART                 = (DVMSGID_BASE+0x0006),
	DVMSGID_RECORDSTOP                  = (DVMSGID_BASE+0x0007),
	DVMSGID_CONNECTRESULT               = (DVMSGID_BASE+0x0008),
	DVMSGID_DISCONNECTRESULT            = (DVMSGID_BASE+0x0009),
	DVMSGID_INPUTLEVEL                  = (DVMSGID_BASE+0x000A),
	DVMSGID_OUTPUTLEVEL                 = (DVMSGID_BASE+0x000B),
	DVMSGID_HOSTMIGRATED                = (DVMSGID_BASE+0x000C),
	DVMSGID_SETTARGETS                  = (DVMSGID_BASE+0x000D),
	DVMSGID_PLAYEROUTPUTLEVEL           = (DVMSGID_BASE+0x000E),
	DVMSGID_LOSTFOCUS                   = (DVMSGID_BASE+0x0010),
	DVMSGID_GAINFOCUS                   = (DVMSGID_BASE+0x0011),
	DVMSGID_LOCALHOSTSETUP		    = (DVMSGID_BASE+0x0012),
	DVMSGID_MINBASE                     = (DVMSGID_CREATEVOICEPLAYER),
	DVMSGID_MAXBASE                     = (DVMSGID_LOCALHOSTSETUP),


 /* 
  * DPLAY Voice Reserved names
  */

	DVID_SYS						= 0,
	DVID_SERVERPLAYER					= 1,
	DVID_ALLPLAYERS						= 0,
	DVID_NOTARGET						= 0xFFFFFFFF,
	DVID_REMAINING						= DVID_NOTARGET,
} CONST_DVMESSAGE;

 [helpcontext(78414)]
typedef enum CONST_DVERR {
	DV_OK							= 0,
	DV_FULLDUPLEX					= 1376261,
	DV_HALFDUPLEX					= 1376266,
	DV_EXIT						= 1376271,
	DVERR_BUFFERTOOSMALL            		= 0x8015001E,
	DVERR_EXCEPTION                 		= 0x8015005a,
	DVERR_GENERIC                   		= -2147467259,
	DVERR_INVALIDFLAGS              		= 0x80150078,
	DVERR_INVALIDOBJECT             		= 0x80150082,
	DVERR_INVALIDPARAM              		= -2147024809,
	DVERR_INVALIDPLAYER             		= 0x80150087,
	DVERR_INVALIDENDPOINT				= 0x8015008c,
	DVERR_INVALIDGROUP             			= 0x80150091,
	DVERR_INVALIDHANDLE            			= 0x80150096,
	DVERR_OUTOFMEMORY               		= -2147024882,
	DVERR_PENDING					= -2147483638,
	DVERR_NOTSUPPORTED              		= -2147467263,
	DVERR_NOINTERFACE               		= -2147467262,
	DVERR_SESSIONLOST				= 0x8015012C,
	DVERR_NOVOICESESSION				= 0x8015012E,
	DVERR_CONNECTIONLOST            		= 0x80150168,
	DVERR_NOTINITIALIZED				= 0x80150169,
	DVERR_CONNECTED					= 0x8015016A,
	DVERR_NOTCONNECTED				= 0x8015016B,
	DVERR_FORWARDNOTSUPPORTED			= 0x8015016C,
	DVERR_COMMANDPENDING				= 0x8015016D,
	DVERR_CONNECTABORTING				= 0x8015016E,
	DVERR_NOTALLOWED				= 0x8015016F,
	DVERR_INVALIDTARGET				= 0x80150170,
	DVERR_NOTTRANSPORTHOST				= 0x80150171,
	DVERR_COMPRESSIONNOTSUPPORTED			= 0x80150172,
	DVERR_COMMANDALREADYPENDING			= 0x80150173,
	DVERR_SOUNDINITFAILURE				= 0x80150174,
	DVERR_TIMEOUT					= 0x80150175,
	DVERR_CONNECTABORTED				= 0x80150176,
	DVERR_NO3DSOUND					= 0x80150177,
	DVERR_ALREADYBUFFERED				= 0x80150178,
	DVERR_NOTBUFFERED				= 0x80150179,
	DVERR_HOSTING					= 0x8015017A,
	DVERR_NOTHOSTING				= 0x8015017B,
	DVERR_INVALIDDEVICE				= 0x8015017C,
	DVERR_RECORDSYSTEMERROR				= 0x8015017D,
	DVERR_PLAYBACKSYSTEMERROR			= 0x8015017E,
	DVERR_SENDERROR					= 0x8015017F,
	DVERR_USERCANCEL				= 0x80150180,
	DVERR_UNKNOWN					= 0x80150181,
	DVERR_DIALOGBOX					= 0x80150182,
	DVERR_RUN_SETUP					= 0x80150183,
	DVERR_INCOMPATIBLEVERSION			= 0x80150184,
	DVERR_PREVIOUSCRASH				= 0x80150185,
	DVERR_CHILDPROCESSFAILED			= 0x80150186,
	DVERR_WIN32					= 0x80150186,
	DVERR_INITIALIZED				= 0x80150187,
	DVERR_NOTRANSPORT				= 0x80150188,
	DVERR_NOCALLBACK                		= 0x80150189,
	DVERR_TRANSPORTNOTINIT          		= 0x8015018A,
	DVERR_TRANSPORTNOSESSION        		= 0x8015018B,
	DVERR_TRANSPORTNOPLAYER         		= 0x8015018C,
	DVERR_USERBACK                  		= 0x8015018D,
	DVERR_NORECVOLAVAILABLE         		= 0x8015018E,
	DVERR_INVALIDBUFFER				= 0x8015018F,
	DVERR_LOCKEDBUFFER				= 0x80150190,
} CONST_DVERR;

#endif

    ///////////////////////////////////////////////////////////////////////////
    // 
    // DirectPlay and DirectPlayLobby and DirectPlayVoice Structures
    // 
    ///////////////////////////////////////////////////////////////////////////


	//
	// DirectPlay8Lobby Structures
	//

 [helpcontext(78361)]
typedef struct	DPN_APPLICATION_DESC_CDESC
{
	[hidden] LONG	lSize;
	CONST_DPNSESSIONFLAGS		lFlags;
	BSTR		guidInstance;
	BSTR		guidApplication;
	LONG		lMaxPlayers;
	LONG		lCurrentPlayers;
	BSTR		SessionName;
	BSTR		Password;
	// These may or may not be included
	[hidden] LONG	dwReservedDataSize;
	[hidden] LONG	dwApplicationReservedDataSize;
	
} DPN_APPLICATION_DESC_CDESC;


 [helpcontext(78360)]
typedef struct  DPL_PROGRAM_DESC_CDESC {
	[hidden]LONG		lSize;
	LONG			lFlags;
	BSTR			guidApplication;		// Application GUID
	BSTR			ApplicationName;	// Unicode application name
	BSTR			CommandLine;		// Unicode command line arguments
	BSTR			CurrentDirectory;	// Unicode current directory
	BSTR			Description;		// Unicode application description
	BSTR			ExecutableFilename;	// Unicode filename of application executable
	BSTR			ExecutablePath;		// Unicode path of application executable
	BSTR			LauncherFilename;	// Unicode filename of launcher executable
	BSTR			LauncherPath;		// Unicode path of launcher executable
} DPL_PROGRAM_DESC_CDESC;


//
// DirectPlay8 Structures
//

//
// Other structures
//

 [helpcontext(78367)]
typedef struct DPN_SP_CAPS_CDESC
{
	[hidden] LONG	lSize;
	LONG		lFlags;
	LONG		lNumThreads;
	LONG		lDefaultEnumCount;
	LONG		lDefaultEnumRetryInterval;
	LONG		lDefaultEnumTimeout;
	LONG		lMaxEnumPayloadSize;
	LONG 		lBuffersPerThread;				// number of receive buffers per thread		// ADDED
	LONG 		lSystemBufferSize;				// ammount of buffering to do in addition to posted receive buffers	// ADDED
} DPN_SP_CAPS_CDESC;

 [helpcontext(78363)]
typedef struct DPN_CONNECTION_INFO_CDESC
{
    LONG		lSize;
    LONG		lRoundTripLatencyMS;
    LONG		lThroughputBPS;
    LONG		lPeakThroughputBPS;

    LONG		lBytesSentGuaranteed;
    LONG		lPacketsSentGuaranteed;
    LONG		lBytesSentNonGuaranteed;
    LONG		lPacketsSentNonGuaranteed;

    LONG		lBytesRetried;		// Guaranteed only
    LONG		lPacketsRetried;	// Guaranteed only
    LONG		lBytesDropped;		// Non guaranteed only
    LONG		lPacketsDropped;	// Non guaranteed only

    LONG		lMessagesTransmittedHighPriority;
    LONG		lMessagesTimedOutHighPriority;
    LONG		lMessagesTransmittedNormalPriority;
    LONG		lMessagesTimedOutNormalPriority;
    LONG		lMessagesTransmittedLowPriority;
    LONG		lMessagesTimedOutLowPriority;

    LONG		lBytesReceivedGuaranteed;
    LONG		lPacketsReceivedGuaranteed;
    LONG		lBytesReceivedNonGuaranteed;
    LONG		lPacketsReceivedNonGuaranteed;
    LONG		lMessagesReceived;
} DPN_CONNECTION_INFO_CDESC;

 [helpcontext(78366)]
typedef struct DPN_SERVICE_PROVIDER_INFO_CDESC
{
	LONG		lFlags;
	BSTR		Guid;		// SP Guid
	BSTR		Name;		// Friendly Name
} DPN_SERVICE_PROVIDER_INFO_CDESC;

 [helpcontext(78364)]
typedef struct	DPN_GROUP_INFO_CDESC
{
	[hidden] LONG		lSize;				
	CONST_DPNINFO		lInfoFlags;
	BSTR			Name;
//		[hidden] void		*pvData;
	[hidden] LONG		lDataSize;
	CONST_DPNGROUPINFOFLAGS	lGroupFlags;
} DPN_GROUP_INFO_CDESC;

 [helpcontext(78365)]
typedef struct	DPN_PLAYER_INFO_CDESC
{
	[hidden] LONG		lSize;				
	CONST_DPNINFO		lInfoFlags;
	BSTR			Name;
//		[hidden] void		*pvData;
	[hidden] LONG		lDataSize;
	CONST_DPNPLAYINFOFLAGS	lPlayerFlags;
} DPN_PLAYER_INFO_CDESC;

[helpcontext(78024)]
typedef struct DPNCAPS_CDESC
{
	[hidden] LONG  	lSize;
	LONG		lFlags;
    	LONG		lConnectTimeout;
    	LONG		lConnectRetries;
    	LONG		lTimeoutUntilKeepAlive;
} DPNCAPS_CDESC;


//
// DirectPlay8 MSG structures
//

 [helpcontext(79375)]
typedef struct	DPNMSG_TERMINATE_SESSION_CDESC
{
	[hidden] LONG 	lSize;				// Size of this structure
	LONG		hResultCode;		// Reason
	SAFEARRAY(BYTE)	TerminateData;	// Data passed from Host/Server
} DPNMSG_TERMINATE_SESSION_CDESC;

 [helpcontext(78375)]
typedef struct	DPNMSG_INDICATE_CONNECT_CDESC
{
	[hidden] LONG	lSize;
	SAFEARRAY(BYTE)	UserData;
	[hidden] LONG	dwReplyDataSize;
	BSTR				AddressPlayerUrl;
	BSTR				AddressDeviceUrl;
} DPNMSG_INDICATE_CONNECT_CDESC;

 [helpcontext(78371)]
typedef struct	DPNMSG_CONNECT_COMPLETE_CDESC
{
	[hidden] LONG	lSize;
	LONG		AsyncOpHandle;
	LONG		hResultCode;
	SAFEARRAY(BYTE)	ReplyData;
} DPNMSG_CONNECT_COMPLETE_CDESC;


 [helpcontext(78378)]
typedef struct	DPNMSG_SEND_COMPLETE_CDESC
{
	[hidden] LONG	lSize;
	LONG		AsyncOpHandle;
	LONG		hResultCode;
	LONG		lSendTime;
} DPNMSG_SEND_COMPLETE_CDESC;

 [helpcontext(78377)]
typedef struct	DPNMSG_RECEIVE_CDESC
{
	[hidden] LONG		lSize;
	LONG			idSender;
	SAFEARRAY(BYTE)		ReceivedData;
	LONG			lDataSize;
	[hidden] LONG		BufferHandle;
} DPNMSG_RECEIVE_CDESC;

 [helpcontext(78370)]
typedef struct	DPNMSG_ASYNC_OP_COMPLETE_CDESC
{
	[hidden] LONG	lSize;
	LONG		AsyncOpHandle;
	LONG		hResultCode;
} DPNMSG_ASYNC_OP_COMPLETE_CDESC;


//
// DirectPlayVoice Structures
//

 [helpcontext(78386)]
  typedef struct DVSOUNDDEVICECONFIG_CDESC
  {
	[hidden] LONG			lSize;
	CONST_DVSOUNDEFFECT			lFlags;
	BSTR					guidPlaybackDevice;
	BSTR					guidCaptureDevice;
#ifdef _WIN64
	HANDLE					hwndAppWindow;
#else
	LONG					hwndAppWindow;
#endif
	I_dxj_DirectSoundBuffer			*MainSoundBuffer;
	CONST_DSBPLAYFLAGS			lMainBufferFlags;
	LONG					lMainBufferPriority;
  } DVSOUNDDEVICECONFIG_CDESC;

[helpcontext(78261)]
  typedef struct DVCLIENTCONFIG_CDESC
  {
	[hidden] LONG	lSize;
	CONST_DVCLIENTCONFIGENUM	lFlags;
	LONG			lRecordVolume;     
	LONG			lPlaybackVolume;   
	CONST_DVTHRESHOLD		lThreshold;
	CONST_DVBUFFERQUALITY		lBufferQuality;
	CONST_DVBUFFERAGGRESSIVENESS	lBufferAggressiveness;
	LONG			lNotifyPeriod;
} DVCLIENTCONFIG_CDESC;

 [helpcontext(78385)]
  typedef struct DVSESSIONDESC_CDESC
  {
	[hidden] LONG	lSize;
	CONST_DVSESSION		lFlags;
	CONST_DVSESSIONTYPE		lSessionType;
	BSTR			guidCT;
	CONST_DVBUFFERQUALITY		lBufferQuality;
	CONST_DVBUFFERAGGRESSIVENESS	lBufferAggressiveness;
  } DVSESSIONDESC_CDESC;
  
 [helpcontext(78382)]
typedef struct DVCOMPRESSIONINFO_CDESC
{
      [hidden] LONG	lSize; 
  	BSTR			guidType;
     	BSTR	      		strName;
     	BSTR     		strDescription;
  	LONG			lFlags;
	LONG			lMaxBitsPerSecond;		
} DVCOMPRESSIONINFO_CDESC;
  
 [helpcontext(78260)]
typedef struct DVCAPS_CDESC
{
	[hidden] LONG	lSize;
	LONG			lFlags;
} DVCAPS_CDESC;

 [helpcontext(78372)]
typedef	struct	DPNMSG_ENUM_HOSTS_QUERY_CDESC
{
	[hidden] LONG			lSize;
	SAFEARRAY(BYTE)			ReceivedData;
	LONG				lMaxResponseDataSize;
	SAFEARRAY(BYTE)			ResponseData;
	BSTR				AddressSenderUrl;
	BSTR				AddressDeviceUrl;
} DPNMSG_ENUM_HOSTS_QUERY_CDESC;

 [helpcontext(78373)]
typedef	struct	DPNMSG_ENUM_HOSTS_RESPONSE_CDESC
{
	[hidden] LONG			lSize;
	DPN_APPLICATION_DESC_CDESC	ApplicationDescription;
	SAFEARRAY(BYTE)			ResponseData;
	LONG				lRoundTripLatencyMS;
	BSTR				AddressSenderUrl;
	BSTR				AddressDeviceUrl;
} DPNMSG_ENUM_HOSTS_RESPONSE_CDESC;

 [helpcontext(78356)]
typedef struct DPL_APPLICATION_INFO_CDESC {
	BSTR			guidApplication;
	BSTR			ApplicationName;
	LONG			lNumRunning;
	LONG			lNumWaiting;
	CONST_DPLSESSION	lFlags;
} DPL_APPLICATION_INFO_CDESC;

 [helpcontext(79398)]
typedef struct DPL_CONNECTION_SETTINGS_CDESC
{
	[hidden]	LONG		lSize;
	CONST_DPLCONNECTSETTINGS	lFlags;    
	DPN_APPLICATION_DESC_CDESC	ApplicationDescription;
	BSTR				PlayerName;
	BSTR				AddressSenderUrl;
	BSTR				AddressDeviceUrl;
} DPL_CONNECTION_SETTINGS_CDESC;

 [helpcontext(78357)]
typedef struct DPL_CONNECT_INFO_CDESC {
	[hidden]LONG		lSize;
	CONST_DPLCONNECT	lFlags;
	BSTR			guidApplication;
	DPL_CONNECTION_SETTINGS_CDESC	ConnectionSettings;
} DPL_CONNECT_INFO_CDESC;

 [helpcontext(78359)]
typedef struct DPL_MESSAGE_RECEIVE_CDESC
{
	[hidden] LONG			lSize;
	LONG				Sender;
	SAFEARRAY(BYTE)			Buffer;
	LONG				lBufferSize;
} DPL_MESSAGE_RECEIVE_CDESC;

 [helpcontext(58358)]
typedef struct DPL_MESSAGE_CONNECTION_SETTINGS_CDESC
{
	[hidden] LONG			lSize;
	LONG				hSender; // Handle of the connection for these settings
	DPL_CONNECTION_SETTINGS_CDESC   dplConnectionSettings;     // Connection settings
} DPL_MESSAGE_CONNECTION_SETTINGS_CDESC;

 [helpcontext(78358)]
typedef struct DPL_MESSAGE_CONNECT_CDESC
{
	[hidden] LONG			lSize;
	LONG				ConnectId;
	SAFEARRAY(BYTE)			LobbyConnectData;
	DPL_CONNECTION_SETTINGS_CDESC 	dplMsgCon;
} DPL_MESSAGE_CONNECT_CDESC;

    ///////////////////////////////////////////////////////////////////////////
    // 
    // DirectPlay DirectPlayAddress DirectPlayLobby DirectPlayVoice Interfaces 
    // 
    ///////////////////////////////////////////////////////////////////////////
    

    	[
    		object,
    		uuid(ECA8BD2A-7154-4b23-904B-61FF852A906B),	
    		helpstring("DirectPlayAddress Interface"),
    		pointer_default(unique),
    		helpcontext(78026)
    	]
    	interface I_dxj_DirectPlayAddress : IUnknown	
    	{
  		import "oaidl.idl";

  		[hidden]		HRESULT InternalSetObject([in] IUnknown *lpdd);
  		[hidden]		HRESULT InternalGetObject([out, retval] IUnknown **lpdd);

  		[helpcontext(78175)]	HRESULT BuildFromURL([in] BSTR SourceURL);
  		[helpcontext(78177)]	HRESULT Duplicate([out,retval] I_dxj_DirectPlayAddress **NewAddress);
  		[helpcontext(78176)]	HRESULT Clear();
  		[helpcontext(78183)]	HRESULT GetURL([out,retval] BSTR *URL);
  		[helpcontext(78182)]	HRESULT GetSP([out,retval] BSTR *guidSP);
  		[helpcontext(78184)]	HRESULT GetUserData([in,out] void *UserData, [out,retval] LONG *lBufferSize);
  		[helpcontext(78187)]	HRESULT SetSP([in] BSTR guidSP);
  		[helpcontext(78188)]	HRESULT SetUserData([in] void *UserData, [in] LONG lDataSize);
  		[helpcontext(78181)]	HRESULT GetNumComponents([out,retval] LONG *lNumComponents);
  		[helpcontext(78180)]	HRESULT GetDevice([out,retval] BSTR *guidDevice);
  		[helpcontext(78185)]	HRESULT SetDevice([in] BSTR guidDevice);
  		[helpcontext(78186)]	HRESULT SetEqual([in] I_dxj_DirectPlayAddress *Address);
  		[helpcontext(78173)]	HRESULT AddComponentLong([in] BSTR sComponent, [in] LONG lValue);
  		[helpcontext(78174)]	HRESULT AddComponentString([in] BSTR sComponent, [in] BSTR sValue);
  		[helpcontext(78178)]	HRESULT GetComponentLong([in] BSTR sComponent, [out,retval] LONG *lValue);
  		[helpcontext(78179)]	HRESULT GetComponentString([in] BSTR sComponent, [out,retval] BSTR *sValue);

    	};

    	[
    		object,
    		uuid(7C34602A-7B81-4c6d-9533-658F2D471EFC),	
    		helpstring("DirectPlay Peer Interface"),
    		pointer_default(unique),
    		helpcontext(78027)
    	]
    	interface I_dxj_DirectPlayPeer : IUnknown	
    	{
  		import "oaidl.idl";

  		[hidden]		HRESULT InternalSetObject([in] IUnknown *lpdd);
  		[hidden]		HRESULT InternalGetObject([out, retval] IUnknown **lpdd);
			

  		[helpcontext(78278)]	HRESULT SendTo([in] LONG idSend ,[in] SAFEARRAY(BYTE) *BufferData, [in] LONG lTimeOut,[in,optional] CONST_DPNSENDFLAGS lFlags, [out,retval] LONG *hAsyncHandle);
  		[helpcontext(78254)]	HRESULT CreateGroup([in,out] DPN_GROUP_INFO_CDESC *GroupInfo,[in,optional] CONST_DPNOPERATIONS lFlags, [out,retval] LONG *hAsyncHandle);
  		[helpcontext(78250)]	HRESULT AddPlayerToGroup([in] LONG idGroup, [in] LONG idClient,[in,optional] CONST_DPNOPERATIONS lFlags, [out,retval] LONG *hAsyncHandle);
  		[helpcontext(78270)]	HRESULT GetSendQueueInfo([in] LONG idPlayer, [in,out] LONG *lNumMsgs, [in,out] LONG *lNumBytes, [in,optional] CONST_DPNGETSENDQUEUEINFO lFlags);
  		[helpcontext(78281)]	HRESULT SetGroupInfo([in] LONG idGroup, [in,out] DPN_GROUP_INFO_CDESC *PlayerInfo,[in,optional] CONST_DPNOPERATIONS lFlags, [out,retval] LONG *hAsyncHandle);
  		[helpcontext(78266)]	HRESULT GetGroupInfo([in] LONG idGroup,[in,optional] CONST_DPNOPERATIONS lFlags, [out,retval] DPN_GROUP_INFO_CDESC *layerInfo);
  		[helpcontext(78282)]	HRESULT SetPeerInfo([in] DPN_PLAYER_INFO_CDESC *PlayerInfo,[in,optional] CONST_DPNOPERATIONS lFlags, [out,retval] LONG *hAsyncHandle);
  		[helpcontext(78269)]	HRESULT GetPeerInfo([in] LONG idPeer,[in,optional] CONST_DPNOPERATIONS lFlags, [out,retval] DPN_PLAYER_INFO_CDESC *layerInfo);

  		[helpcontext(78256)]	HRESULT DestroyGroup([in] LONG idGroup,[in,optional] CONST_DPNOPERATIONS lFlags,[out,retval] LONG *hAsyncHandle);
  		[helpcontext(78277)]	HRESULT RemovePlayerFromGroup([in] LONG idGroup, [in] LONG idClient,[in,optional] CONST_DPNOPERATIONS lFlags,[out,retval] LONG *hAsyncHandle);
  		[helpcontext(78588)]	HRESULT DestroyPeer([in] LONG idClient, [in] LONG lFlags, [in] void *UserData, [in] LONG UserDataSize);
  		[helpcontext(78253)]	HRESULT Connect([in] DPN_APPLICATION_DESC_CDESC *AppDesc,[in] I_dxj_DirectPlayAddress *Address,[in] I_dxj_DirectPlayAddress *DeviceInfo, [in] CONST_DPNOPERATIONS lFlags, [in] void *UserData, [in] LONG UserDataSize ,[out,retval] LONG *hAsyncHandle);
		[helpcontext(78276)]	HRESULT RegisterMessageHandler([in] I_dxj_DirectPlayEvent *event);
  		[helpcontext(78257)]	HRESULT EnumHosts([in] DPN_APPLICATION_DESC_CDESC *ApplicationDesc,[in] I_dxj_DirectPlayAddress *AddrHost,[in] I_dxj_DirectPlayAddress *DeviceInfo,[in] LONG lEnumCount, [in] LONG lRetryInterval, [in] LONG lTimeOut,[in] CONST_DPNOPERATIONS lFlags, [in] void *UserData, [in] LONG UserDataSize ,[out,retval] LONG *lAsync);
  		[helpcontext(78264)]	HRESULT GetCountServiceProviders([in,optional] LONG lFlags, [out,retval] LONG *ret);
  		[helpcontext(78271)]	HRESULT GetServiceProvider([in] LONG lIndex, [out,retval] DPN_SERVICE_PROVIDER_INFO_CDESC *ret);

		// Enum for Clients/Groups
  		[helpcontext(78195)]	HRESULT GetCountPlayersAndGroups([in,optional] CONST_DPNENUMCLIENTGROUPFLAGS lFlags, [out,retval] LONG *ret);
  		[helpcontext(78560)]	HRESULT GetPlayerOrGroup([in] LONG lIndex, [out,retval] LONG *ret);
		// Enum Players in groups
  		[helpcontext(78263)]	HRESULT GetCountGroupMembers([in] LONG dpid,[in,optional] LONG lFlags, [out,retval] LONG *ret);
  		[helpcontext(78267)]	HRESULT GetGroupMember([in] LONG lIndex,[in] LONG dpid, [out,retval] LONG *ret);
		
  		[helpcontext(78212), hidden]	HRESULT ReturnBuffer([in] LONG lBufferHandle);
  		[helpcontext(78274)]	HRESULT Host([in] DPN_APPLICATION_DESC_CDESC *AppDesc,[in] I_dxj_DirectPlayAddress *Addres, [in,optional] LONG lFlags);
  		[helpcontext(78251)]	HRESULT CancelAsyncOperation([in] LONG lAsyncHandle, [in,optional] CONST_DPNCANCELFLAGS lFlags);
  		[helpcontext(78258)]	HRESULT GetApplicationDesc([in,optional] LONG lFlags, [out,retval] DPN_APPLICATION_DESC_CDESC *ret);
  		[helpcontext(78279)]	HRESULT SetApplicationDesc([in,out] DPN_APPLICATION_DESC_CDESC *AppDesc, [in,optional] LONG lFlags);
  		[helpcontext(78252)]	HRESULT Close([in,optional] LONG lFlags);
  		[helpcontext(78259)]	HRESULT GetCaps([in,optional] LONG lFlags, [out,retval] DPNCAPS_CDESC *ret);
  		[helpcontext(78280)]	HRESULT SetCaps([in,out] DPNCAPS_CDESC *Caps, [in,optional] LONG lFlags);
  		[helpcontext(78275)]	HRESULT RegisterLobby([in] LONG dpnHandle, [in] I_dxj_DirectPlayLobbiedApplication *LobbyApp, [in,optional] LONG lFlags);
  		[helpcontext(78561)]	HRESULT GetConnectionInfo([in] LONG idPlayer, [in,optional] LONG lFlags, [out,retval] DPN_CONNECTION_INFO_CDESC *pdpConnectionInfo);

  		[helpcontext(78268)]	HRESULT GetPeerAddress([in] LONG idPlayer,[in,optional] LONG lFlags, [out,retval] I_dxj_DirectPlayAddress **pAddress);
  		[helpcontext(78201)]	HRESULT GetLocalHostAddress([in,optional] LONG lFlags, [out,retval] I_dxj_DirectPlayAddress **pAddress);
  		[helpcontext(78283)]	HRESULT SetSPCaps([in] BSTR guidSP, [in] DPN_SP_CAPS_CDESC *spCaps, [in,optional] LONG lFlags);
  		[helpcontext(78272)]	HRESULT GetSPCaps([in] BSTR guidSP, [in,optional] LONG lFlags, [out,retval] DPN_SP_CAPS_CDESC *spCaps);
  		[helpcontext(78285)]	HRESULT TerminateSession([in] LONG lFlags, [in] void *UserData, [in] LONG UserDataSize);
		[helpcontext(78028)]	HRESULT UnRegisterMessageHandler();

    	};    
    	[
    		object,
    		uuid(7584BBA4-1B39-4dcd-A334-D168CBB5A915),	
    		helpstring("DirectPlay Server Interface"),
    		pointer_default(unique),
    		helpcontext(78029)
    	]

    	interface I_dxj_DirectPlayServer : IUnknown	
    	{
  		import "oaidl.idl";

  		[hidden]		HRESULT InternalSetObject([in] IUnknown *lpdd);
  		[hidden]		HRESULT InternalGetObject([out, retval] IUnknown **lpdd);

		[helpcontext(78310)]	HRESULT RegisterMessageHandler([in] I_dxj_DirectPlayEvent *event);

		// Enum for Clients/Groups
  		[helpcontext(78234)]	HRESULT GetCountPlayersAndGroups([in,optional] CONST_DPNENUMCLIENTGROUPFLAGS lFlags, [out,retval] LONG *ret);
  		[helpcontext(78232)]	HRESULT GetPlayerOrGroup([in] LONG lIndex, [out,retval] LONG *ret);
		// Enum Players in groups
  		[helpcontext(78300)]	HRESULT GetCountGroupMembers([in] LONG dpid,[in,optional] LONG lFlags, [out,retval] LONG *ret);
  		[helpcontext(78303)]	HRESULT GetGroupMember([in] LONG lIndex,[in] LONG dpid, [out,retval] LONG *ret);

  		[helpcontext(78301)]	HRESULT GetCountServiceProviders([in,optional] LONG lFlags, [out,retval] LONG *ret);
  		[helpcontext(78305)]	HRESULT GetServiceProvider([in] LONG lIndex, [out,retval] DPN_SERVICE_PROVIDER_INFO_CDESC *ret);
  		[helpcontext(78288)]	HRESULT CancelAsyncOperation([in] LONG lAsyncHandle, [in,optional] CONST_DPNCANCELFLAGS lFlags);
  		[helpcontext(78312)]	HRESULT SendTo([in] LONG idSend ,[in] SAFEARRAY(BYTE) *BufferData, [in] LONG lTimeOut,[in,optional] CONST_DPNSENDFLAGS lFlags, [out,retval] LONG *hAsyncHandle);
  		[helpcontext(78290)]	HRESULT CreateGroup([in] DPN_GROUP_INFO_CDESC *GroupInfo,[in,optional] CONST_DPNOPERATIONS lFlags, [out,retval] LONG *hAsyncHandle);
  		[helpcontext(78222)]	HRESULT AddPlayerToGroup([in] LONG idGroup, [in] LONG idClient,[in,optional] CONST_DPNOPERATIONS lFlags, [out,retval] LONG *hAsyncHandle);
  		[helpcontext(78304)]	HRESULT GetSendQueueInfo([in] LONG idPlayer, [in,out] LONG *lNumMsgs, [in,out] LONG *lNumBytes, [in,optional] CONST_DPNGETSENDQUEUEINFO lFlags);
  		[helpcontext(78315)]	HRESULT SetGroupInfo([in] LONG idGroup, [in] DPN_GROUP_INFO_CDESC *PlayerInfo,[in,optional] CONST_DPNOPERATIONS lFlags, [out,retval] LONG *hAsyncHandle);
  		[helpcontext(78302)]	HRESULT GetGroupInfo([in] LONG idGroup,[in,optional] LONG lFlags, [out,retval] DPN_GROUP_INFO_CDESC *layerInfo);
  		[helpcontext(78316)]	HRESULT SetServerInfo([in] DPN_PLAYER_INFO_CDESC *PlayerInfo,[in,optional] CONST_DPNOPERATIONS lFlags, [out,retval] LONG *hAsyncHandle);
  		[helpcontext(78296)]	HRESULT GetClientInfo([in] LONG idPeer,[in,optional] LONG lFlags, [out,retval] DPN_PLAYER_INFO_CDESC *layerInfo);
  		[helpcontext(78293)]	HRESULT GetApplicationDesc([in,optional] LONG lFlags, [out,retval] DPN_APPLICATION_DESC_CDESC *ret);
  		[helpcontext(78313)]	HRESULT SetApplicationDesc([in,out] DPN_APPLICATION_DESC_CDESC *AppDesc, [in,optional] LONG lFlags);
  		[helpcontext(78308)]	HRESULT Host([in] DPN_APPLICATION_DESC_CDESC *AppDesc,[in] I_dxj_DirectPlayAddress *Address, [in,optional] LONG lFlags);
  		[helpcontext(78289)]	HRESULT Close([in,optional] LONG lFlags);
  		[helpcontext(78294)]	HRESULT GetCaps([in,optional] LONG lFlags, [out,retval] DPNCAPS_CDESC *ret);
  		[helpcontext(78314)]	HRESULT SetCaps([in,out] DPNCAPS_CDESC *Caps, [in,optional] LONG lFlags);
  		[helpcontext(78247)]	HRESULT RemovePlayerFromGroup([in] LONG idGroup, [in] LONG idClient,[in,optional] CONST_DPNOPERATIONS lFlags,[out,retval] LONG *hAsyncHandle);
  		[helpcontext(78248), hidden]	HRESULT ReturnBuffer([in] LONG lBufferHandle);
  		[helpcontext(78291)]	HRESULT DestroyClient([in] LONG idClient, [in] LONG lFlags, [in] void *UserData, [in] LONG UserDataSize);
  		[helpcontext(78292)]	HRESULT DestroyGroup([in] LONG idGroup,[in,optional] CONST_DPNOPERATIONS lFlags,[out,retval] LONG *hAsyncHandle);
  		[helpcontext(78309)]	HRESULT RegisterLobby([in] LONG dpnHandle, [in] I_dxj_DirectPlayLobbiedApplication *LobbyApp, [in,optional] LONG lFlags);
  		[helpcontext(78298)]	HRESULT GetConnectionInfo([in] LONG idPlayer, [in,optional] LONG lFlags, [out,retval] DPN_CONNECTION_INFO_CDESC *pdpConnectionInfo);

  		[helpcontext(78995)]	HRESULT GetClientAddress([in] LONG idPlayer,[in,optional] LONG lFlags, [out,retval] I_dxj_DirectPlayAddress **pAddress);
  		[helpcontext(78239)]	HRESULT GetLocalHostAddress([in,optional] LONG lFlags, [out,retval] I_dxj_DirectPlayAddress **pAddress);
  		[helpcontext(78317)]	HRESULT SetSPCaps([in] BSTR guidSP, [in] DPN_SP_CAPS_CDESC *spCaps, [in,optional] LONG lFlags);
  		[helpcontext(78306)]	HRESULT GetSPCaps([in] BSTR guidSP, [in,optional] LONG lFlags, [out,retval] DPN_SP_CAPS_CDESC *spCaps);
		[helpcontext(78030)]	HRESULT UnRegisterMessageHandler();
    	};

    	[
    		object,
    		uuid(3F6521E5-94BC-4a7a-A049-3D199EB59E72),	
    		helpstring("DirectPlay Client Interface"),
    		pointer_default(unique),
    		helpcontext(78031)
    	]
    	interface I_dxj_DirectPlayClient : IUnknown	
    	{
  		import "oaidl.idl";

  		[hidden]		HRESULT InternalSetObject([in] IUnknown *lpdd);
  		[hidden]		HRESULT InternalGetObject([out, retval] IUnknown **lpdd);

		[helpcontext(78206)]	HRESULT RegisterMessageHandler([in] I_dxj_DirectPlayEvent *event);
  		[helpcontext(78193)]	HRESULT EnumHosts([in] DPN_APPLICATION_DESC_CDESC *ApplicationDesc,[in] I_dxj_DirectPlayAddress *AddrHost,[in] I_dxj_DirectPlayAddress *DeviceInfo,[in] LONG lRetryCount, [in] LONG lRetryInterval, [in] LONG lTimeOut,[in] CONST_DPNOPERATIONS lFlags, [in] void *UserData, [in] LONG UserDataSize ,[out,retval] LONG *lAsync);
  		[helpcontext(78197)]	HRESULT GetCountServiceProviders([in,optional] LONG lFlags, [out,retval] LONG *ret);
  		[helpcontext(78202)]	HRESULT GetServiceProvider([in] LONG lIndex, [out,retval] DPN_SERVICE_PROVIDER_INFO_CDESC *ret);
  		[helpcontext(78190)]	HRESULT CancelAsyncOperation([in] LONG lAsyncHandle, [in,optional] CONST_DPNCANCELFLAGS lFlags);
  		[helpcontext(78192)]	HRESULT Connect([in] DPN_APPLICATION_DESC_CDESC *AppDesc,[in] I_dxj_DirectPlayAddress *Address,[in] I_dxj_DirectPlayAddress *DeviceInfo, [in] CONST_DPNOPERATIONS lFlags, [in] void *UserData, [in] LONG UserDataSize ,[out,retval] LONG *hAsyncHandle);
  		[helpcontext(78208)]	HRESULT Send([in] SAFEARRAY(BYTE) *BufferData, [in] LONG lTimeOut,[in,optional] CONST_DPNSENDFLAGS lFlags, [out,retval] LONG *hAsyncHandle);
  		[helpcontext(78199)]	HRESULT GetSendQueueInfo([in,out] LONG *lNumMsgs, [in,out] LONG *lNumBytes, [in,optional] CONST_DPNGETSENDQUEUEINFO lFlags);
  		[helpcontext(78194)]	HRESULT GetApplicationDesc([in,optional] LONG lFlags, [out,retval] DPN_APPLICATION_DESC_CDESC *ret);
  		[helpcontext(78210)]	HRESULT SetClientInfo([in] DPN_PLAYER_INFO_CDESC *PlayerInfo,[in,optional] CONST_DPNOPERATIONS lFlags, [out,retval] LONG *hAsyncHandle);
  		[helpcontext(78501)]	HRESULT GetServerInfo([in,optional] LONG lFlags, [out,retval] DPN_PLAYER_INFO_CDESC *layerInfo);
  		[helpcontext(78191)]	HRESULT Close([in,optional] LONG lFlags);
  		[helpcontext(78207), hidden]	HRESULT ReturnBuffer([in] LONG lBufferHandle);
  		[helpcontext(78295)]	HRESULT GetCaps([in,optional] LONG lFlags, [out,retval] DPNCAPS_CDESC *ret);
  		[helpcontext(78209)]	HRESULT SetCaps([in,out] DPNCAPS_CDESC *Caps, [in,optional] LONG lFlags);
  		[helpcontext(78205)]	HRESULT RegisterLobby([in] LONG dpnHandle, [in] I_dxj_DirectPlayLobbiedApplication *LobbyApp, [in,optional] LONG lFlags);
  		[helpcontext(78196)]	HRESULT GetConnectionInfo([in,optional] LONG lFlags, [out,retval] DPN_CONNECTION_INFO_CDESC *pdpConnectionInfo);

  		[helpcontext(78200)]	HRESULT GetServerAddress([in,optional] LONG lFlags, [out,retval] I_dxj_DirectPlayAddress **pAddress);
  		[helpcontext(78211)]	HRESULT SetSPCaps([in] BSTR guidSP, [in] DPN_SP_CAPS_CDESC *spCaps, [in,optional] LONG lFlags);
  		[helpcontext(78203)]	HRESULT GetSPCaps([in] BSTR guidSP, [in,optional] LONG lFlags, [out,retval] DPN_SP_CAPS_CDESC *spCaps);
		[helpcontext(78032)]	HRESULT UnRegisterMessageHandler();

    	};

    	[
    		object,
    		uuid(14716737-3005-4758-896F-B48D001929A5),	
    		helpstring("DirectPlayLobbyClient Interface"),
    		pointer_default(unique),
		oleautomation,
		local,
    		helpcontext(78033)
    	]

    	interface I_dxj_DirectPlayLobbyClient : IUnknown	
    	{
  		import "oaidl.idl";

  		[hidden]		HRESULT InternalSetObject([in] IUnknown *lpdd);
  		[hidden]		HRESULT InternalGetObject([out, retval] IUnknown **lpdd);

  		[helpcontext(78241)]	HRESULT RegisterMessageHandler([in] I_dxj_DirectPlayLobbyEvent  *lobbyEvent);
  		[helpcontext(78539)]	HRESULT GetCountLocalPrograms([in] BSTR GuidApplication,[out,retval] LONG *lCount);
  		[helpcontext(78240)]	HRESULT GetLocalProgram([in] LONG lProgID, [out,retval] DPL_APPLICATION_INFO_CDESC *app);
  		[helpcontext(78238)]	HRESULT ConnectApplication([in] DPL_CONNECT_INFO_CDESC *ConnectionInfo,[in] LONG lTimeOut,[in] CONST_DPLCONNECT lFlags, [out,retval] LONG *hApplication);
  		[helpcontext(78243)]	HRESULT Send([in] LONG Target,[in] SAFEARRAY(BYTE) *Buffer,[in] LONG lBufferSize,[in] LONG lFlags);
  		[helpcontext(78242)]	HRESULT ReleaseApplication([in] LONG Application);
  		[helpcontext(78237)]	HRESULT Close();
		[helpcontext(78034)]	HRESULT UnRegisterMessageHandler();
		[helpcontext(78035)]	HRESULT GetConnectionSettings([in] LONG hLobbyClient, [in] LONG lFlags, [out,retval] DPL_CONNECTION_SETTINGS_CDESC *ConnectionSettings);	
		[helpcontext(78036)]	HRESULT SetConnectionSettings([in] LONG hTarget, [in] LONG lFlags, [in,out] DPL_CONNECTION_SETTINGS_CDESC *ConnectionSettings, [in] I_dxj_DirectPlayAddress *HostAddress, [in] I_dxj_DirectPlayAddress *Device);
    	};

    	[
    		object,
    		uuid(EF390476-6EA0-4ad3-9EA3-768DCB68038D),	
    		helpstring("DirectPlayLobbiedApplication Interface"),
    		pointer_default(unique),
		oleautomation,
		local,
    		helpcontext(78037)
    	]

    	interface I_dxj_DirectPlayLobbiedApplication : IUnknown	
    	{
  		import "oaidl.idl";

  		[hidden]		HRESULT InternalSetObject([in] IUnknown *lpdd);
  		[hidden]		HRESULT InternalGetObject([out, retval] IUnknown **lpdd);

  		[helpcontext(78230)]	HRESULT RegisterMessageHandler([in] I_dxj_DirectPlayLobbyEvent  *lobbyEvent, [out,retval] LONG *lDPNHandle);
  		[helpcontext(78231)]	HRESULT RegisterProgram([in] DPL_PROGRAM_DESC_CDESC *ProgramDesc,[in] LONG lFlags);
  		[helpcontext(78534)]	HRESULT UnRegisterProgram([in] BSTR guidApplication,[in] LONG lFlags);
  		[helpcontext(78532)]	HRESULT Send([in] LONG Target,[in] SAFEARRAY(BYTE) *Buffer,[in] LONG lBufferSize,[in] LONG lFlags);
  		[helpcontext(78233)]	HRESULT SetAppAvailable([in] VARIANT_BOOL fAvailable, [in] CONST_DPLAVAILABLE lFlags);
  		[helpcontext(78235)]	HRESULT UpdateStatus([in] LONG LobbyClient, [in] CONST_DPLSESSION lStatus);
  		[helpcontext(78229)]	HRESULT Close();
		[helpcontext(78038)]	HRESULT UnRegisterMessageHandler();
		[helpcontext(78039)]	HRESULT GetConnectionSettings([in] LONG LobbyClient, [in] LONG lFlags, [out,retval] DPL_CONNECTION_SETTINGS_CDESC *ConnectionSettings);	
		[helpcontext(78040)]	HRESULT SetConnectionSettings([in] LONG hTarget, [in] LONG lFlags, [in,out] DPL_CONNECTION_SETTINGS_CDESC *ConnectionSettings, [in] I_dxj_DirectPlayAddress *HostAddress, [in] I_dxj_DirectPlayAddress *Device);
    	};

    	[
    		object,
    		uuid(F794A01F-2A0D-46a8-9CEF-D5678A413BEF),
    		helpstring("DirectPlayLobby Event Interface"),
    		pointer_default(unique),
		oleautomation,
		local,
    		helpcontext(78041)
    	]

    	interface I_dxj_DirectPlayLobbyEvent : IUnknown
    	{
    		[helpcontext(78847)]		HRESULT Receive([in,out] DPL_MESSAGE_RECEIVE_CDESC *dlNotify, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78245)]		HRESULT Connect([in,out] DPL_MESSAGE_CONNECT_CDESC *dlNotify, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78246)]		HRESULT Disconnect([in] LONG DisconnectID, [in] LONG lReason);
    		[helpcontext(78248)]		HRESULT SessionStatus([in] LONG Status, [in] LONG lHandle);
    		[helpcontext(78042)]		HRESULT ConnectionSettings([in,out] DPL_MESSAGE_CONNECTION_SETTINGS_CDESC *ConnectionSettings);
		
    	};

    	[
    		object,
    		uuid(F9DCCD1D-E6B9-45ed-B3E2-C32414C71FA4),
    		helpstring("DirectPlay Event Interface"),
    		pointer_default(unique),
		oleautomation,
		local,
    		helpcontext(78043)
    	]

    	interface I_dxj_DirectPlayEvent : IUnknown
    	{
    		[helpcontext(78220)]		HRESULT AddRemovePlayerGroup([in] LONG lMsgID, [in] LONG lPlayerID, [in] LONG lGroupID, [in,out] VARIANT_BOOL *fRejectMsg);
		[helpcontext(78214)]		HRESULT	AppDesc([in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78215)]		HRESULT AsyncOpComplete([in,out] DPNMSG_ASYNC_OP_COMPLETE_CDESC *dpnotify, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78514)]		HRESULT CreateGroup([in] LONG lGroupID, [in] LONG lOwnerID, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78213)]		HRESULT CreatePlayer([in] LONG lPlayerID, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78216)]		HRESULT ConnectComplete([in,out] DPNMSG_CONNECT_COMPLETE_CDESC *dpnotify, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78515)]		HRESULT DestroyGroup([in] LONG lGroupID, [in] LONG lReason, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78513)]		HRESULT DestroyPlayer([in] LONG lPlayerID, [in] LONG lReason, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78218)]		HRESULT EnumHostsQuery([in,out] DPNMSG_ENUM_HOSTS_QUERY_CDESC *dpnotify, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78219)]		HRESULT EnumHostsResponse([in,out] DPNMSG_ENUM_HOSTS_RESPONSE_CDESC *dpnotify, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78522)]		HRESULT HostMigrate([in] LONG lNewHostID, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78223)]		HRESULT IndicateConnect([in,out] DPNMSG_INDICATE_CONNECT_CDESC *dpnotify, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78529)]		HRESULT IndicatedConnectAborted([in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78224)]		HRESULT InfoNotify([in] LONG lMsgID, [in] LONG lNotifyID, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78225)]		HRESULT Receive([in,out] DPNMSG_RECEIVE_CDESC *dpnotify, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78226)]		HRESULT SendComplete([in,out] DPNMSG_SEND_COMPLETE_CDESC *dpnotify, [in,out] VARIANT_BOOL *fRejectMsg);
    		[helpcontext(78227)]		HRESULT TerminateSession([in,out] DPNMSG_TERMINATE_SESSION_CDESC *dpNotify, [in,out] VARIANT_BOOL *fRejectMsg);
		
    	};
    ///////////////////////////////////////////////////////////////////////////
    //
    // DplayVoice Interfaces
    //
    ///////////////////////////////////////////////////////////////////////////

	// DirectPlayVoiceEvents
    	[
    		object,
    		uuid(26AE5141-8010-46ea-861C-F9FC0F8B61D9),	
    		helpstring("DirectPlayVoice Event Interface"),
    		pointer_default(unique),
		oleautomation,
		local,
    		helpcontext(78044)
    	]
    	interface I_dxj_DPVoiceEvent : IUnknown	
    	{
  		import "oaidl.idl";

    		[helpcontext(58341)]		HRESULT SessionLost([in] LONG ResultCode);
    		[helpcontext(58342)]		HRESULT ConnectResult([in] LONG ResultCode);
    		[helpcontext(58343)]		HRESULT DisconnectResult([in] LONG ResultCode);
    		[helpcontext(58344)]		HRESULT CreateVoicePlayer([in] LONG PlayerID, [in] LONG Flags);
    		[helpcontext(58345)]		HRESULT DeleteVoicePlayer([in] LONG PlayerID);
    		[helpcontext(58346)]		HRESULT HostMigrated([in] LONG NewHostID, [in,out] I_dxj_DirectPlayVoiceServer *NewServer);
    		[helpcontext(58347)]		HRESULT InputLevel([in] LONG PeakLevel, [in] LONG RecordVolume);
    		[helpcontext(58348)]		HRESULT OutputLevel([in] LONG PeakLevel, [in] LONG OutputVolume);
    		[helpcontext(58349)]		HRESULT PlayerOutputLevel([in] LONG SourcePlayerID, [in] LONG PeakLevel);
    		[helpcontext(58350)]		HRESULT PlayerVoiceStart([in] LONG SourcePlayerID);
    		[helpcontext(58351)]		HRESULT PlayerVoiceStop([in] LONG SourcePlayerID);
    		[helpcontext(58352)]		HRESULT RecordStart([in] LONG PeakVolume);
    		[helpcontext(58353)]		HRESULT RecordStop([in] LONG PeakVolume);
    	};

  	[
  		object,
  		uuid(9F76FF0F-8E92-11d1-1515-00C04FC2C312),
  		helpstring("IDirectPlayVoiceClient Interface"),
  		pointer_default(unique),
		local,
  		helpcontext(78045)
  	]
  	interface I_dxj_DirectPlayVoiceClient : IUnknown	
  	{
  		import "oaidl.idl";
  
  		[hidden]		HRESULT InternalSetObject([in] IUnknown *lpdd);
  		[hidden]		HRESULT InternalGetObject([out, retval] IUnknown **lpdd);
  
  		//
  		// *** I_dxj_DirectPlayVoiceClient methods ***
  		//
		[helpcontext(78332)]			HRESULT Initialize([in] IUnknown *DplayObj, [in] LONG lFlags);
  		[helpcontext(78320)]			HRESULT Connect([in] DVSOUNDDEVICECONFIG_CDESC *SoundDeviceConfig, [in] DVCLIENTCONFIG_CDESC *ClientConfig, [in] LONG lFlags);
  		[helpcontext(78323)]			HRESULT Disconnect([in] LONG lFlags);
  		[helpcontext(78328)]			HRESULT GetSessionDesc([out,retval] DVSESSIONDESC_CDESC *SessionDesc);
  		[helpcontext(78325)]			HRESULT GetClientConfig([out,retval] DVCLIENTCONFIG_CDESC *ClientConfig);
  		[helpcontext(78333)]			HRESULT SetClientConfig([in] DVCLIENTCONFIG_CDESC *ClientConfig);
  		[helpcontext(78324)]			HRESULT GetCaps([out,retval] DVCAPS_CDESC *Caps);
  		[helpcontext(78327)]			HRESULT GetCompressionTypeCount([out,retval] LONG *v1);
  		[helpcontext(78326)]			HRESULT GetCompressionType([in] LONG lIndex, [in,out] DVCOMPRESSIONINFO_CDESC *Data,[in] LONG lFlags);
  		[helpcontext(78335)]			HRESULT SetTransmitTargets([in] SAFEARRAY(LONG) *playerIDs, [in] LONG lFlags);
  		[helpcontext(78331)]			HRESULT GetTransmitTargets([in] LONG lFlags, [out,retval] SAFEARRAY(LONG) *ret);
  		[helpcontext(78334)]			HRESULT SetCurrentSoundDevices([in] I_dxj_DirectSound *DirectSoundObj, [in] I_dxj_DirectSoundCapture *DirectCaptureObj);
  		[helpcontext(78330)]			HRESULT GetSoundDevices([in,out] I_dxj_DirectSound *DirectSoundObj, [in,out] I_dxj_DirectSoundCapture *DirectCaptureObj);
  		[helpcontext(78321)]			HRESULT Create3DSoundBuffer([in] LONG playerID, [in,optional] I_dxj_DirectSoundBuffer *Buffer,[in,optional] LONG lPriority, [in,optional] CONST_DSBPLAYFLAGS lFlags, [out,retval] I_dxj_DirectSound3dBuffer **UserBuffer);
  		[helpcontext(78322)]			HRESULT Delete3DSoundBuffer([in] LONG playerID, [in] I_dxj_DirectSound3dBuffer *UserBuffer);
  		[helpcontext(78329)]			HRESULT GetSoundDeviceConfig([out,retval] DVSOUNDDEVICECONFIG_CDESC *SoundDeviceConfig);
  		[helpcontext(78336)]			HRESULT StartClientNotification([in] I_dxj_DPVoiceEvent *event);
		[helpcontext(78047)]			HRESULT UnRegisterMessageHandler();
  
  	};
  
  	[
  		object,
  		uuid(9F76FF0F-8E92-11d1-1515-00C04FC2C313),
  		helpstring("IDirectPlayVoiceServer Interface"),
  		pointer_default(unique),
		oleautomation,
		local,
  		helpcontext(78048)
  	]
  	interface I_dxj_DirectPlayVoiceServer : IUnknown	
  	{
  		import "oaidl.idl";
  
  		[hidden]		HRESULT InternalSetObject([in] IUnknown *lpdd);
  		[hidden]		HRESULT InternalGetObject([out, retval] IUnknown **lpdd);
  
  		//
  		// *** I_dxj_DirectPlayVoiceServer methods ***
  		//
  		[helpcontext(78348)]			HRESULT Initialize([in] IUnknown *DplayObj, [in] LONG lFlags);
  		[helpcontext(78352)]			HRESULT StartSession([in] DVSESSIONDESC_CDESC *SessionDesc,[in] LONG lFlags);
  		[helpcontext(78353)]			HRESULT StopSession([in] LONG lFlags);
  		[helpcontext(78346)]			HRESULT GetSessionDesc([out,retval] DVSESSIONDESC_CDESC *SessionDesc);
  		[helpcontext(78349)]			HRESULT SetSessionDesc([in] DVSESSIONDESC_CDESC *ClientConfig);
  		[helpcontext(78343)]			HRESULT GetCaps([out,retval] DVCAPS_CDESC *Caps);
  		[helpcontext(78345)]			HRESULT GetCompressionTypeCount([out,retval] LONG *v1);
  		[helpcontext(78344)]			HRESULT GetCompressionType([in] LONG lIndex, [in,out] DVCOMPRESSIONINFO_CDESC *Data,[in] LONG lFlags);
  		[helpcontext(78350)]			HRESULT SetTransmitTargets([in] LONG playerSourceID,[in] SAFEARRAY(LONG) *playerTargetIDs, [in] LONG lFlags);
  		[helpcontext(78347)]			HRESULT GetTransmitTargets([in] LONG playerSourceID, [in] LONG lFlags, [out,retval] SAFEARRAY(LONG) *ret);
  		[helpcontext(78351)]			HRESULT StartServerNotification([in] I_dxj_DPVoiceEvent *event);
		[helpcontext(78049)]			HRESULT UnRegisterMessageHandler();
  
  	};
  
  	[
  		object,
  		uuid(9F76FF0F-8E92-11d1-1515-00C04FC2C314),
  		helpstring("DirectPlayVoiceTest Interface"),
  		pointer_default(unique),
		oleautomation,
		local,
  		helpcontext(78050)
  	]
  	interface I_dxj_DirectPlayVoiceSetup : IUnknown	
  	{
  		import "oaidl.idl";
  
  		[hidden]		HRESULT InternalSetObject([in] IUnknown *lpdd);
  		[hidden]		HRESULT InternalGetObject([out, retval] IUnknown **lpdd);
  
  		//
  		// *** I_dxj_DirectPlayVoiceSetup methods ***
  		//
#ifdef _WIN64
  		[helpcontext(78355)]			HRESULT CheckAudioSetup([in] BSTR guidPlaybackDevice , [in] BSTR guidCaptureDevice , [in] HWND hwndOwner, [in] LONG lFlags, [out,retval] LONG *v1);
#else
  		[helpcontext(78355)]			HRESULT CheckAudioSetup([in] BSTR guidPlaybackDevice , [in] BSTR guidCaptureDevice , [in] LONG hwndOwner, [in] LONG lFlags, [out,retval] LONG *v1);
#endif
  
  	};
    
	//
	// Direct Play String Constants
	//

	[
		dllname("dx8vb.dll")
	]
	module DPLAY8STRINGCONSTANTS
	{
		// key names for address components
		const BSTR DPN_KEY_APPLICATION_INSTANCE = L"applicationinstance";
		const BSTR DPN_KEY_BAUD		= L"baud";
		const BSTR DPN_KEY_DEVICE		= L"device";
		const BSTR DPN_KEY_FLOWCONTROL		= L"flowcontrol";
		const BSTR DPN_KEY_HOSTNAME		= L"hostname";
		const BSTR DPN_KEY_PARITY		= L"parity";
		const BSTR DPN_KEY_PHONENUMBER		= L"phonenumber";
		const BSTR DPN_KEY_PORT		= L"port";
		const BSTR DPN_KEY_PROGRAM		= L"program";
		const BSTR DPN_KEY_PROVIDER		= L"provider";
		const BSTR DPN_KEY_STOPBITS		= L"stopbits";

		// values for baud rate
		const DWORD DPN_BAUD_RATE_9600		= 9600;
		const DWORD DPN_BAUD_RATE_14400	= 14400;
		const DWORD DPN_BAUD_RATE_19200	= 19200;
		const DWORD DPN_BAUD_RATE_38400	= 38400;
		const DWORD DPN_BAUD_RATE_56000	= 56000;
		const DWORD DPN_BAUD_RATE_57600	= 57600;
		const DWORD DPN_BAUD_RATE_115200	= 115200;

		// values for stop bits
		const BSTR DPN_STOP_BITS_ONE		= L"1";
		const BSTR DPN_STOP_BITS_ONE_FIVE	= L"1.5";
		const BSTR DPN_STOP_BITS_TWO		= L"2";

		// values for parity
		const BSTR DPN_PARITY_NONE		= L"NONE";
		const BSTR DPN_PARITY_EVEN		= L"EVEN";
		const BSTR DPN_PARITY_ODD		= L"ODD";
		const BSTR DPN_PARITY_MARK		= L"MARK";
		const BSTR DPN_PARITY_SPACE		= L"SPACE";

		// values for flow control
		const BSTR DPN_FLOW_CONTROL_NONE	= L"NONE";
		const BSTR DPN_FLOW_CONTROL_XONXOFF	= L"XONXOFF";
		const BSTR DPN_FLOW_CONTROL_RTS	= L"RTS";
		const BSTR DPN_FLOW_CONTROL_DTR	= L"DTR";
		const BSTR DPN_FLOW_CONTROL_RTSDTR	= L"RTSDTR";

		const BSTR DPN_SEPARATOR_KEYVALUE	= L"=";
		const BSTR DPN_SEPARATOR_USERDATA	= L"#";
		const BSTR DPN_SEPARATOR_COMPONENT	= L";";
		const BSTR DPN_ESCAPECHAR		= L"%";

		// Header
		const BSTR DPN_HEADER			= L"x-directplay:/";

		const BSTR DPN_VALUE_TCPIPPROVIDER	= L"IP";
		const BSTR DPN_VALUE_IPXPROVIDER	= L"IPX";
		const BSTR DPN_VALUE_MODEMPROVIDER	= L"MODEM";
		const BSTR DPN_VALUE_SERIALPROVIDER	= L"SERIAL";

		const BSTR DP8SP_TCPIP			= L"CLSID_DP8SP_TCPIP";
		const BSTR DP8SP_IPX			= L"CLSID_DP8SP_IPX";
		const BSTR DP8SP_MODEM			= L"CLSID_DP8SP_MODEM";
		const BSTR DP8SP_SERIAL			= L"CLSID_DP8SP_SERIAL";
		const BSTR DSDEVID_DEFAULTPLAYBACK	= L"DSDEVID_DEFAULTPLAYBACK";
		const BSTR DSDEVID_DEFAULTCAPTURE	= L"DSDEVID_DEFAULTCAPTURE";
		const BSTR DSDEVID_DEFAULTVOICEPLAYBACK	= L"DSDEVID_DEFAULTVOICEPLAYBACK";
		const BSTR DSDEVID_DEFAULTVOICECAPTURE	= L"DSDEVID_DEFAULTVOICECAPTURE";
	};

	#define CALLTYPE _stdcall

    [
        dllname("dx8vb.dll")
    ]
    module DPLAYBUFFER_HELPER
    {
	[entry(120),helpcontext(79152)] HRESULT CALLTYPE NewBuffer([in,out] SAFEARRAY(BYTE) *Buffer, [out,retval] LONG *lOffSet);
	[entry(121),helpcontext(79153)] HRESULT CALLTYPE AddDataToBuffer([in,out] SAFEARRAY(BYTE) *Buffer, [in] void *lData, [in] DWORD lSize, [in,out] LONG *lOffSet);
	[entry(122),helpcontext(79154)] HRESULT CALLTYPE AddStringToBuffer([in,out] SAFEARRAY(BYTE) *Buffer, [in] BSTR StringData, [in,out] LONG *lOffSet);
	[entry(123),helpcontext(79155)] HRESULT CALLTYPE GetDataFromBuffer([in] SAFEARRAY(BYTE) *Buffer, [in] void *lData, [in] DWORD lSize, [in,out] LONG *lOffSet);
	[entry(124),helpcontext(79156)] HRESULT CALLTYPE GetStringFromBuffer([in] SAFEARRAY(BYTE) *Buffer, [in,out] LONG *lOffSet, [out,retval] BSTR *sData);
     };
