xbox-kernel/private/inc/dpaddrp.h
2020-09-30 17:17:25 +02:00

351 lines
15 KiB
C

/*==========================================================================;
*
* Copyright (C) 2000 - 2001 Microsoft Corporation. All Rights Reserved.
*
* File: dpaddr.h
* Content: DirectPlayAddress include file
//@@BEGIN_MSINTERNAL
* History:
* Date By Reason
* ==========================
* 01/31/2000 rmt created
* 02/12/2000 rmt Split Get into GetByIndex and GetByName
* 02/14/2000 vpo Hid remaining references to Internal
* 02/17/2000 rmt Added dnet header def and removed error codes (see dplay8.h for error codes for them)
* 02/21/2000 rmt Cleared out redundant interfaces, added defines, added new macros
* 03/22/2000 rmt Updated to add SetEqual, BuildFromDPAddress and new ANSI data type
* 03/24/2000 rmt Added IsEqual function
* 05/04/2000 rmt Bug #34155 - Incorrect defines
* 06/09/00 rmt Updates to split CLSID and allow whistler compat and support external create funcs
* 08/03/2000 rmt Bug #41246 - Remove IP versions of Duplicate, SetEqual, IsEqual, BuildURL
* 08/07/2000 rmt Bug #41185 - Header Cleanup
//@@END_MSINTERNAL
***************************************************************************/
#ifndef __DIRECTPLAYADDRESS__
#define __DIRECTPLAYADDRESS__
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
//@@BEGIN_MSINTERNAL
#include <dplay8p.h>
//@@END_MSINTERNAL
#include <dplay8.h>
/****************************************************************************
*
* DirectPlay8Address Interface Pointer definitions
*
****************************************************************************/
typedef struct IDirectPlay8Address IDirectPlay8Address;
typedef IDirectPlay8Address *PDIRECTPLAY8ADDRESS, *LPDIRECTPLAY8ADDRESS;
/****************************************************************************
*
* DirectPlay8Address Forward Declarations For External Types
*
****************************************************************************/
typedef struct sockaddr SOCKADDR;
/****************************************************************************
*
* DirectPlay8Address Constants
*
****************************************************************************/
//
// Asynchronous operation flags
//
#define DPNA_DATATYPE_STRING 0x00000001
#define DPNA_DATATYPE_DWORD 0x00000002
#define DPNA_DATATYPE_GUID 0x00000003
#define DPNA_DATATYPE_BINARY 0x00000004
#define DPNA_DATATYPE_STRING_ANSI 0x00000005
#define DPNA_INDEX_INVALID 0xFFFFFFFF
/****************************************************************************
*
* DirectPlay8Address Address Elements
*
****************************************************************************/
#define DPNA_DPNSVR_PORT 6073
#define DPNA_SEPARATOR_KEYVALUE L'='
#define DPNA_SEPARATOR_USERDATA L'#'
#define DPNA_SEPARATOR_COMPONENT L';'
#define DPNA_ESCAPECHAR L'%'
// Header
#define DPNA_HEADER L"x-directplay:/"
// key names for address components
#define DPNA_KEY_APPLICATION_INSTANCE L"applicationinstance"
#define DPNA_KEY_BAUD L"baud"
#define DPNA_KEY_DEVICE L"device"
#define DPNA_KEY_FLOWCONTROL L"flowcontrol"
#define DPNA_KEY_HOSTNAME L"hostname"
#define DPNA_KEY_PARITY L"parity"
#define DPNA_KEY_PHONENUMBER L"phonenumber"
#define DPNA_KEY_PORT L"port"
#define DPNA_KEY_PROGRAM L"program"
#define DPNA_KEY_PROVIDER L"provider"
#define DPNA_KEY_STOPBITS L"stopbits"
//// ANSI DEFINITIONS
// Header
#define DPNA_HEADER_A "x-directplay:/"
#define DPNA_SEPARATOR_KEYVALUE_A '='
#define DPNA_SEPARATOR_USERDATA_A '#'
#define DPNA_SEPARATOR_COMPONENT_A ';'
#define DPNA_ESCAPECHAR_A '%'
// key names for address components
#define DPNA_KEY_APPLICATION_INSTANCE_A "applicationinstance"
#define DPNA_KEY_BAUD_A "baud"
#define DPNA_KEY_DEVICE_A "device"
#define DPNA_KEY_FLOWCONTROL_A "flowcontrol"
#define DPNA_KEY_HOSTNAME_A "hostname"
#define DPNA_KEY_PARITY_A "parity"
#define DPNA_KEY_PHONENUMBER_A "phonenumber"
#define DPNA_KEY_PORT_A "port"
#define DPNA_KEY_PROGRAM_A "program"
#define DPNA_KEY_PROVIDER_A "provider"
#define DPNA_KEY_STOPBITS_A "stopbits"
// Shortcut values
//
// These can be used instead of the corresponding CLSID_DP8SP_XXXX guids
//
#define DPNA_VALUE_TCPIPPROVIDER L"IP"
#define DPNA_VALUE_TCPIPPROVIDER_A "IP"
#define IID_IDirectPlay8Address 0
#define IID_IDirectPlay8AddressIP 1
/****************************************************************************
*
* DirectPlay8Address Functions
*
****************************************************************************/
extern HRESULT WINAPI DirectPlay8AddressCreate( DWORD dwIID, void ** ppvInterface, void **pUnknown);
/****************************************************************************
*
* DirectPlay8Address Application Interfaces
*
****************************************************************************/
// IUnknown methods
ULONG WINAPI IDirectPlay8Address_AddRef(LPDIRECTPLAY8ADDRESS pDirectPlay8Address);
ULONG WINAPI IDirectPlay8Address_Release(LPDIRECTPLAY8ADDRESS pDirectPlay8Address);
// IDirectPlay8Address methods
HRESULT WINAPI IDirectPlay8Address_BuildFromURLW(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, WCHAR *pwszSourceURL);
HRESULT WINAPI IDirectPlay8Address_BuildFromURLA(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, CHAR *pszSourceURL);
HRESULT WINAPI IDirectPlay8Address_Duplicate(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, PDIRECTPLAY8ADDRESS *ppdpaNewAddress);
HRESULT WINAPI IDirectPlay8Address_SetEqual(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, PDIRECTPLAY8ADDRESS pdpaAddress);
HRESULT WINAPI IDirectPlay8Address_IsEqual(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, PDIRECTPLAY8ADDRESS pdpaAddress);
HRESULT WINAPI IDirectPlay8Address_Clear(LPDIRECTPLAY8ADDRESS pDirectPlay8Address);
HRESULT WINAPI IDirectPlay8Address_GetURLW(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, WCHAR *pwszURL, PDWORD pdwNumChars);
HRESULT WINAPI IDirectPlay8Address_GetURLA(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, CHAR *pszURL, PDWORD pdwNumChars);
HRESULT WINAPI IDirectPlay8Address_GetSP(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, GUID *pguidSP);
HRESULT WINAPI IDirectPlay8Address_GetUserData(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, void *pvUserData, PDWORD pdwBufferSize);
HRESULT WINAPI IDirectPlay8Address_SetSP(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, const GUID *const pguidSP);
HRESULT WINAPI IDirectPlay8Address_SetUserData(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, const void * const pvUserData, const DWORD dwDataSize);
HRESULT WINAPI IDirectPlay8Address_GetNumComponents(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, PDWORD pdwNumComponents);
HRESULT WINAPI IDirectPlay8Address_GetComponentByName(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, const WCHAR * const pwszName, void *pvBuffer, PDWORD pdwBufferSize, PDWORD pdwDataType);
HRESULT WINAPI IDirectPlay8Address_GetComponentByIndex(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, const DWORD dwComponentID, WCHAR * pwszName, PDWORD pdwNameLen, void *pvBuffer, PDWORD pdwBufferSize, PDWORD pdwDataType);
HRESULT WINAPI IDirectPlay8Address_AddComponent(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, const WCHAR * const pwszName, const void * const lpvData, const DWORD dwDataSize, const DWORD dwDataType);
HRESULT WINAPI IDirectPlay8Address_GetDevice(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, GUID *pGUID);
HRESULT WINAPI IDirectPlay8Address_SetDevice(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, const GUID * const pGUID);
HRESULT WINAPI IDirectPlay8Address_BuildFromSockAddr(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, const SOCKADDR * const pSockAddr);
HRESULT WINAPI IDirectPlay8Address_BuildAddress(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, const WCHAR * const wszAddress, const USHORT usPort);
HRESULT WINAPI IDirectPlay8Address_BuildLocalAddress(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, const GUID * const pguidAdapter, const USHORT usPort);
HRESULT WINAPI IDirectPlay8Address_GetSockAddress(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, SOCKADDR *pSockAddr, PDWORD pDword);
HRESULT WINAPI IDirectPlay8Address_GetLocalAddress(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, GUID *pguidAdapter, USHORT *pusPort);
HRESULT WINAPI IDirectPlay8Address_GetAddress(LPDIRECTPLAY8ADDRESS pDirectPlay8Address, WCHAR *wszAddress, PDWORD pdwAddressLength, USHORT *psPort);
//@@BEGIN_MSINTERNAL
HRESULT WINAPI IDirectPlay8Address_Lock(LPDIRECTPLAY8ADDRESS pDirectPlay8Address);
HRESULT WINAPI IDirectPlay8Address_UnLock(LPDIRECTPLAY8ADDRESS pDirectPlay8Address);
//@@END_MSINTERNAL
#ifdef __cplusplus
// IDirectPlay8Address wrapper class
struct IDirectPlay8Address
{
__inline ULONG STDMETHODCALLTYPE AddRef(void)
{
return IDirectPlay8Address_AddRef(this);
}
__inline ULONG STDMETHODCALLTYPE Release(void)
{
return IDirectPlay8Address_Release(this);
}
__inline HRESULT STDMETHODCALLTYPE QueryInterface(DWORD riid, LPVOID *ppvObj)
{
if (ppvObj != NULL)
*ppvObj = this;
return S_OK;
}
__inline HRESULT STDMETHODCALLTYPE BuildFromURLW(WCHAR *pwszSourceURL)
{
return IDirectPlay8Address_BuildFromURLW(this, pwszSourceURL);
}
__inline HRESULT STDMETHODCALLTYPE BuildFromURLA(CHAR *pszSourceURL)
{
return IDirectPlay8Address_BuildFromURLA(this, pszSourceURL);
}
__inline HRESULT STDMETHODCALLTYPE Duplicate(PDIRECTPLAY8ADDRESS *ppdpaNewAddress)
{
return IDirectPlay8Address_Duplicate(this, ppdpaNewAddress);
}
__inline HRESULT STDMETHODCALLTYPE SetEqual(PDIRECTPLAY8ADDRESS pdpaAddress)
{
return IDirectPlay8Address_SetEqual(this, pdpaAddress);
}
__inline HRESULT STDMETHODCALLTYPE IsEqual(PDIRECTPLAY8ADDRESS pdpaAddress)
{
return IDirectPlay8Address_IsEqual(this, pdpaAddress);
}
__inline HRESULT STDMETHODCALLTYPE Clear(void)
{
return IDirectPlay8Address_Clear(this);
}
__inline HRESULT STDMETHODCALLTYPE GetURLW(WCHAR *pwszURL, PDWORD pdwNumChars)
{
return IDirectPlay8Address_GetURLW(this, pwszURL, pdwNumChars);
}
__inline HRESULT STDMETHODCALLTYPE GetURLA(CHAR *pszURL, PDWORD pdwNumChars)
{
return IDirectPlay8Address_GetURLA(this, pszURL, pdwNumChars);
}
__inline HRESULT STDMETHODCALLTYPE GetSP(GUID *pguidSP)
{
return IDirectPlay8Address_GetSP(this, pguidSP);
}
__inline HRESULT STDMETHODCALLTYPE GetUserData(void *pvUserData, PDWORD pdwBufferSize)
{
return IDirectPlay8Address_GetUserData(this, pvUserData, pdwBufferSize);
}
__inline HRESULT STDMETHODCALLTYPE SetSP(const GUID *const pguidSP)
{
return IDirectPlay8Address_SetSP(this, pguidSP);
}
__inline HRESULT STDMETHODCALLTYPE SetUserData(const void * const pvUserData, const DWORD dwDataSize)
{
return IDirectPlay8Address_SetUserData(this, pvUserData, dwDataSize);
}
__inline HRESULT STDMETHODCALLTYPE GetNumComponents(PDWORD pdwNumComponents)
{
return IDirectPlay8Address_GetNumComponents(this, pdwNumComponents);
}
__inline HRESULT STDMETHODCALLTYPE GetComponentByName(const WCHAR * const pwszName, void *pvBuffer, PDWORD pdwBufferSize, PDWORD pdwDataType)
{
return IDirectPlay8Address_GetComponentByName(this, pwszName, pvBuffer, pdwBufferSize, pdwDataType);
}
__inline HRESULT STDMETHODCALLTYPE GetComponentByIndex(const DWORD dwComponentID, WCHAR * pwszName, PDWORD pdwNameLen, void *pvBuffer, PDWORD pdwBufferSize, PDWORD pdwDataType)
{
return IDirectPlay8Address_GetComponentByIndex(this, dwComponentID, pwszName, pdwNameLen, pvBuffer, pdwBufferSize, pdwDataType);
}
__inline HRESULT STDMETHODCALLTYPE AddComponent(const WCHAR * const pwszName, const void * const lpvData, const DWORD dwDataSize, const DWORD dwDataType)
{
return IDirectPlay8Address_AddComponent(this, pwszName, lpvData, dwDataSize, dwDataType);
}
__inline HRESULT STDMETHODCALLTYPE GetDevice(GUID *pGUID)
{
return IDirectPlay8Address_GetDevice(this, pGUID);
}
__inline HRESULT STDMETHODCALLTYPE SetDevice(const GUID * const pGUID)
{
return IDirectPlay8Address_SetDevice(this, pGUID);
}
// Constructs a IDirectPlay8 TCP Address from a SOCKADDR structure
__inline HRESULT STDMETHODCALLTYPE BuildFromSockAddr(const SOCKADDR * const pSockAddr)
{
return IDirectPlay8Address_BuildFromSockAddr(this, pSockAddr);
}
// Constructs a TCP Address from a string (hostname) and port
__inline HRESULT STDMETHODCALLTYPE BuildAddress(const WCHAR * const wszAddress, const USHORT usPort)
{
return IDirectPlay8Address_BuildAddress(this, wszAddress, usPort);
}
// Builds a local TCP Address
__inline HRESULT STDMETHODCALLTYPE BuildLocalAddress(const GUID * const pguidAdapter, const USHORT usPort)
{
return IDirectPlay8Address_BuildLocalAddress(this, pguidAdapter, usPort);
}
// Gets the address from the structure in SOCKADR format
__inline HRESULT STDMETHODCALLTYPE GetSockAddress(SOCKADDR *pSockAddr, PDWORD pDword)
{
return IDirectPlay8Address_GetSockAddress(this, pSockAddr, pDword);
}
// Gets the local afddress
__inline HRESULT STDMETHODCALLTYPE GetLocalAddress(GUID *pguidAdapter, USHORT *pusPort)
{
return IDirectPlay8Address_GetLocalAddress(this, pguidAdapter, pusPort);
}
// Gets the remote address
__inline HRESULT STDMETHODCALLTYPE GetAddress(WCHAR *wszAddress, PDWORD pdwAddressLength, USHORT *psPort)
{
return IDirectPlay8Address_GetAddress(this, wszAddress, pdwAddressLength, psPort);
}
//@@BEGIN_MSINTERNAL
// Used by SP or DNet to mark this object read-only. Only GetXXX funcs will work
__inline HRESULT STDMETHODCALLTYPE Lock(void)
{
return IDirectPlay8Address_Lock(this);
}
// Used by SP or DNet to mark this object read-write. All funcs will work.
__inline HRESULT STDMETHODCALLTYPE UnLock(void)
{
return IDirectPlay8Address_UnLock(this);
}
//@@END_MSINTERNAL
};
#endif // __cplusplus
#ifdef __cplusplus
}
#endif // __cplusplus
#endif