windows-nt/Source/XPSP1/NT/multimedia/directx/dplay/dnet/lobby/dplconnect.h
2020-09-26 16:20:57 +08:00

126 lines
4.7 KiB
C++

/*==========================================================================
*
* 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 {
DPNHANDLE hConnect;
DWORD dwTargetPID;
HANDLE hConnectEvent;
LONG lRefCount;
CMessageQueue *pSendQueue;
CConnectionSettings *pConnectionSettings;
DNCRITICAL_SECTION csLock;
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__