|
|
/*==========================================================================
* * Copyright (C) 2000 Microsoft Corporation. All Rights Reserved. * * File: DPLConnect.h * Content: DirectPlay Lobby Connections Header File *@@BEGIN_MSINTERNAL * History: * Date By Reason * ==== == ====== * 02/21/00 mjn Created * 06/15/00 rmt Bug #33617 - Must provide method for providing automatic launch of DirectPlay instances * 07/08/2000 rmt Bug #38725 - Need to provide method to detect if app was lobby launched * rmt Bug #38757 - Callback messages for connections may return AFTER WaitForConnection returns * rmt Bug #38755 - No way to specify player name in Connection Settings * rmt Bug #38758 - DPLOBBY8.H has incorrect comments * rmt Bug #38783 - pvUserApplicationContext is only partially implemented * rmt Added DPLHANDLE_ALLCONNECTIONS and dwFlags (reserved field to couple of funcs). * 02/06/2001 rodtoll WINBUG #293871: DPLOBBY8: [IA64] Lobby launching a 64-bit * app from 64-bit lobby launcher crashes with unaligned memory error. *@@END_MSINTERNAL * ***************************************************************************/
#ifndef __DPLCONNECT_H__
#define __DPLCONNECT_H__
//**********************************************************************
// Constant definitions
//**********************************************************************
//**********************************************************************
// Macro definitions
//**********************************************************************
//**********************************************************************
// Structure definitions
//**********************************************************************
class CMessageQueue; class CConnectionSettings;
typedef struct _DPL_CONNECTION { CBilink m_blLobbyObjectLinkage;
DPNHANDLE hConnect; DWORD dwTargetProcessIdentity; DNHANDLE hTargetProcess; DNHANDLE hConnectEvent; LONG lRefCount; CMessageQueue *pSendQueue; CConnectionSettings *pConnectionSettings; #ifndef DPNBUILD_ONLYONETHREAD
DNCRITICAL_SECTION csLock; #endif // !DPNBUILD_ONLYONETHREAD
PVOID pvConnectContext; } DPL_CONNECTION, *PDPL_CONNECTION;
//**********************************************************************
// Variable definitions
//**********************************************************************
//**********************************************************************
// Function prototypes
//**********************************************************************
HRESULT DPLConnectionNew(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, DPNHANDLE *const phConnect, DPL_CONNECTION **const ppdnConnection);
HRESULT DPLConnectionSetConnectSettings( DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, DPNHANDLE const phConnect, CConnectionSettings * pdplConnectSettings );
HRESULT DPLConnectionGetConnectSettings( DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, DPNHANDLE const phConnect, DPL_CONNECTION_SETTINGS * const pdplConnectSettings, DWORD * const pdwDataSize );
HRESULT DPLConnectionRelease(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, const DPNHANDLE hConnect);
HRESULT DPLConnectionFind(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, const DPNHANDLE hConnect, DPL_CONNECTION **const ppdnConnection, const BOOL bAddRef);
HRESULT DPLConnectionConnect(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, const DPNHANDLE hConnect, const DWORD dwProcessId, const BOOL fApplication );
HRESULT DPLConnectionDisconnect(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, const DPNHANDLE hConnect );
HRESULT DPLConnectionEnum(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, DPNHANDLE *const prghConnect, DWORD *const pdwNum);
HRESULT DPLConnectionSendREQ(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, const DPNHANDLE hConnect, const DWORD dwPID, DPL_CONNECT_INFO *const pInfo);
HRESULT DPLConnectionReceiveREQ(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, BYTE *const pBuffer);
HRESULT DPLConnectionSendACK(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, const DPNHANDLE hConnect);
HRESULT DPLConnectionReceiveACK(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, const DPNHANDLE hSender, BYTE *const pBuffer);
HRESULT DPLConnectionReceiveDisconnect(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, const DPNHANDLE hSender, BYTE *const pBuffer, const HRESULT hrDisconnectReason );
HRESULT DPLConnectionSetContext(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, const DPNHANDLE hConnection, PVOID pvConnectContext );
HRESULT DPLConnectionGetContext(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject, const DPNHANDLE hConnection, PVOID *ppvConnectContext );
#endif // __DPLCONNECT_H__
|