/*==========================================================================
 *
 *  Copyright (C) 2000 Microsoft Corporation.  All Rights Reserved.
 *
 *  File:       DPLApp.h
 *  Content:    DirectPlay Lobbied Application Header File
 *@@BEGIN_MSINTERNAL
 *  History:
 *   Date       By      Reason
 *   ====       ==      ======
 *   02/21/00	mjn		Created
 *   03/22/2000	jtk		Changed interface names
 *   04/25/2000 rmt     Bug #s 33138, 33145, 33150 
  *  05/08/00   rmt     Bug #34301 - Add flag to SetAppAvail to allow for multiple connects
 *   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).
 *@@END_MSINTERNAL
 *
 ***************************************************************************/


#ifndef	__DPLAPP_H__
#define	__DPLAPP_H__

//**********************************************************************
// Constant definitions
//**********************************************************************

//**********************************************************************
// Macro definitions
//**********************************************************************

//**********************************************************************
// Structure definitions
//**********************************************************************

typedef struct _DIRECTPLAYLOBBYOBJECT DIRECTPLAYLOBBYOBJECT;

//**********************************************************************
// Variable definitions
//**********************************************************************

//**********************************************************************
// Constant definitions
//**********************************************************************

#define	DPL_LOBBYLAUNCHED_CONNECT_TIMEOUT	4000

//
// VTable for lobbied application interface
//
extern IDirectPlay8LobbiedApplicationVtbl DPL_8LobbiedApplicationVtbl;

//**********************************************************************
// Function prototypes
//**********************************************************************

STDMETHODIMP DPL_RegisterProgram(IDirectPlay8LobbiedApplication *pInterface,
							 PDPL_PROGRAM_DESC pdplProgramDesc,
							 const DWORD dwFlags);

STDMETHODIMP DPL_UnRegisterProgram(IDirectPlay8LobbiedApplication *pInterface,
							   GUID *pguidApplication,
							   const DWORD dwFlags);

STDMETHODIMP DPL_SetAppAvailable(IDirectPlay8LobbiedApplication *pInterface, const BOOL fAvailable, const DWORD dwFlags );

STDMETHODIMP DPL_WaitForConnection(IDirectPlay8LobbiedApplication *pInterface,
								   const DWORD dwMilliseconds, 
								   const DWORD dwFlags );

STDMETHODIMP DPL_UpdateStatus(IDirectPlay8LobbiedApplication *pInterface,
							  const DPNHANDLE hLobby,
							  const DWORD dwStatus,
							  const DWORD dwFlags );

HRESULT DPLAttemptLobbyConnection(DIRECTPLAYLOBBYOBJECT *const pdpLobbyObject);

#endif	// __DPLAPP_H__