diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/xbox | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'common/xbox')
| -rw-r--r-- | common/xbox/xbox_console.h | 118 | ||||
| -rw-r--r-- | common/xbox/xbox_core.h | 183 | ||||
| -rw-r--r-- | common/xbox/xbox_launch.h | 295 | ||||
| -rw-r--r-- | common/xbox/xbox_vxconsole.h | 91 | ||||
| -rw-r--r-- | common/xbox/xbox_win32stubs.h | 1593 | ||||
| -rw-r--r-- | common/xbox/xboxstubs.h | 237 |
6 files changed, 2517 insertions, 0 deletions
diff --git a/common/xbox/xbox_console.h b/common/xbox/xbox_console.h new file mode 100644 index 0000000..ca679fd --- /dev/null +++ b/common/xbox/xbox_console.h @@ -0,0 +1,118 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Xbox console +// +//=====================================================================================// + +#pragma once + +#include "tier0/platform.h" + +#ifndef STATIC_TIER0 + +#ifdef TIER0_DLL_EXPORT + #define XBXCONSOLE_INTERFACE DLL_EXPORT + #define XBXCONSOLE_OVERLOAD DLL_GLOBAL_EXPORT +#else + #define XBXCONSOLE_INTERFACE DLL_IMPORT + #define XBXCONSOLE_OVERLOAD DLL_GLOBAL_IMPORT +#endif + +#else // BUILD_AS_DLL + +#define XBXCONSOLE_INTERFACE extern +#define XBXCONSOLE_OVERLOAD + +#endif // BUILD_AS_DLL + +// all redirecting funneled here, stop redirecting in this module only +#undef OutputDebugString + +#define XBX_MAX_PROFILE_COUNTERS 64 + +#if !defined( _X360 ) +#define xMaterialList_t void +#define xTextureList_t void +#define xSoundList_t void +#define xMapInfo_t void +#endif + +class IXboxConsole +{ +public: + virtual void SendRemoteCommand( const char* dbgCommand, bool bAsync ) = 0; + virtual void DebugString( unsigned int color, const char* format, ... ) = 0; + virtual bool IsConsoleConnected() = 0; + virtual void InitConsoleMonitor( bool bWaitForConnect = false ) = 0; + virtual void DisconnectConsoleMonitor() = 0; + virtual void FlushDebugOutput() = 0; + virtual bool GetXboxName(char *, unsigned *) = 0; + virtual void CrashDump( bool ) = 0; + virtual void DumpDllInfo( const char *pBasePath ) = 0; + virtual void OutputDebugString( const char * ) = 0; + virtual bool IsDebuggerPresent() = 0; + + virtual int SetProfileAttributes( const char *pProfileName, int numCounters, const char *names[], unsigned int colors[] ) = 0; + virtual void SetProfileData( const char *pProfileName, int numCounters, unsigned int *counters ) = 0; + virtual int MemDump( const char *pDumpFileName ) = 0; + virtual int TimeStampLog( float time, const char *pString ) = 0; + virtual int MaterialList( int nMaterials, const xMaterialList_t* pXMaterialList ) = 0; + virtual int TextureList( int nTextures, const xTextureList_t* pXTextureList ) = 0; + virtual int SoundList( int nSounds, const xSoundList_t* pXSoundList ) = 0; + virtual int MapInfo( const xMapInfo_t *pXMapInfo ) = 0; + virtual int AddCommands( int numCommands, const char* commands[], const char* help[] ) = 0; +}; + +class CXboxConsole : public IXboxConsole +{ +public: + void SendRemoteCommand( const char* dbgCommand, bool bAsync ); + void DebugString( unsigned int color, const char* format, ... ); + bool IsConsoleConnected(); + void InitConsoleMonitor( bool bWaitForConnect = false ); + void DisconnectConsoleMonitor(); + void FlushDebugOutput(); + bool GetXboxName(char *, unsigned *); + void CrashDump( bool ); + int DumpModuleSize( const char *pName ); + void DumpDllInfo( const char *pBasePath ); + void OutputDebugString( const char * ); + bool IsDebuggerPresent(); + + int SetProfileAttributes( const char *pProfileName, int numCounters, const char *names[], unsigned int colors[] ); + void SetProfileData( const char *pProfileName, int numCounters, unsigned int *counters ); + int MemDump( const char *pDumpFileName ); + int TimeStampLog( float time, const char *pString ); + int MaterialList( int nMaterials, const xMaterialList_t* pXMaterialList ); + int TextureList( int nTextures, const xTextureList_t* pXTextureList ); + int SoundList( int nSounds, const xSoundList_t* pXSoundList ); + int MapInfo( const xMapInfo_t *pXMapInfo ); + int AddCommands( int numCommands, const char* commands[], const char* help[] ); +}; + +XBXCONSOLE_INTERFACE IXboxConsole *g_pXboxConsole; +XBXCONSOLE_INTERFACE void XboxConsoleInit(); + +#define XBX_SendRemoteCommand if ( !g_pXboxConsole ) ; else g_pXboxConsole->SendRemoteCommand +#define XBX_DebugString if ( !g_pXboxConsole ) ; else g_pXboxConsole->DebugString +#define XBX_IsConsoleConnected ( !g_pXboxConsole ) ? false : g_pXboxConsole->IsConsoleConnected +#define XBX_InitConsoleMonitor if ( !g_pXboxConsole ) ; else g_pXboxConsole->InitConsoleMonitor +#define XBX_DisconnectConsoleMonitor if ( !g_pXboxConsole ) ; else g_pXboxConsole->DisconnectConsoleMonitor +#define XBX_FlushDebugOutput if ( !g_pXboxConsole ) ; else g_pXboxConsole->FlushDebugOutput +#define XBX_GetXboxName ( !g_pXboxConsole ) ? false : g_pXboxConsole->GetXboxName +#define XBX_CrashDump if ( !g_pXboxConsole ) ; else g_pXboxConsole->CrashDump +#define XBX_DumpDllInfo if ( !g_pXboxConsole ) ; else g_pXboxConsole->DumpDllInfo +#define XBX_OutputDebugString if ( !g_pXboxConsole ) ; else g_pXboxConsole->OutputDebugString +#define XBX_IsDebuggerPresent ( !g_pXboxConsole ) ? false : g_pXboxConsole->IsDebuggerPresent + +#define XBX_rSetProfileAttributes ( !g_pXboxConsole ) ? 0 : g_pXboxConsole->SetProfileAttributes +#define XBX_rSetProfileData if ( !g_pXboxConsole ) ; else g_pXboxConsole->SetProfileData +#define XBX_rMemDump ( !g_pXboxConsole ) ? 0 : g_pXboxConsole->MemDump +#define XBX_rTimeStampLog ( !g_pXboxConsole ) ? 0 : g_pXboxConsole->TimeStampLog +#define XBX_rMaterialList ( !g_pXboxConsole ) ? 0 : g_pXboxConsole->MaterialList +#define XBX_rTextureList ( !g_pXboxConsole ) ? 0 : g_pXboxConsole->TextureList +#define XBX_rSoundList ( !g_pXboxConsole ) ? 0 : g_pXboxConsole->SoundList +#define XBX_rMapInfo ( !g_pXboxConsole ) ? 0 : g_pXboxConsole->MapInfo +#define XBX_rAddCommands ( !g_pXboxConsole ) ? 0 : g_pXboxConsole->AddCommands + + diff --git a/common/xbox/xbox_core.h b/common/xbox/xbox_core.h new file mode 100644 index 0000000..b109a19 --- /dev/null +++ b/common/xbox/xbox_core.h @@ -0,0 +1,183 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: XBox Core definitions +// +//============================================================================= +#pragma once + +#define XBOX_DONTCARE 0 // for functions with don't care params + +#define XBX_MAX_DPORTS 4 +#define XBX_MAX_BUTTONSAMPLE 32768 +#define XBX_MAX_ANALOGSAMPLE 255 +#define XBX_MAX_MESSAGE 2048 +#define XBX_MAX_PATH MAX_PATH +#define XBX_MAX_RCMDLENGTH 256 +#define XBX_MAX_RCMDNAMELEN 32 +#define XBX_HDD_CLUSTERSIZE 16384 + +// could be dvd or hdd, actual device depends on source of xex launch +#define XBX_DVD_DRIVE "D:\\" +#define XBX_BOOT_DRIVE "D:\\" + +#define XBX_IOTHREAD_STACKSIZE 32768 +#define XBX_IOTHREAD_PRIORITY THREAD_PRIORITY_HIGHEST + +// scale by screen dimension to get an inset +#define XBOX_MINBORDERSAFE 0.05f +#define XBOX_MAXBORDERSAFE 0.075f + +#define XBX_CALCSIG_TYPE XCALCSIG_FLAG_NON_ROAMABLE +#define XBX_INVALID_STORAGE_ID ((DWORD)-1) +#define XBX_STORAGE_DECLINED ((DWORD)-2) +#define XBX_INVALID_USER_ID ((DWORD)-1) + +#define XBX_USER_SETTINGS_CONTAINER_DRIVE "CFG" + +// Path to our running executable +#define XBX_XEX_BASE_FILENAME "default.xex" +#define XBX_XEX_PATH XBX_BOOT_DRIVE XBX_XEX_BASE_FILENAME + +#define XBX_CLR_DEFAULT 0xFF000000 +#define XBX_CLR_WARNING 0x0000FFFF +#define XBX_CLR_ERROR 0x000000FF + +// disk space requirements +#define XBX_SAVEGAME_BYTES ( 1024 * 1024 * 2 ) +#define XBX_CONFIGFILE_BYTES ( 1024 * 100 ) +#define XBX_USER_STATS_BYTES ( 1024 * 28 ) +#define XBX_USER_SETTINGS_BYTES ( XBX_CONFIGFILE_BYTES + XBX_USER_STATS_BYTES ) + +#define XBX_PERSISTENT_BYTES_NEEDED ( XBX_SAVEGAME_BYTES * 10 ) // 8 save games, 1 autosave, 1 autosavedangerous + +#define XMAKECOLOR( r, g, b ) ((unsigned int)(((unsigned char)(r)|((unsigned int)((unsigned char)(g))<<8))|(((unsigned int)(unsigned char)(b))<<16))) + +#define MAKE_NON_SRGB_FMT(x) ((D3DFORMAT)( ((unsigned int)(x)) & ~(D3DFORMAT_SIGNX_MASK | D3DFORMAT_SIGNY_MASK | D3DFORMAT_SIGNZ_MASK))) +#define IS_D3DFORMAT_SRGB( x ) ( MAKESRGBFMT(x) == (x) ) + +typedef enum +{ + XEV_NULL, + XEV_REMOTECMD, + XEV_QUIT, + XEV_LISTENER_NOTIFICATION, +} xevent_e; + +typedef struct xevent_s +{ + xevent_e event; + int arg1; + int arg2; + int arg3; +} xevent_t; + +typedef enum +{ + XK_NULL, + XK_BUTTON_UP, + XK_BUTTON_DOWN, + XK_BUTTON_LEFT, + XK_BUTTON_RIGHT, + XK_BUTTON_START, + XK_BUTTON_BACK, + XK_BUTTON_STICK1, + XK_BUTTON_STICK2, + XK_BUTTON_A, + XK_BUTTON_B, + XK_BUTTON_X, + XK_BUTTON_Y, + XK_BUTTON_LEFT_SHOULDER, + XK_BUTTON_RIGHT_SHOULDER, + XK_BUTTON_LTRIGGER, + XK_BUTTON_RTRIGGER, + XK_STICK1_UP, + XK_STICK1_DOWN, + XK_STICK1_LEFT, + XK_STICK1_RIGHT, + XK_STICK2_UP, + XK_STICK2_DOWN, + XK_STICK2_LEFT, + XK_STICK2_RIGHT, + XK_MAX_KEYS, +} xKey_t; + +typedef struct +{ + const char *pName; + const char *pGroupName; + const char *pFormatName; + int size; + int width; + int height; + int depth; + int numLevels; + int binds; + int refCount; + int sRGB; + int edram; + int procedural; + int fallback; + int final; + int failed; +} xTextureList_t; + +typedef struct +{ + const char *pName; + const char *pShaderName; + int refCount; +} xMaterialList_t; + +typedef struct +{ + char name[MAX_PATH]; + char formatName[32]; + int rate; + int bits; + int channels; + int looped; + int dataSize; + int numSamples; + int streamed; +} xSoundList_t; + +typedef struct +{ + float position[3]; + float angle[3]; + char mapPath[256]; + char savePath[256]; + int build; + int skill; +} xMapInfo_t; + +/****************************************************************************** + XBOX_SYSTEM.CPP +******************************************************************************/ +#if defined( PLATFORM_H ) + +// redirect debugging output through xbox debug channel +#define OutputDebugStringA XBX_OutputDebugStringA + +// Messages +PLATFORM_INTERFACE void XBX_Error( const char* format, ... ); +PLATFORM_INTERFACE void XBX_OutputDebugStringA( LPCSTR lpOutputString ); + +// Event handling +PLATFORM_INTERFACE bool XBX_NotifyCreateListener( ULONG64 categories ); +PLATFORM_INTERFACE void XBX_QueueEvent( xevent_e event, int arg1, int arg2, int arg3 ); +PLATFORM_INTERFACE void XBX_ProcessEvents( void ); + +// Accessors +PLATFORM_INTERFACE const char* XBX_GetLanguageString( void ); +PLATFORM_INTERFACE bool XBX_IsLocalized( void ); +PLATFORM_INTERFACE DWORD XBX_GetStorageDeviceId( void ); +PLATFORM_INTERFACE void XBX_SetStorageDeviceId( DWORD id ); +PLATFORM_INTERFACE DWORD XBX_GetPrimaryUserId( void ); +PLATFORM_INTERFACE void XBX_SetPrimaryUserId( DWORD id ); +PLATFORM_INTERFACE XNKID XBX_GetInviteSessionId( void ); +PLATFORM_INTERFACE void XBX_SetInviteSessionId( XNKID nSessionId ); +PLATFORM_INTERFACE DWORD XBX_GetInvitedUserId( void ); +PLATFORM_INTERFACE void XBX_SetInvitedUserId( DWORD nUserId ); + +#endif
\ No newline at end of file diff --git a/common/xbox/xbox_launch.h b/common/xbox/xbox_launch.h new file mode 100644 index 0000000..a0a9e66 --- /dev/null +++ b/common/xbox/xbox_launch.h @@ -0,0 +1,295 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Xbox Launch Routines. +// +//=====================================================================================// + +#ifndef _XBOX_LAUNCH_H_ +#define _XBOX_LAUNCH_H_ + +#pragma once + +#ifndef _CERT +#pragma comment( lib, "xbdm.lib" ) +#endif + +// id and version are used to tag the data blob, currently only need a singe hardcoded id +// when the version and id don't match, the data blob is not ours +#define VALVE_LAUNCH_ID (('V'<<24)|('A'<<16)|('L'<<8)|('V'<<0)) +#define VALVE_LAUNCH_VERSION 1 + +// launch flags +#define LF_ISDEBUGGING 0x80000000 // set if session was active prior to launch +#define LF_INTERNALLAUNCH 0x00000001 // set if launch was internal (as opposed to dashboard) +#define LF_EXITFROMINSTALLER 0x00000002 // set if exit was from an installer +#define LF_EXITFROMGAME 0x00000004 // set if exit was from a game +#define LF_EXITFROMCHOOSER 0x00000008 // set if exit was from the chooser +#define LF_GAMERESTART 0x00000010 // set if game wants to restart self (skips appchooser) +#define LF_INVITERESTART 0x00000020 // set if game was invited from another app (launches TF and fires off session connect) + +#pragma pack(1) +struct launchHeader_t +{ + unsigned int id; + unsigned int version; + unsigned int flags; + + int nStorageID; + int nUserID; + int bForceEnglish; + XNKID nInviteSessionID; + + // for caller defined data, occurs after this header + // limited to slightly less than MAX_LAUNCH_DATA_SIZE + unsigned int nDataSize; +}; +#pragma pack() + +// per docs, no larger than MAX_LAUNCH_DATA_SIZE +union xboxLaunchData_t +{ + launchHeader_t header; + char data[MAX_LAUNCH_DATA_SIZE]; +}; + +//-------------------------------------------------------------------------------------- +// Simple class to wrap the peristsent launch payload. +// +// Can be used by an application that does not use tier0 (i.e. the launcher). +// Primarily designed to be anchored in tier0, so multiple systems can easily query and +// set the persistent payload. +//-------------------------------------------------------------------------------------- +class CXboxLaunch +{ +public: + CXboxLaunch() + { + ResetLaunchData(); + } + + void ResetLaunchData() + { + // invalid until established + // nonzero identifies a valid payload + m_LaunchDataSize = 0; + + m_Launch.header.id = 0; + m_Launch.header.version = 0; + m_Launch.header.flags = 0; + + m_Launch.header.nStorageID = XBX_INVALID_STORAGE_ID; + m_Launch.header.nUserID = XBX_INVALID_USER_ID; + m_Launch.header.bForceEnglish = false; + + memset( &m_Launch.header.nInviteSessionID, 0, sizeof( m_Launch.header.nInviteSessionID ) ); + + m_Launch.header.nDataSize = 0; + } + + // Returns how much space can be used by caller + int MaxPayloadSize() + { + return sizeof( xboxLaunchData_t ) - sizeof( launchHeader_t ); + } + + bool SetLaunchData( void *pData, int dataSize, int flags = 0 ) + { + if ( pData && dataSize && dataSize > MaxPayloadSize() ) + { + // not enough room + return false; + } + + if ( pData && dataSize && dataSize <= MaxPayloadSize() ) + { + memcpy( m_Launch.data + sizeof( launchHeader_t ), pData, dataSize ); + m_Launch.header.nDataSize = dataSize; + } + else + { + m_Launch.header.nDataSize = 0; + } + + flags |= LF_INTERNALLAUNCH; +#if !defined( _CERT ) + if ( DmIsDebuggerPresent() ) + { + flags |= LF_ISDEBUGGING; + } +#endif + m_Launch.header.id = VALVE_LAUNCH_ID; + m_Launch.header.version = VALVE_LAUNCH_VERSION; + m_Launch.header.flags = flags; + + XSetLaunchData( &m_Launch, MAX_LAUNCH_DATA_SIZE ); + + // assume successful, mark as valid + m_LaunchDataSize = MAX_LAUNCH_DATA_SIZE; + + return true; + } + + //-------------------------------------------------------------------------------------- + // Returns TRUE if the launch data blob is available. FALSE otherwise. + // Caller is expected to validate and interpret contents based on ID. + //-------------------------------------------------------------------------------------- + bool GetLaunchData( unsigned int *pID, void **pData, int *pDataSize ) + { + if ( !m_LaunchDataSize ) + { + // purposely not doing this in the constructor (unstable as used by tier0), but on first fetch + bool bValid = false; + DWORD dwLaunchDataSize; + DWORD dwStatus = XGetLaunchDataSize( &dwLaunchDataSize ); + if ( dwStatus == ERROR_SUCCESS && dwLaunchDataSize <= MAX_LAUNCH_DATA_SIZE ) + { + dwStatus = XGetLaunchData( (void*)&m_Launch, dwLaunchDataSize ); + if ( dwStatus == ERROR_SUCCESS ) + { + bValid = true; + m_LaunchDataSize = dwLaunchDataSize; + } + } + + if ( !bValid ) + { + ResetLaunchData(); + } + } + + // a valid launch payload could be ours (re-launch) or from an alternate booter (demo launcher) + if ( m_LaunchDataSize == MAX_LAUNCH_DATA_SIZE && m_Launch.header.id == VALVE_LAUNCH_ID && m_Launch.header.version == VALVE_LAUNCH_VERSION ) + { + // internal recognized format + if ( pID ) + { + *pID = m_Launch.header.id; + } + if ( pData ) + { + *pData = m_Launch.data + sizeof( launchHeader_t ); + } + if ( pDataSize ) + { + *pDataSize = m_Launch.header.nDataSize; + } + } + else if ( m_LaunchDataSize ) + { + // not ours, unknown format, caller interprets + if ( pID ) + { + // assume payload was packaged with an initial ID + *pID = *(unsigned int *)m_Launch.data; + } + if ( pData ) + { + *pData = m_Launch.data; + } + if ( pDataSize ) + { + *pDataSize = m_LaunchDataSize; + } + } + + // valid when data is available (not necessarily valve's tag) + return m_LaunchDataSize != 0; + } + + //-------------------------------------------------------------------------------------- + // Returns TRUE if the launch data blob is available. FALSE otherwise. + // Data blob could be ours or not. + //-------------------------------------------------------------------------------------- + bool RestoreLaunchData() + { + return GetLaunchData( NULL, NULL, NULL ); + } + + //-------------------------------------------------------------------------------------- + // Restores the data blob. If the data blob is not ours, resets it. + //-------------------------------------------------------------------------------------- + void RestoreOrResetLaunchData() + { + RestoreLaunchData(); + if ( m_Launch.header.id != VALVE_LAUNCH_ID || m_Launch.header.version != VALVE_LAUNCH_VERSION ) + { + // not interested in somebody else's data + ResetLaunchData(); + } + } + + //-------------------------------------------------------------------------------------- + // Returns OUR internal launch flags. + //-------------------------------------------------------------------------------------- + int GetLaunchFlags() + { + // establish the data + RestoreOrResetLaunchData(); + return m_Launch.header.flags; + } + + int GetStorageID( void ) + { + RestoreOrResetLaunchData(); + return m_Launch.header.nStorageID; + } + void SetStorageID( int storageID ) + { + RestoreOrResetLaunchData(); + m_Launch.header.nStorageID = storageID; + } + + int GetUserID( void ) + { + RestoreOrResetLaunchData(); + return m_Launch.header.nUserID; + } + void SetUserID( int userID ) + { + RestoreOrResetLaunchData(); + m_Launch.header.nUserID = userID; + } + + bool GetForceEnglish( void ) + { + RestoreOrResetLaunchData(); + return m_Launch.header.bForceEnglish ? true : false; + } + void SetForceEnglish( bool bForceEnglish ) + { + RestoreOrResetLaunchData(); + m_Launch.header.bForceEnglish = bForceEnglish; + } + + void GetInviteSessionID( XNKID *pSessionID ) + { + RestoreOrResetLaunchData(); + *pSessionID = m_Launch.header.nInviteSessionID; + } + void SetInviteSessionID( XNKID *pSessionID ) + { + RestoreOrResetLaunchData(); + m_Launch.header.nInviteSessionID = *pSessionID; + } + + void Launch( const char *pNewImageName = NULL ) + { + if ( !pNewImageName ) + { + pNewImageName = "default.xex"; + } + + XLaunchNewImage( pNewImageName, 0 ); + } + +private: + xboxLaunchData_t m_Launch; + DWORD m_LaunchDataSize; +}; + +#if defined( PLATFORM_H ) +// For applications that use tier0.dll +PLATFORM_INTERFACE CXboxLaunch *XboxLaunch(); +#endif + +#endif diff --git a/common/xbox/xbox_vxconsole.h b/common/xbox/xbox_vxconsole.h new file mode 100644 index 0000000..293a2ac --- /dev/null +++ b/common/xbox/xbox_vxconsole.h @@ -0,0 +1,91 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: XBox VXConsole Common. Used for public remote access items. +// +//============================================================================= +#pragma once + +// sent during connection, used to explicitly guarantee a binary compatibility +#define VXCONSOLE_PROTOCOL_VERSION 103 + +typedef struct +{ + char labelString[128]; + COLORREF color; +} xrProfile_t; + +typedef struct +{ + char messageString[256]; + float time; + float deltaTime; + int memory; + int deltaMemory; +} xrTimeStamp_t; + +typedef struct +{ + char nameString[256]; + char shaderString[256]; + int refCount; +} xrMaterial_t; + +typedef struct +{ + char nameString[256]; + char groupString[64]; + char formatString[64]; + int size; + int width; + int height; + int depth; + int numLevels; + int binds; + int refCount; + int sRGB; + int edram; + int procedural; + int fallback; + int final; + int failed; +} xrTexture_t; + +typedef struct +{ + char nameString[256]; + char formatString[64]; + int rate; + int bits; + int channels; + int looped; + int dataSize; + int numSamples; + int streamed; +} xrSound_t; + +typedef struct +{ + char nameString[128]; + char helpString[256]; +} xrCommand_t; + +typedef struct +{ + float position[3]; + float angle[3]; + char mapPath[256]; + char savePath[256]; + int build; + int skill; +} xrMapInfo_t; + +// Types of action taken in response to an rc_Assert() message +enum AssertAction_t +{ + ASSERT_ACTION_BREAK = 0, // Break on this Assert + ASSERT_ACTION_IGNORE_THIS, // Ignore this Assert once + ASSERT_ACTION_IGNORE_ALWAYS, // Ignore this Assert from now on + ASSERT_ACTION_IGNORE_FILE, // Ignore all Asserts from this file from now on + ASSERT_ACTION_IGNORE_ALL, // Ignore all Asserts from now on + ASSERT_ACTION_OTHER // A more complex response requiring additional data (e.g. "ignore this Assert 5 times") +}; diff --git a/common/xbox/xbox_win32stubs.h b/common/xbox/xbox_win32stubs.h new file mode 100644 index 0000000..923f720 --- /dev/null +++ b/common/xbox/xbox_win32stubs.h @@ -0,0 +1,1593 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: XBox win32 replacements - Mocks trivial windows flow +// +//============================================================================= +#pragma once + +typedef unsigned long REGSAM; + +#define DSBCAPS_LOCSOFTWARE 0 + +#define DSERR_BUFFERLOST 0 + +#define DSBSTATUS_BUFFERLOST 0x02 + +#define DSSPEAKER_GEOMETRY(x) (((x)>>16) & 0xFFFF) +#define DSSPEAKER_CONFIG(x) ((x) & 0xFFFF) + +#define DSSPEAKER_HEADPHONE -1 +#define DSSPEAKER_QUAD -2 +#define DSSPEAKER_5POINT1 -3 +#define DSSPEAKER_7POINT1 -4 + +#define DISP_CHANGE_SUCCESSFUL 0 + +#define HKEY_CURRENT_USER NULL +#define HKEY_LOCAL_MACHINE NULL +#define KEY_QUERY_VALUE 0 + +#define KEY_READ 0 +#define KEY_WRITE 1 +#define KEY_ALL_ACCESS ((ULONG)-1) + +#define SMTO_ABORTIFHUNG 0 + +#define JOY_RETURNX 0x01 +#define JOY_RETURNY 0x02 +#define JOY_RETURNZ 0x04 +#define JOY_RETURNR 0x08 +#define JOY_RETURNU 0x10 +#define JOY_RETURNV 0x20 + +#define JOYCAPS_HASPOV 0x01 +#define JOYCAPS_HASU 0x01 +#define JOYCAPS_HASV 0x01 +#define JOYCAPS_HASR 0x01 +#define JOYCAPS_HASZ 0x01 + +#define MMSYSERR_NODRIVER 1 +#define JOYERR_NOERROR 0 +#define JOY_RETURNCENTERED 0 +#define JOY_RETURNBUTTONS 0 +#define JOY_RETURNPOV 0 +#define JOY_POVCENTERED 0 +#define JOY_POVFORWARD 0 +#define JOY_POVRIGHT 0 +#define JOY_POVBACKWARD 0 +#define JOY_POVLEFT 0 + +#define CCHDEVICENAME 32 +#define CCHFORMNAME 32 + +typedef WCHAR BCHAR; + +typedef UINT MMRESULT; + +#define IDLE_PRIORITY_CLASS 1 +#define HIGH_PRIORITY_CLASS 2 + +typedef struct _devicemode { + BCHAR dmDeviceName[CCHDEVICENAME]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + union u1 { + struct s { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + }; + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + }; + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + BYTE dmFormName[CCHFORMNAME]; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + union u2 { + DWORD dmDisplayFlags; + DWORD dmNup; + }; + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; +} DEVMODE, *LPDEVMODE; + +typedef DWORD MCIERROR; +typedef UINT MCIDEVICEID; + +typedef struct { + DWORD_PTR dwCallback; +} MCI_GENERIC_PARMS; + +typedef struct { + DWORD_PTR dwCallback; + DWORD dwReturn; + DWORD dwItem; + DWORD dwTrack; +} MCI_STATUS_PARMS; + +typedef struct { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; +} MCI_PLAY_PARMS; + +typedef struct { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; +} MCI_OPEN_PARMS; + +typedef struct { + DWORD_PTR dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; +} MCI_SET_PARMS; + +#define MCI_MAKE_TMSF(t, m, s, f) ((DWORD)(((BYTE)(t) | ((WORD)(m) << 8)) | ((DWORD)(BYTE)(s) | ((WORD)(f)<<8)) << 16)) +#define MCI_MSF_MINUTE(msf) ((BYTE)(msf)) +#define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8)) + +#define MCI_OPEN 0 +#define MCI_OPEN_TYPE 0 +#define MCI_OPEN_SHAREABLE 0 +#define MCI_FORMAT_TMSF 0 +#define MCI_SET_TIME_FORMAT 0 +#define MCI_CLOSE 0 +#define MCI_STOP 0 +#define MCI_PAUSE 0 +#define MCI_PLAY 0 +#define MCI_SET 0 +#define MCI_SET_DOOR_OPEN 0 +#define MCI_SET_DOOR_CLOSED 0 +#define MCI_STATUS_READY 0 +#define MCI_STATUS 0 +#define MCI_STATUS_ITEM 0 +#define MCI_STATUS_WAIT 0 +#define MCI_STATUS_NUMBER_OF_TRACKS 0 +#define MCI_CDA_STATUS_TYPE_TRACK 0 +#define MCI_TRACK 0 +#define MCI_WAIT 0 +#define MCI_CDA_TRACK_AUDIO 0 +#define MCI_STATUS_LENGTH 0 +#define MCI_NOTIFY 0 +#define MCI_FROM 0 +#define MCI_TO 0 +#define MCIERR_DRIVER -1 + +#define DSERR_ALLOCATED 0 + +typedef struct _STARTUPINFOW { + DWORD cb; + LPWSTR lpReserved; + LPWSTR lpDesktop; + LPWSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + LPBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} STARTUPINFOW, *LPSTARTUPINFOW; +typedef STARTUPINFOW STARTUPINFO; +typedef LPSTARTUPINFOW LPSTARTUPINFO; + +typedef struct _PROCESS_INFORMATION { + HANDLE hProcess; + HANDLE hThread; + DWORD dwProcessId; + DWORD dwThreadId; +} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION; + +typedef DWORD HWAVEOUT, *LPHWAVEOUT; + +typedef struct { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD_PTR dwUser; + DWORD dwFlags; + DWORD dwLoops; + struct wavehdr_tag * lpNext; + DWORD_PTR reserved; +} WAVEHDR, *LPWAVEHDR; + +typedef struct { + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwUnlockTransferRate; + DWORD dwPlayCpuOverhead; +} DSBCAPS, *LPDSBCAPS; + +typedef struct _DSCEFFECTDESC +{ + DWORD dwSize; + DWORD dwFlags; + GUID guidDSCFXClass; + GUID guidDSCFXInstance; + DWORD dwReserved1; + DWORD dwReserved2; +} DSCEFFECTDESC, *LPDSCEFFECTDESC; + +typedef struct _DSCBUFFERDESC +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; + LPWAVEFORMATEX lpwfxFormat; + DWORD dwFXCount; + LPDSCEFFECTDESC lpDSCFXDesc; +} DSCBUFFERDESC, *LPDSCBUFFERDESC; + + +#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) + +typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM); +typedef BOOL (CALLBACK* WNDENUMPROC)(HWND, LPARAM); + +typedef char* HPSTR; + +typedef struct tagPAINTSTRUCT { + HDC hdc; + BOOL fErase; + RECT rcPaint; + BOOL fRestore; + BOOL fIncUpdate; + BYTE rgbReserved[16]; +} PAINTSTRUCT, *LPPAINTSTRUCT; + +typedef struct tagMSG { + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; +} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG; + +typedef struct { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCTSTR lpszMenuName; + LPCTSTR lpszClassName; +} WNDCLASS, *PWNDCLASS; + +typedef struct { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; +} WNDCLASSW, *PWNDCLASSW; + +typedef struct { + UINT cbSize; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCTSTR lpszMenuName; + LPCTSTR lpszClassName; + HICON hIconSm; +} WNDCLASSEX, *PWNDCLASSEX; + +typedef struct tagTEXTMETRIC { + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + TCHAR tmFirstChar; + TCHAR tmLastChar; + TCHAR tmDefaultChar; + TCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; +} TEXTMETRIC, *PTEXTMETRIC; + +typedef struct _ABC { + int abcA; + UINT abcB; + int abcC; +} ABC, *PABC; + +typedef struct tagRGBQUAD { + BYTE rgbBlue; + BYTE rgbGreen; + BYTE rgbRed; + BYTE rgbReserved; +} RGBQUAD; + +typedef struct tagBITMAP + { + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + LPVOID bmBits; + } BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP; + +typedef struct tagBITMAPINFOHEADER{ + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER; + +typedef struct tagBITMAPINFO { + BITMAPINFOHEADER bmiHeader; + RGBQUAD bmiColors[1]; +} BITMAPINFO, *PBITMAPINFO, *LPBITMAPINFO; + +typedef struct tagBITMAPFILEHEADER { + WORD bfType; + DWORD bfSize; + WORD bfReserved1; + WORD bfReserved2; + DWORD bfOffBits; +} BITMAPFILEHEADER, *PBITMAPFILEHEADER; + +typedef struct tagRGBTRIPLE { + BYTE rgbtBlue; + BYTE rgbtGreen; + BYTE rgbtRed; +} RGBTRIPLE; + +typedef struct tagBITMAPCOREHEADER { + DWORD bcSize; + WORD bcWidth; + WORD bcHeight; + WORD bcPlanes; + WORD bcBitCount; +} BITMAPCOREHEADER, *PBITMAPCOREHEADER; + +typedef struct _BITMAPCOREINFO { + BITMAPCOREHEADER bmciHeader; + RGBTRIPLE bmciColors[1]; +} BITMAPCOREINFO, *PBITMAPCOREINFO, *LPBITMAPCOREINFO; + +typedef struct _OSVERSIONINFO +{ + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + TCHAR szCSDVersion[128]; +} OSVERSIONINFO, *LPOSVERSIONINFO; + +typedef struct _OSVERSIONINFOEX +{ + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + TCHAR szCSDVersion[128]; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} OSVERSIONINFOEX, *POSVERSIONINFOEX, *LPOSVERSIONINFOEX; + +typedef enum { + INTERNET_SCHEME_PARTIAL = -2, + INTERNET_SCHEME_UNKNOWN = -1, + INTERNET_SCHEME_DEFAULT = 0, + INTERNET_SCHEME_FTP, + INTERNET_SCHEME_GOPHER, + INTERNET_SCHEME_HTTP, + INTERNET_SCHEME_HTTPS, + INTERNET_SCHEME_FILE, + INTERNET_SCHEME_NEWS, + INTERNET_SCHEME_MAILTO, + INTERNET_SCHEME_SOCKS, + INTERNET_SCHEME_JAVASCRIPT, + INTERNET_SCHEME_VBSCRIPT, + INTERNET_SCHEME_ABOUT, + INTERNET_SCHEME_RES, + INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP, + INTERNET_SCHEME_LAST = INTERNET_SCHEME_VBSCRIPT +} INTERNET_SCHEME, * LPINTERNET_SCHEME; + +typedef struct { + DWORD dwStructSize; + LPTSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPTSTR lpszHostName; + DWORD dwHostNameLength; + UINT nPort; + LPTSTR lpszUserName; + DWORD dwUserNameLength; + LPTSTR lpszPassword; + DWORD dwPasswordLength; + LPTSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPTSTR lpszExtraInfo; + DWORD dwExtraInfoLength; +} URL_COMPONENTS, *LPURL_COMPONENTS; + +typedef struct _COORD +{ + SHORT X; + SHORT Y; +} COORD, *PCOORD; + +typedef struct _SMALL_RECT +{ + SHORT Left; + SHORT Top; + SHORT Right; + SHORT Bottom; +} SMALL_RECT; + +typedef struct _CONSOLE_SCREEN_BUFFER_INFO +{ + COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; +} CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO; + +typedef struct _WINDOW_BUFFER_SIZE_RECORD +{ + COORD dwSize; +} WINDOW_BUFFER_SIZE_RECORD, *PWINDOW_BUFFER_SIZE_RECORD; + +typedef struct _MENU_EVENT_RECORD +{ + UINT dwCommandId; +} MENU_EVENT_RECORD, *PMENU_EVENT_RECORD; + +typedef struct _FOCUS_EVENT_RECORD +{ + BOOL bSetFocus; +} FOCUS_EVENT_RECORD, *PFOCUS_EVENT_RECORD; + +typedef struct _KEY_EVENT_RECORD +{ + BOOL bKeyDown; + WORD wRepeatCount; + WORD wVirtualKeyCode; + WORD wVirtualScanCode; + union { + WCHAR UnicodeChar; + CHAR AsciiChar; + } uChar; + DWORD dwControlKeyState; +} KEY_EVENT_RECORD, *PKEY_EVENT_RECORD; + +typedef struct _MOUSE_EVENT_RECORD +{ + COORD dwMousePosition; + DWORD dwButtonState; + DWORD dwControlKeyState; + DWORD dwEventFlags; +} MOUSE_EVENT_RECORD, *PMOUSE_EVENT_RECORD; + +typedef struct _INPUT_RECORD +{ + WORD EventType; + union { + KEY_EVENT_RECORD KeyEvent; + MOUSE_EVENT_RECORD MouseEvent; + WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; + MENU_EVENT_RECORD MenuEvent; + FOCUS_EVENT_RECORD FocusEvent; + } Event; +} INPUT_RECORD, *PINPUT_RECORD; + +typedef GUID UUID; + +#define MAXPNAMELEN 32 +#define MAX_JOYSTICKOEMVXDNAME 260 + +typedef struct +{ + WORD wMid; + WORD wPid; + CHAR szPname[MAXPNAMELEN]; + UINT wXmin; + UINT wXmax; + UINT wYmin; + UINT wYmax; + UINT wZmin; + UINT wZmax; + UINT wNumButtons; + UINT wPeriodMin; + UINT wPeriodMax; + UINT wRmin; + UINT wRmax; + UINT wUmin; + UINT wUmax; + UINT wVmin; + UINT wVmax; + UINT wCaps; + UINT wMaxAxes; + UINT wNumAxes; + UINT wMaxButtons; + CHAR szRegKey[MAXPNAMELEN]; + CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME]; +} JOYCAPS, *LPJOYCAPS; + +typedef struct joyinfoex_tag +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwXpos; + DWORD dwYpos; + DWORD dwZpos; + DWORD dwRpos; + DWORD dwUpos; + DWORD dwVpos; + DWORD dwButtons; + DWORD dwButtonNumber; + DWORD dwPOV; + DWORD dwReserved1; + DWORD dwReserved2; +} JOYINFOEX, *LPJOYINFOEX; + +typedef struct _MEMORYSTATUSEX +{ + DWORD dwLength; + DWORD dwMemoryLoad; + DWORDLONG ullTotalPhys; + DWORDLONG ullAvailPhys; + DWORDLONG ullTotalPageFile; + DWORDLONG ullAvailPageFile; + DWORDLONG ullTotalVirtual; + DWORDLONG ullAvailVirtual; + DWORDLONG ullAvailExtendedVirtual; +} MEMORYSTATUSEX, *LPMEMORYSTATUSEX; + +typedef struct tagCOPYDATASTRUCT +{ + ULONG_PTR dwData; + DWORD cbData; + PVOID lpData; +} COPYDATASTRUCT, *PCOPYDATASTRUCT; + +typedef LPVOID HINTERNET; + +typedef VOID (CALLBACK * INTERNET_STATUS_CALLBACK)( + IN HINTERNET hInternet, + IN DWORD_PTR dwContext, + IN DWORD dwInternetStatus, + IN LPVOID lpvStatusInformation OPTIONAL, + IN DWORD dwStatusInformationLength + ); + +typedef struct +{ + DWORD dwStructSize; // size of this structure. Used in version check + LPSTR lpszScheme; // pointer to scheme name + DWORD dwSchemeLength; // length of scheme name + INTERNET_SCHEME nScheme; // enumerated scheme type (if known) + LPSTR lpszHostName; // pointer to host name + DWORD dwHostNameLength; // length of host name + UINT nPort; // converted port number + LPSTR lpszUserName; // pointer to user name + DWORD dwUserNameLength; // length of user name + LPSTR lpszPassword; // pointer to password + DWORD dwPasswordLength; // length of password + LPSTR lpszUrlPath; // pointer to URL-path + DWORD dwUrlPathLength; // length of URL-path + LPSTR lpszExtraInfo; // pointer to extra information (e.g. ?foo or #foo) + DWORD dwExtraInfoLength; // length of extra information +} URL_COMPONENTSA, * LPURL_COMPONENTSA; + +struct hostent +{ + char FAR * h_name; /* official name of host */ + char FAR * FAR * h_aliases; /* alias list */ + short h_addrtype; /* host address type */ + short h_length; /* length of address */ + char FAR * FAR * h_addr_list; /* list of addresses */ +#define h_addr h_addr_list[0] /* address, for backward compat */ +}; + +#define WHEEL_DELTA 120 + +#define ANSI_CHARSET 0 +#define SYMBOL_CHARSET 1 + +#define NONANTIALIASED_QUALITY 0 +#define ANTIALIASED_QUALITY 4 + +#define SPI_SETMOUSE 1 +#define SPI_GETMOUSE 2 + +#define SC_SCREENSAVE 0 +#define SC_CLOSE 1 +#define SC_KEYMENU 2 +#define SC_MONITORPOWER 3 + +#define SIZE_MINIMIZED 0 + +#define DM_PELSWIDTH 0 +#define DM_PELSHEIGHT 0 +#define DM_BITSPERPEL 0 +#define DM_DISPLAYFREQUENCY 0 + +#define CDS_FULLSCREEN 0 + +#define FILE_TYPE_UNKNOWN 0 +#define FILE_TYPE_DISK 1 + +#define HORZRES 1 +#define VERTRES 2 +#define VREFRESH 3 + +#define FILE_MAP_ALL_ACCESS 0 +#define FILE_MAP_COPY 1 +#define FILE_MAP_WRITE 2 +#define FILE_MAP_READ 3 + +#define PBT_APMQUERYSUSPEND 0 +#define BROADCAST_QUERY_DENY 0x424D5144 + +#define IDOK 0 +#define IDCANCEL 1 + +#define IMAGE_ICON 0 +#define MB_ICONEXCLAMATION 1 +#define MB_OKCANCEL 2 +#define MB_SYSTEMMODAL 3 +#define MB_ICONERROR 4 + +#define LR_DEFAULTCOLOR 0x0000 +#define LR_MONOCHROME 0x0001 +#define LR_COLOR 0x0002 +#define LR_COPYRETURNORG 0x0004 +#define LR_COPYDELETEORG 0x0008 +#define LR_LOADFROMFILE 0x0010 +#define LR_LOADTRANSPARENT 0x0020 +#define LR_DEFAULTSIZE 0x0040 +#define LR_VGACOLOR 0x0080 +#define LR_LOADMAP3DCOLORS 0x1000 +#define LR_CREATEDIBSECTION 0x2000 +#define LR_COPYFROMRESOURCE 0x4000 +#define LR_SHARED 0x8000 + +#define MAKEINTRESOURCE( res ) ((ULONG_PTR) (USHORT) res) +#define CREATE_NEW_CONSOLE 0x00000010 + +// registry +#define REG_OPTION_NON_VOLATILE 0ul +#define REG_CREATED_NEW_KEY 1 +#define HKEY_CLASSES_ROOT (HKEY)0 + +// winsock +#define MSG_NOSIGNAL 0 +#define MSG_PEEK 2 + +// show styles +#define SW_SHOWNORMAL 0 +#define SW_SHOWDEFAULT 1 +#define SW_SHOW 2 +#define SW_MINIMIZE 3 + +#define SWP_NOZORDER 0x00000001 +#define SWP_NOREDRAW 0x00000002 +#define SWP_NOSIZE 0x00000004 +#define SWP_NOMOVE 0x00000008 +#define SWP_SHOWWINDOW 0x00000010 +#define SWP_DRAWFRAME 0x00000020 + +// platform versions +#define VER_PLATFORM_WIN32s 0 +#define VER_PLATFORM_WIN32_WINDOWS 1 +#define VER_PLATFORM_WIN32_NT 2 + +// windows messages +#define WM_CHAR 1 +#define WM_CLOSE 2 +#define WM_DESTROY 3 +#define WM_MOUSEMOVE 4 +#define WM_LBUTTONUP 5 +#define WM_LBUTTONDOWN 6 +#define WM_RBUTTONUP 7 +#define WM_RBUTTONDOWN 8 +#define WM_SETFOCUS 9 +#define WM_SETCURSOR 10 +#define WM_MBUTTONDOWN 11 +#define WM_MBUTTONUP 12 +#define WM_LBUTTONDBLCLK 13 +#define WM_RBUTTONDBLCLK 14 +#define WM_MBUTTONDBLCLK 15 +#define WM_MOUSEWHEEL 16 +#define WM_KEYDOWN 17 +#define WM_SYSKEYDOWN 18 +#define WM_SYSCHAR 19 +#define WM_KEYUP 20 +#define WM_SYSKEYUP 21 +#define WM_PAINT 23 +#define WM_COPYDATA 24 +#define WM_MOVE 25 +#define WM_ACTIVATEAPP 26 +#define WM_QUIT 27 +#define WM_CREATE 28 +#define WM_SYSCOMMAND 29 +#define WM_SIZE 30 +#define WM_SETTINGCHANGE 31 +#define WM_USER 32 +#define WM_POWERBROADCAST 33 +#define WM_IME_CHAR 34 +#define WM_IME_NOTIFY 35 +#define WM_IME_STARTCOMPOSITION 36 +#define WM_IME_COMPOSITION 37 +#define WM_IME_ENDCOMPOSITION 38 +#define WM_IME_SETCONTEXT 39 +#define WM_INPUTLANGCHANGE 40 + +#define IMN_OPENCANDIDATE 0 +#define IMN_SETOPENSTATUS 1 +#define IMN_CHANGECANDIDATE 2 +#define IMN_CLOSECANDIDATE 3 +#define IMN_SETCONVERSIONMODE 4 +#define IMN_SETSENTENCEMODE 5 +#define IMN_CLOSESTATUSWINDOW 6 +#define IMN_GUIDELINE 7 +#define IMN_OPENSTATUSWINDOW 8 +#define IMN_SETCANDIDATEPOS 9 +#define IMN_SETCOMPOSITIONFONT 10 +#define IMN_SETCOMPOSITIONWINDOW 11 +#define IMN_SETSTATUSWINDOWPOS 12 + +#define ISC_SHOWUICOMPOSITIONWINDOW 0 +#define ISC_SHOWUIGUIDELINE 0 +#define ISC_SHOWUIALLCANDIDATEWINDOW 0 + +// message box +#define MB_OK 0 +#define MB_ICONINFORMATION 0 +#define MB_TOPMOST 0 +#define SEM_NOGPFAULTERRORBOX 2 + +// class styles +#define CS_OWNDC 0 +#define CS_DBLCLKS 0 +#define CS_CLASSDC 0 +#define CS_HREDRAW 0 +#define CS_VREDRAW 0 + +#define IDC_ARROW 0 + +#define STD_INPUT_HANDLE ((DWORD)-10) +#define STD_OUTPUT_HANDLE ((DWORD)-11) + +#define COLOR_GRAYTEXT 0 +#define WHITE_BRUSH 0 +#define SRCCOPY 0 + +/* Font Weights */ +#define FW_DONTCARE 0 +#define FW_THIN 100 +#define FW_EXTRALIGHT 200 +#define FW_LIGHT 300 +#define FW_NORMAL 400 +#define FW_MEDIUM 500 +#define FW_SEMIBOLD 600 +#define FW_BOLD 700 +#define FW_EXTRABOLD 800 +#define FW_HEAVY 900 + +#define CLIP_DEFAULT_PRECIS 0 +#define DEFAULT_PITCH 0 +#define TRANSPARENT 1 +#define OUT_TT_PRECIS 4 +#define BI_RGB 0L +#define IMAGE_BITMAP 0 + +#define DT_NOPREFIX 0x00000000 +#define DT_VCENTER 0x00000000 +#define DT_CENTER 0x00000000 +#define DT_LEFT 0x00000000 +#define DT_RIGHT 0x00000000 +#define DT_SINGLELINE 0x00000000 + +#define DIB_RGB_COLORS 0 + +// window styles +#define WS_OVERLAPPEDWINDOW 0 +#define WS_POPUP 0 +#define WS_CLIPSIBLINGS 0 +#define WS_THICKFRAME 0 +#define WS_MAXIMIZEBOX 0 +#define WS_VISIBLE 0 +#define WS_EX_TOOLWINDOW 0 +#define WS_EX_TOPMOST 0 +#define WS_CAPTION 0 +#define WS_SYSMENU 0 +#define WS_CLIPCHILDREN 0 + +// cursors +#define OCR_NORMAL 1 +#define OCR_IBEAM 2 +#define OCR_WAIT 3 +#define OCR_CROSS 4 +#define OCR_UP 5 +#define OCR_SIZENWSE 6 +#define OCR_SIZENESW 7 +#define OCR_SIZEWE 8 +#define OCR_SIZENS 9 +#define OCR_SIZEALL 10 +#define OCR_NO 11 +#define OCR_HAND 12 + +// system metrics +#define SM_CXFIXEDFRAME 1 +#define SM_CYFIXEDFRAME 2 +#define SM_CYSIZE 3 +#define SM_CXSCREEN 4 +#define SM_CYSCREEN 5 + +// window longs +#define GWLP_WNDPROC (-4) +#define GWLP_HINSTANCE (-6) +#define GWLP_HWNDPARENT (-8) +#define GWLP_USERDATA (-21) +#define GWLP_ID (-12) + +#define GWL_WNDPROC 0 +#define GWL_USERDATA 1 +#define GWL_STYLE 2 +#define GWL_EXSTYLE 3 +#define GWL_MAX 4 + +#define HWND_TOP ((HWND)0) +#define HWND_BOTTOM ((HWND)1) +#define HWND_TOPMOST ((HWND)-1) +#define HWND_NOTOPMOST ((HWND)-2) +#define HWND_BROADCAST 0 + +// PeekMessage +#define PM_NOREMOVE 0x0000 +#define PM_REMOVE 0x0001 +#define PM_NOYIELD 0x0002 + +#define MK_LBUTTON 0x0001 +#define MK_RBUTTON 0x0002 +#define MK_MBUTTON 0x0004 + +// File attributes +#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 + +#define QS_INPUT 0 +#define QS_ALLEVENTS 5 +#define KEY_EVENT 0 + +// sockets +#define SO_KEEPALIVE 8 + +// Download status cases +#define INTERNET_STATUS_RESOLVING_NAME 0 +#define INTERNET_STATUS_NAME_RESOLVED 1 +#define INTERNET_STATUS_CONNECTING_TO_SERVER 2 +#define INTERNET_STATUS_CONNECTED_TO_SERVER 3 +#define INTERNET_STATUS_SENDING_REQUEST 4 +#define INTERNET_STATUS_REQUEST_SENT 5 +#define INTERNET_STATUS_REQUEST_COMPLETE 6 +#define INTERNET_STATUS_CLOSING_CONNECTION 7 +#define INTERNET_STATUS_CONNECTION_CLOSED 8 +#define INTERNET_STATUS_RECEIVING_RESPONSE 9 +#define INTERNET_STATUS_RESPONSE_RECEIVED 10 +#define INTERNET_STATUS_HANDLE_CLOSING 11 +#define INTERNET_STATUS_HANDLE_CREATED 12 +#define INTERNET_STATUS_INTERMEDIATE_RESPONSE 13 +#define INTERNET_STATUS_REDIRECT 14 +#define INTERNET_STATUS_STATE_CHANGE 15 + +#define INTERNET_FLAG_RELOAD 0x80000000 // retrieve the original item +#define INTERNET_FLAG_RAW_DATA 0x40000000 // FTP/gopher find: receive the item as raw (structured) data +#define INTERNET_FLAG_EXISTING_CONNECT 0x20000000 // FTP: use existing InternetConnect handle for server if possible +#define INTERNET_FLAG_ASYNC 0x10000000 // this request is asynchronous (where supported) +#define INTERNET_FLAG_PASSIVE 0x08000000 // used for FTP connections +#define INTERNET_FLAG_NO_CACHE_WRITE 0x04000000 // don't write this item to the cache +#define INTERNET_FLAG_DONT_CACHE INTERNET_FLAG_NO_CACHE_WRITE +#define INTERNET_FLAG_MAKE_PERSISTENT 0x02000000 // make this item persistent in cache +#define INTERNET_FLAG_FROM_CACHE 0x01000000 // use offline semantics +#define INTERNET_FLAG_OFFLINE INTERNET_FLAG_FROM_CACHE +#define INTERNET_FLAG_SECURE 0x00800000 // use PCT/SSL if applicable (HTTP) +#define INTERNET_FLAG_KEEP_CONNECTION 0x00400000 // use keep-alive semantics +#define INTERNET_FLAG_NO_AUTO_REDIRECT 0x00200000 // don't handle redirections automatically +#define INTERNET_FLAG_READ_PREFETCH 0x00100000 // do background read prefetch +#define INTERNET_FLAG_NO_COOKIES 0x00080000 // no automatic cookie handling +#define INTERNET_FLAG_NO_AUTH 0x00040000 // no automatic authentication handling +#define INTERNET_FLAG_RESTRICTED_ZONE 0x00020000 // apply restricted zone policies for cookies, auth +#define INTERNET_FLAG_CACHE_IF_NET_FAIL 0x00010000 // return cache file if net request fails +#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP 0x00008000 // ex: https:// to http:// +#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS 0x00004000 // ex: http:// to https:// +#define INTERNET_FLAG_IGNORE_CERT_DATE_INVALID 0x00002000 // expired X509 Cert. +#define INTERNET_FLAG_IGNORE_CERT_CN_INVALID 0x00001000 // bad common name in X509 Cert. + +#define INTERNET_OPEN_TYPE_PRECONFIG 0 // use registry configuration +#define INTERNET_OPEN_TYPE_DIRECT 1 // direct to net +#define INTERNET_OPEN_TYPE_PROXY 3 // via named proxy +#define INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY 4 // prevent using java/script/INS + +#define HTTP_QUERY_CONTENT_LENGTH 5 +#define HTTP_QUERY_LAST_MODIFIED 11 +#define HTTP_QUERY_STATUS_CODE 19 // special: part of status line +#define HTTP_QUERY_RAW_HEADERS_CRLF 22 // special: all headers +#define HTTP_QUERY_FLAG_NUMBER 0x20000000 +#define HTTP_STATUS_OK 200 // request completed +#define HTTP_STATUS_PARTIAL_CONTENT 206 // partial GET furfilled + +// Virtual Keys, Standard Set +#define VK_LBUTTON 0x01 +#define VK_RBUTTON 0x02 +#define VK_CANCEL 0x03 +#define VK_MBUTTON 0x04 /* NOT contiguous with L & RBUTTON */ +#define VK_XBUTTON1 0x05 /* NOT contiguous with L & RBUTTON */ +#define VK_XBUTTON2 0x06 /* NOT contiguous with L & RBUTTON */ +#define VK_BACK 0x08 +#define VK_TAB 0x09 +#define VK_CLEAR 0x0C +#define VK_RETURN 0x0D +#define VK_SHIFT 0x10 +#define VK_CONTROL 0x11 +#define VK_MENU 0x12 +#define VK_PAUSE 0x13 +#define VK_CAPITAL 0x14 +#define VK_KANA 0x15 +#define VK_HANGEUL 0x15 /* old name - should be here for compatibility */ +#define VK_HANGUL 0x15 +#define VK_JUNJA 0x17 +#define VK_FINAL 0x18 +#define VK_HANJA 0x19 +#define VK_KANJI 0x19 +#define VK_ESCAPE 0x1B +#define VK_CONVERT 0x1C +#define VK_NONCONVERT 0x1D +#define VK_ACCEPT 0x1E +#define VK_MODECHANGE 0x1F +#define VK_SPACE 0x20 +#define VK_PRIOR 0x21 +#define VK_NEXT 0x22 +#define VK_END 0x23 +#define VK_HOME 0x24 +#define VK_LEFT 0x25 +#define VK_UP 0x26 +#define VK_RIGHT 0x27 +#define VK_DOWN 0x28 +#define VK_SELECT 0x29 +#define VK_PRINT 0x2A +#define VK_EXECUTE 0x2B +#define VK_SNAPSHOT 0x2C +#define VK_INSERT 0x2D +#define VK_DELETE 0x2E +#define VK_HELP 0x2F +#define VK_LWIN 0x5B +#define VK_RWIN 0x5C +#define VK_APPS 0x5D +#define VK_SLEEP 0x5F +#define VK_NUMPAD0 0x60 +#define VK_NUMPAD1 0x61 +#define VK_NUMPAD2 0x62 +#define VK_NUMPAD3 0x63 +#define VK_NUMPAD4 0x64 +#define VK_NUMPAD5 0x65 +#define VK_NUMPAD6 0x66 +#define VK_NUMPAD7 0x67 +#define VK_NUMPAD8 0x68 +#define VK_NUMPAD9 0x69 +#define VK_MULTIPLY 0x6A +#define VK_ADD 0x6B +#define VK_SEPARATOR 0x6C +#define VK_SUBTRACT 0x6D +#define VK_DECIMAL 0x6E +#define VK_DIVIDE 0x6F +#define VK_F1 0x70 +#define VK_F2 0x71 +#define VK_F3 0x72 +#define VK_F4 0x73 +#define VK_F5 0x74 +#define VK_F6 0x75 +#define VK_F7 0x76 +#define VK_F8 0x77 +#define VK_F9 0x78 +#define VK_F10 0x79 +#define VK_F11 0x7A +#define VK_F12 0x7B +#define VK_F13 0x7C +#define VK_F14 0x7D +#define VK_F15 0x7E +#define VK_F16 0x7F +#define VK_F17 0x80 +#define VK_F18 0x81 +#define VK_F19 0x82 +#define VK_F20 0x83 +#define VK_F21 0x84 +#define VK_F22 0x85 +#define VK_F23 0x86 +#define VK_F24 0x87 +#define VK_NUMLOCK 0x90 +#define VK_SCROLL 0x91 +#define VK_OEM_NEC_EQUAL 0x92 // '=' key on numpad +#define VK_OEM_FJ_JISHO 0x92 // 'Dictionary' key +#define VK_OEM_FJ_MASSHOU 0x93 // 'Unregister word' key +#define VK_OEM_FJ_TOUROKU 0x94 // 'Register word' key +#define VK_OEM_FJ_LOYA 0x95 // 'Left OYAYUBI' key +#define VK_OEM_FJ_ROYA 0x96 // 'Right OYAYUBI' key +#define VK_LSHIFT 0xA0 +#define VK_RSHIFT 0xA1 +#define VK_LCONTROL 0xA2 +#define VK_RCONTROL 0xA3 +#define VK_LMENU 0xA4 +#define VK_RMENU 0xA5 +#define VK_BROWSER_BACK 0xA6 +#define VK_BROWSER_FORWARD 0xA7 +#define VK_BROWSER_REFRESH 0xA8 +#define VK_BROWSER_STOP 0xA9 +#define VK_BROWSER_SEARCH 0xAA +#define VK_BROWSER_FAVORITES 0xAB +#define VK_BROWSER_HOME 0xAC +#define VK_VOLUME_MUTE 0xAD +#define VK_VOLUME_DOWN 0xAE +#define VK_VOLUME_UP 0xAF +#define VK_MEDIA_NEXT_TRACK 0xB0 +#define VK_MEDIA_PREV_TRACK 0xB1 +#define VK_MEDIA_STOP 0xB2 +#define VK_MEDIA_PLAY_PAUSE 0xB3 +#define VK_LAUNCH_MAIL 0xB4 +#define VK_LAUNCH_MEDIA_SELECT 0xB5 +#define VK_LAUNCH_APP1 0xB6 +#define VK_LAUNCH_APP2 0xB7 +#define VK_OEM_1 0xBA // ';:' for US +#define VK_OEM_PLUS 0xBB // '+' any country +#define VK_OEM_COMMA 0xBC // ',' any country +#define VK_OEM_MINUS 0xBD // '-' any country +#define VK_OEM_PERIOD 0xBE // '.' any country +#define VK_OEM_2 0xBF // '/?' for US +#define VK_OEM_3 0xC0 // '`~' for US +#define VK_OEM_4 0xDB // '[{' for US +#define VK_OEM_5 0xDC // '\|' for US +#define VK_OEM_6 0xDD // ']}' for US +#define VK_OEM_7 0xDE // ''"' for US +#define VK_OEM_8 0xDF +#define VK_OEM_AX 0xE1 // 'AX' key on Japanese AX kbd +#define VK_OEM_102 0xE2 // "<>" or "\|" on RT 102-key kbd. +#define VK_ICO_HELP 0xE3 // Help key on ICO +#define VK_ICO_00 0xE4 // 00 key on ICO +#define VK_PROCESSKEY 0xE5 +#define VK_ICO_CLEAR 0xE6 +#define VK_PACKET 0xE7 +#define VK_OEM_RESET 0xE9 +#define VK_OEM_JUMP 0xEA +#define VK_OEM_PA1 0xEB +#define VK_OEM_PA2 0xEC +#define VK_OEM_PA3 0xED +#define VK_OEM_WSCTRL 0xEE +#define VK_OEM_CUSEL 0xEF +#define VK_OEM_ATTN 0xF0 +#define VK_OEM_FINISH 0xF1 +#define VK_OEM_COPY 0xF2 +#define VK_OEM_AUTO 0xF3 +#define VK_OEM_ENLW 0xF4 +#define VK_OEM_BACKTAB 0xF5 +#define VK_ATTN 0xF6 +#define VK_CRSEL 0xF7 +#define VK_EXSEL 0xF8 +#define VK_EREOF 0xF9 +#define VK_PLAY 0xFA +#define VK_ZOOM 0xFB +#define VK_NONAME 0xFC +#define VK_PA1 0xFD +#define VK_OEM_CLEAR 0xFE + +// Error codes used in the Secure CRT functions +#define EINVAL 22 + + +#ifdef getenv + #undef getenv +#endif +#ifdef _getenv + #undef _getenv +#endif +#define getenv XBX_getenv +#define _getenv XBX_getenv +FORCEINLINE char *XBX_getenv(const char *name) { return NULL; } + +#ifdef _putenv + #undef _putenv +#endif +#define _putenv XBX_putenv +FORCEINLINE int XBX_putenv(const char *name) { return -1; } + +#ifdef GetEnvironmentVariable + #undef GetEnvironmentVariable +#endif +#define GetEnvironmentVariable XBX_GetEnvironmentVariable +FORCEINLINE DWORD XBX_GetEnvironmentVariable( LPCTSTR lpName, LPTSTR lpBuffer, DWORD nSize ) { return 0; } + +#ifdef unlink + #undef unlink +#endif +#define unlink XBX_unlink +PLATFORM_INTERFACE int XBX_unlink( const char* filename ); + +#ifdef mkdir + #undef mkdir +#endif +#ifdef _mkdir + #undef _mkdir +#endif +#define mkdir XBX_mkdir +#define _mkdir XBX_mkdir +PLATFORM_INTERFACE int XBX_mkdir( const char *pszDir ); + +#ifdef getcwd + #undef getcwd +#endif +#ifdef _getcwd + #undef _getcwd +#endif +#define getcwd XBX_getcwd +#define _getcwd XBX_getcwd +PLATFORM_INTERFACE char *XBX_getcwd( char *buf, size_t size ); + +#ifdef GetCurrentDirectory + #undef GetCurrentDirectory +#endif +#define GetCurrentDirectory XBX_GetCurrentDirectory +PLATFORM_INTERFACE DWORD XBX_GetCurrentDirectory( DWORD nBufferLength, LPTSTR lpBuffer ); + +#ifdef _access + #undef _access +#endif +#define _access XBX_access +PLATFORM_INTERFACE int XBX_access( const char *path, int mode ); + +#ifdef _chdir + #undef _chdir +#endif +#define _chdir XBX_chdir +FORCEINLINE int XBX_chdir( const char *dirname ) { return -1; } + +FORCEINLINE BOOL SetPriorityClass( HANDLE hProcess, DWORD dwPriorityClass ) { return FALSE; } + +PLATFORM_INTERFACE int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType ); + +#ifdef GetModuleFileName + #undef GetModuleFileName +#endif +#define GetModuleFileName XBX_GetModuleFileName +PLATFORM_INTERFACE DWORD XBX_GetModuleFileName( HMODULE hModule, LPTSTR lpFilename, DWORD nSize ); + +//FORCEINLINE int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ) { return WSASYSNOTREADY; } +//FORCEINLINE int WSACleanup(void) { return WSANOTINITIALISED; } + +FORCEINLINE HRESULT CoInitialize( LPVOID pvReserved ) { return S_OK; } +FORCEINLINE void CoUninitialize( void ) { } + +FORCEINLINE LRESULT DefWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { return 0L; } +FORCEINLINE void PostQuitMessage(int nExitCode) { } + +FORCEINLINE HANDLE GetStdHandle( DWORD ) { return 0; } + +FORCEINLINE BOOL GetConsoleScreenBufferInfo( HANDLE, PCONSOLE_SCREEN_BUFFER_INFO ) { return false; } + +FORCEINLINE COORD GetLargestConsoleWindowSize( HANDLE ) { COORD c = { 0, 0 }; return c; } + +FORCEINLINE BOOL SetConsoleWindowInfo( HANDLE, BOOL, SMALL_RECT* ) { return false; } + +FORCEINLINE BOOL SetConsoleScreenBufferSize( HANDLE, COORD ) { return false; } + +FORCEINLINE BOOL ReadConsoleOutputCharacter( HANDLE, LPTSTR, DWORD, COORD, LPDWORD ) { return false; } + +FORCEINLINE BOOL WriteConsoleInput( HANDLE, CONST INPUT_RECORD*, DWORD, LPDWORD ) { return false; } + +FORCEINLINE HWND GetDesktopWindow(VOID) { return (HWND)0; } + +FORCEINLINE int GetWindowText( HWND, LPTSTR, int ) { return 0; } + +FORCEINLINE UINT RegisterWindowMessage(LPCTSTR lpString) { return 0xC000; } + +FORCEINLINE HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName) { return NULL; } + +FORCEINLINE BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam) { return FALSE; } + +FORCEINLINE BOOL PostMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { return FALSE; } + +FORCEINLINE BOOL SystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni) { return FALSE; } + +FORCEINLINE BOOL SetForegroundWindow(HWND hWnd) { return TRUE; } + +FORCEINLINE HDC BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint) { return NULL; } + +FORCEINLINE BOOL EndPaint(HWND hWnd, CONST PAINTSTRUCT *lpPaint) { return TRUE; } + +FORCEINLINE BOOL AdjustWindowRectEx(LPRECT lpRect, DWORD dwStyle, BOOL bMenu, DWORD dwExStyle) { return TRUE; } + +FORCEINLINE LONG ChangeDisplaySettings(LPDEVMODE lpDevMode, DWORD dwflags) { return DISP_CHANGE_SUCCESSFUL; } + +FORCEINLINE DWORD GetFileType(HANDLE hFile) { return FILE_TYPE_DISK; } + +FORCEINLINE BOOL FileTimeToDosDateTime(const FILETIME* lpFileTime, LPWORD lpFatDate, LPWORD lpFatTime) +{ + *lpFatDate = 0; + *lpFatTime = 0; + return TRUE; +} + +FORCEINLINE BOOL DosDateTimeToFileTime(const WORD wFatDate, const WORD wFatTime, LPFILETIME lpFileTime ) +{ + lpFileTime->dwHighDateTime = 0; + lpFileTime->dwLowDateTime = 0; + return TRUE; +} + +FORCEINLINE BOOL SetViewportOrgEx( HDC, int, int, LPPOINT ) { return false; } + +FORCEINLINE BOOL MoveWindow( HWND, int, int, int, int, BOOL ) { return false; } + +FORCEINLINE int ShowCursor( BOOL ) { return 0; } + +FORCEINLINE HFONT CreateFontA( int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCSTR) { return 0; } + +FORCEINLINE int DrawText( HDC, LPCTSTR, int, LPRECT, UINT ) { return 0; } + +FORCEINLINE int SetBkMode( HDC, int ) { return 0; } + +FORCEINLINE COLORREF SetTextColor( HDC, COLORREF col ) { return col; } + +FORCEINLINE HBRUSH CreateSolidBrush( COLORREF ) { return 0; } + +FORCEINLINE BOOL Rectangle( HDC, int, int, int, int ) { return false; } + +FORCEINLINE HANDLE LoadImage( HINSTANCE, LPCSTR, UINT, int, int, UINT) { return 0; } +FORCEINLINE HANDLE LoadImageA( HINSTANCE, LPCSTR, UINT, int, int, UINT) { return 0; } + +FORCEINLINE HICON LoadIcon( HINSTANCE hInstance, ULONG_PTR lpIconName) { return 0; } + +FORCEINLINE COLORREF SetPixel( HDC, int, int, COLORREF col ) { return col; } + +FORCEINLINE BOOL BitBlt( HDC, int, int, int, int, HDC, int, int, DWORD ) { return false; } + +FORCEINLINE HGDIOBJ GetStockObject( int ) { return 0; } + +FORCEINLINE int GetObject( HGDIOBJ, int, LPVOID ) { return 0; } + +FORCEINLINE int GetDIBits( HDC, HBITMAP, UINT, UINT, LPVOID, LPBITMAPINFO, UINT ) { return 0; } + +FORCEINLINE HDC GetDC(HWND hWnd) { return (HDC)0x12345678; } + +FORCEINLINE void ReleaseDC(HWND hWnd, HDC hDC) { } + +FORCEINLINE HDC CreateCompatibleDC( HDC ) { return 0; } + +FORCEINLINE HBITMAP CreateCompatibleBitmap( HDC, int, int ) { return 0; } + +FORCEINLINE HBITMAP CreateDIBSection( HDC, CONST BITMAPINFO *, UINT, VOID **ppBits, HANDLE, DWORD) { ppBits = NULL; return 0; } + +FORCEINLINE BOOL InvalidateRect( HWND, const RECT*, bool ) { return false; } + +FORCEINLINE UINT joyGetDevCaps( UINT uJoyID, JOYCAPS* pjc, UINT cbjc) { return 0; } + +FORCEINLINE UINT joyGetPosEx( UINT uJoyID, LPJOYINFOEX pji) { return 0; } + +FORCEINLINE UINT joyGetNumDevs(void) { return 0; } + +FORCEINLINE HKL GetKeyboardLayout( DWORD ) { return NULL; } + +FORCEINLINE HKL LoadKeyboardLayout( LPCTSTR, UINT ) { return NULL; } + +FORCEINLINE UINT MapVirtualKeyEx( UINT, UINT, HKL ) { return 0; } + +FORCEINLINE SHORT GetKeyState( int nVirtKey ) { return 0; } + +FORCEINLINE BOOL PeekMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg) { return FALSE; } + +FORCEINLINE BOOL TranslateMessage(CONST MSG *lpMsg) { return FALSE; } + +FORCEINLINE BOOL DispatchMessage(CONST MSG *lpMsg) { return FALSE; } + +FORCEINLINE BOOL UpdateWindow(HWND hWnd) { return FALSE; } + +FORCEINLINE LONG RegOpenKeyEx( HKEY hKey, LPCTSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult ) { return -1; } + +FORCEINLINE LONG RegQueryValueEx( HKEY hKey, LPCTSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ) { return -1; } + +FORCEINLINE LONG RegCreateKeyEx( HKEY hKey, LPCTSTR lpSubKey, DWORD Reserved, LPTSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition ) { return -1; } + +FORCEINLINE LONG RegSetValueEx( HKEY hKey, LPCTSTR lpValueName, DWORD Reserved, DWORD dwType, const BYTE* lpData, DWORD cbData ) { return -1; } + +FORCEINLINE LONG RegDeleteValue( HKEY hKey, LPCTSTR lpValueName ) { return -1; } + +FORCEINLINE LONG RegCloseKey( HKEY hKey ) { return -1; } + +FORCEINLINE BOOL ClientToScreen( HWND hwnd, LPPOINT lpPoint ) +{ + lpPoint->x = 0; + lpPoint->y = 0; + return TRUE; +} + +FORCEINLINE BOOL SetCursorPos( int x, int y ) { return FALSE; } + +FORCEINLINE BOOL UnregisterClass( LPCTSTR lpClassNAme, HINSTANCE hInstance ) { return TRUE; } +FORCEINLINE BOOL UnregisterClassW( LPCWSTR lpClassNAme, HINSTANCE hInstance ) { return TRUE; } + +FORCEINLINE HCURSOR LoadCursor( HINSTANCE, LPCTSTR lpCursorName ) { return NULL; } + +FORCEINLINE HWND GetParent( HWND hWnd ) { return NULL; } + +FORCEINLINE BOOL EnumChildWindows( HWND hWndParent, WNDENUMPROC lpEnumFunc, LPARAM lParam ) { return FALSE; } + +FORCEINLINE BOOL IsIconic( HWND hWnd ) { return FALSE; } + +FORCEINLINE BOOL DestroyCursor( HCURSOR hCursor ) { return TRUE; } + +FORCEINLINE HCURSOR LoadCursorFromFile( LPCTSTR lpFileName ) { return NULL; } + +FORCEINLINE HCURSOR SetCursor( HCURSOR hCursor ) { return NULL; } + +FORCEINLINE BOOL GetCursorPos( LPPOINT lpPoint ) { return TRUE; } + +FORCEINLINE BOOL ScreenToClient( HWND hWnd, LPPOINT lpPoint ) { return TRUE; } + +FORCEINLINE HWND SetCapture( HWND hWnd ) { return NULL; } + +FORCEINLINE BOOL ReleaseCapture() { return TRUE; } + +FORCEINLINE BOOL DeleteObject( HGDIOBJ hObject ) { return TRUE; } + +FORCEINLINE BOOL DeleteDC( HDC hdc ) { return TRUE; } + +FORCEINLINE HGDIOBJ SelectObject( HDC hdc, HGDIOBJ hgdiobj ) { return NULL; } + +FORCEINLINE BOOL GetComputerName( LPTSTR lpBuffer, LPDWORD nSize ) { return FALSE; } + +FORCEINLINE BOOL GetUserName( LPTSTR lpBuffer, LPDWORD nSize ) { return FALSE; } + +FORCEINLINE UINT SetErrorMode( UINT mode ) { return 0; } + +FORCEINLINE MCIERROR mciGetDeviceID( LPCTSTR ) { return 0; } + +FORCEINLINE MCIERROR mciSendString( LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback ) { return 0; } + +FORCEINLINE MCIERROR mciSendCommand( MCIDEVICEID, UINT, DWORD, DWORD ) { return (UINT)MCIERR_DRIVER; } + +FORCEINLINE BOOL mciGetErrorString( MCIERROR, LPTSTR, UINT ) { return false; }; + +FORCEINLINE int UuidCreate( UUID *newId ) { return 0; }; + +FORCEINLINE HANDLE CreateFileMapping( HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCTSTR ) { return NULL; } + +FORCEINLINE LPVOID MapViewOfFile( HANDLE, DWORD, DWORD, DWORD, SIZE_T ) { return NULL; } + +FORCEINLINE BOOL UnmapViewOfFile( LPCVOID ) { return false; } + +FORCEINLINE BOOL GetVersionEx( LPOSVERSIONINFO lpVersionInfo ) { lpVersionInfo->dwPlatformId = VER_PLATFORM_WIN32_NT; return true; } + +FORCEINLINE BOOL GlobalMemoryStatusEx( LPMEMORYSTATUSEX lpBuffer ) { return false; } + +FORCEINLINE BOOL TerminateThread( HANDLE hThread, DWORD dwExitCode ) { return false; } + +FORCEINLINE BOOL HttpQueryInfo( HINTERNET hRequest, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex ) { return false; } + +FORCEINLINE struct hostent FAR * _stdcall FAR gethostbyname( const char FAR * name ) { return NULL; } + +FORCEINLINE BOOL InternetReadFile(HINTERNET hFile, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, LPDWORD lpdwNumberOfBytesRead ) { return false; } + +FORCEINLINE BOOL InternetCloseHandle( HINTERNET hInternet ) { return false; } + +FORCEINLINE BOOL InternetCrackUrl( LPCSTR lpszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTS lpUrlComponents ) { return false; } + +FORCEINLINE HINTERNET InternetOpen( LPCSTR lpszAgent, DWORD dwAccessType, LPCSTR lpszProxy OPTIONAL, LPCSTR lpszProxyBypass OPTIONAL, DWORD dwFlags ) { return 0; } + +FORCEINLINE INTERNET_STATUS_CALLBACK InternetSetStatusCallback( HINTERNET hInternet, INTERNET_STATUS_CALLBACK lpfnInternetCallback ) { return NULL; } + +FORCEINLINE HINTERNET InternetOpenUrl( HINTERNET hInternet, LPCSTR lpszUrl,LPCSTR lpszHeaders OPTIONAL, DWORD dwHeadersLength, DWORD dwFlags, DWORD_PTR dwContext ) { return 0; } + +FORCEINLINE BOOL TerminateProcess( HANDLE, UINT ) { return false; } + +FORCEINLINE DWORD MsgWaitForMultipleObjects( DWORD, CONST HANDLE*, BOOL, DWORD, DWORD ) { return 0; } + +FORCEINLINE int gethostname( char *dest, int len ) { strncpy( dest, "localhost", len ); return 0; } + +FORCEINLINE BOOL GetProcessTimes( HANDLE, LPFILETIME ft1, LPFILETIME ft2, LPFILETIME ft3, LPFILETIME ft4 ) { return false; } + +//FORCEINLINE time_t Time(time_t *today) { ULARGE_INTEGER ul; GetSystemTimeAsFileTime( (FILETIME*)&ul ); if(today) *today=ul.QuadPart; return ul.QuadPart; } +FORCEINLINE long Time(long *today) { ULARGE_INTEGER ul; GetSystemTimeAsFileTime( (FILETIME*)&ul ); if(today) *today=ul.QuadPart; return ul.QuadPart; } + +FORCEINLINE BOOL CreateProcess( LPCSTR lpApplicationName, + LPSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, DWORD dwCreationFlags, + LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, + LPSTARTUPINFO lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation ) +{ + return false; +} + +PLATFORM_INTERFACE DWORD g_dwProcessAffinityMask; + +FORCEINLINE bool GetProcessAffinityMask( HANDLE hProcess, DWORD *lpProcessAffinityMask, DWORD *lpSystemAffinityMask ) +{ + *lpProcessAffinityMask = g_dwProcessAffinityMask; + *lpSystemAffinityMask = 0x01; + return true; +} + +FORCEINLINE bool SetProcessAffinityMask( HANDLE hProcess, DWORD dwProcessAffinityMask ) +{ + if ( dwProcessAffinityMask == 0 ) + { + // invalid + return false; + } + + g_dwProcessAffinityMask = dwProcessAffinityMask; + return true; +} + +FORCEINLINE DWORD_PTR SetThreadAffinityMask( HANDLE hThread, DWORD_PTR dwThreadAffinityMask ) +{ + if ( dwThreadAffinityMask == 0 ) + { + // invalid + return 0; + } + + // must select a specific processor, even if affinity mask specifies multiple. + // bit mask to enum will choose last valid processor + DWORD dwProcessor = 0; + while ( dwThreadAffinityMask >>= 1 ) + dwProcessor++; + + dwProcessor = XSetThreadProcessor( hThread, dwProcessor ); + if ( dwProcessor == (DWORD)-1 ) + { + // failed + return 0; + } + + // back to bit mask + return ( 1<<dwProcessor ); +} + +// snd_win.cpp +class IAudioDevice; +class CAudioSource; +FORCEINLINE IAudioDevice *Audio_CreateWaveDevice( void ) { return NULL; } +FORCEINLINE IAudioDevice *Audio_CreateDirectSoundDevice( void ) { return NULL; } +FORCEINLINE CAudioSource* Voice_SetupAudioSource( int soundsource, int entchannel ) { return NULL; } + +// snd_wave_source.cpp +FORCEINLINE float GetMP3Duration_Helper( char const *filename ) { return 0.f; } + +// host.cpp +FORCEINLINE void InitPME() {} +FORCEINLINE void ShutdownPME() {} + +// Steam API stubs +class ISteamClient; +class ISteamGameServer; +class ISteamUtils; +class ISteamUser; +class ISteamUserStats; +class ISteamFriends; +class ISteamMasterServerUpdater; +enum EServerMode; +FORCEINLINE ISteamClient *SteamClient() { return NULL; } +FORCEINLINE ISteamGameServer *SteamGameServer() { return NULL; } +FORCEINLINE ISteamUtils *SteamGameServerUtils() { return NULL; } +FORCEINLINE ISteamUtils *SteamUtils() { return NULL; } +FORCEINLINE ISteamUser *SteamUser() { return NULL; } +FORCEINLINE ISteamUserStats *SteamUserStats() { return NULL; } +FORCEINLINE ISteamFriends *SteamFriends() { return NULL; } +FORCEINLINE int32 GetHSteamPipe() { return 0; } +FORCEINLINE int32 GetHSteamUser() { return 0; } +FORCEINLINE int32 SteamAPI_GetHSteamPipe() { return 0; } +FORCEINLINE int32 SteamAPI_GetHSteamUser() { return 0; } +FORCEINLINE ISteamMasterServerUpdater *SteamMasterServerUpdater() { return NULL; } +FORCEINLINE bool SteamGameServer_Init( uint32 unIP, uint16 usPort, uint16 usGamePort, uint16 usSpectatorPort, uint16 usQueryPort, EServerMode eServerMode, int nGameAppId, const char *pchGameDir, const char *pchVersionString ) { return false; } +FORCEINLINE void SteamGameServer_Shutdown() {} +FORCEINLINE void SteamGameServer_RunCallbacks() {} + +FORCEINLINE int getch( void ) { return 0; } + +PLATFORM_INTERFACE LONG GetWindowLong( HWND hWnd, int nIndex ); +PLATFORM_INTERFACE LONG SetWindowLong( HWND hWnd, int nIndex, LONG dwNewLong ); +PLATFORM_INTERFACE LONG_PTR GetWindowLongPtr( HWND hWnd, int nIndex ); +PLATFORM_INTERFACE LONG_PTR SetWindowLongPtr( HWND hWnd, int nIndex, LONG dwNewLong ); +PLATFORM_INTERFACE LONG_PTR GetWindowLongPtrW( HWND hWnd, int nIndex ); // false stub -- no work has been done to make unicode version of this function on 360 +PLATFORM_INTERFACE LONG_PTR SetWindowLongPtrW( HWND hWnd, int nIndex, LONG dwNewLong ); // false stub -- no work has been done to make unicode version of this function on 360 +PLATFORM_INTERFACE HWND CreateWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam ); +PLATFORM_INTERFACE HWND CreateWindowEx( DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam ); +PLATFORM_INTERFACE BOOL DestroyWindow( HWND hWnd ); +PLATFORM_INTERFACE ATOM RegisterClassEx( CONST WNDCLASSEX *lpwcx ); +PLATFORM_INTERFACE ATOM RegisterClass( CONST WNDCLASS *lpwc ); +PLATFORM_INTERFACE HWND GetFocus( VOID ); +PLATFORM_INTERFACE HWND SetFocus( HWND hWnd ); +PLATFORM_INTERFACE int GetSystemMetrics( int nIndex ); +PLATFORM_INTERFACE BOOL ShowWindow( HWND hWnd, int nCmdShow ); +PLATFORM_INTERFACE LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); +PLATFORM_INTERFACE LRESULT CallWindowProc( WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); +PLATFORM_INTERFACE BOOL GetClientRect( HWND hwnd, LPRECT lpRect ); +PLATFORM_INTERFACE int GetDeviceCaps( HDC hdc, int nIndex ); +PLATFORM_INTERFACE LRESULT SendMessageTimeout( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, UINT fuFlags, UINT uTimeout, PDWORD_PTR lpdwResult ); +PLATFORM_INTERFACE BOOL SetWindowPos( HWND hWnd, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags ); + + + + + + + + diff --git a/common/xbox/xboxstubs.h b/common/xbox/xboxstubs.h new file mode 100644 index 0000000..fa3448f --- /dev/null +++ b/common/xbox/xboxstubs.h @@ -0,0 +1,237 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Win32 replacements for XBox. +// +//============================================================================= + +#if !defined( XBOXSTUBS_H ) && !defined( _X360 ) +#define XBOXSTUBS_H + +#ifdef _WIN32 +#pragma once +#endif + +#include "tier0/platform.h" + +// Content creation/open flags +#define XCONTENTFLAG_NONE 0x00 +#define XCONTENTFLAG_CREATENEW 0x00 +#define XCONTENTFLAG_CREATEALWAYS 0x00 +#define XCONTENTFLAG_OPENEXISTING 0x00 +#define XCONTENTFLAG_OPENALWAYS 0x00 +#define XCONTENTFLAG_TRUNCATEEXISTING 0x00 + +// Content attributes +#define XCONTENTFLAG_NOPROFILE_TRANSFER 0x00 +#define XCONTENTFLAG_NODEVICE_TRANSFER 0x00 +#define XCONTENTFLAG_STRONG_SIGNED 0x00 +#define XCONTENTFLAG_ALLOWPROFILE_TRANSFER 0x00 +#define XCONTENTFLAG_MOVEONLY_TRANSFER 0x00 + +// Console device ports +#define XDEVICE_PORT0 0 +#define XDEVICE_PORT1 1 +#define XDEVICE_PORT2 2 +#define XDEVICE_PORT3 3 +#define XUSER_MAX_COUNT 4 +#define XUSER_INDEX_NONE 0x000000FE + +#define XBX_CLR_DEFAULT 0xFF000000 +#define XBX_CLR_WARNING 0x0000FFFF +#define XBX_CLR_ERROR 0x000000FF + +#define XBOX_MINBORDERSAFE 0 +#define XBOX_MAXBORDERSAFE 0 + +typedef enum +{ + XK_NULL, + XK_BUTTON_UP, + XK_BUTTON_DOWN, + XK_BUTTON_LEFT, + XK_BUTTON_RIGHT, + XK_BUTTON_START, + XK_BUTTON_BACK, + XK_BUTTON_STICK1, + XK_BUTTON_STICK2, + XK_BUTTON_A, + XK_BUTTON_B, + XK_BUTTON_X, + XK_BUTTON_Y, + XK_BUTTON_LEFT_SHOULDER, + XK_BUTTON_RIGHT_SHOULDER, + XK_BUTTON_LTRIGGER, + XK_BUTTON_RTRIGGER, + XK_STICK1_UP, + XK_STICK1_DOWN, + XK_STICK1_LEFT, + XK_STICK1_RIGHT, + XK_STICK2_UP, + XK_STICK2_DOWN, + XK_STICK2_LEFT, + XK_STICK2_RIGHT, + XK_MAX_KEYS, +} xKey_t; + +//typedef enum +//{ +// XVRB_NONE, // off +// XVRB_ERROR, // fatal error +// XVRB_ALWAYS, // no matter what +// XVRB_WARNING, // non-fatal warnings +// XVRB_STATUS, // status reports +// XVRB_ALL, +//} xverbose_e; + +typedef unsigned short WORD; +#ifndef POSIX +typedef unsigned long DWORD; +typedef void* HANDLE; +typedef unsigned __int64 ULONGLONG; +#endif + +#ifdef POSIX +typedef DWORD COLORREF; +#endif + +#ifndef INVALID_HANDLE_VALUE +#define INVALID_HANDLE_VALUE ((HANDLE)-1) +#endif + +// typedef struct { +// IN_ADDR ina; // IP address (zero if not static/DHCP) +// IN_ADDR inaOnline; // Online IP address (zero if not online) +// WORD wPortOnline; // Online port +// BYTE abEnet[6]; // Ethernet MAC address +// BYTE abOnline[20]; // Online identification +// } XNADDR; + +typedef int XNADDR; +typedef uint64 XUID; + +typedef struct { + BYTE ab[8]; // xbox to xbox key identifier +} XNKID; + +typedef struct { + BYTE ab[16]; // xbox to xbox key exchange key +} XNKEY; + +typedef struct _XSESSION_INFO +{ + XNKID sessionID; // 8 bytes + XNADDR hostAddress; // 36 bytes + XNKEY keyExchangeKey; // 16 bytes +} XSESSION_INFO, *PXSESSION_INFO; + +typedef struct _XUSER_DATA +{ + BYTE type; + + union + { + int nData; // XUSER_DATA_TYPE_INT32 + int64 i64Data; // XUSER_DATA_TYPE_INT64 + double dblData; // XUSER_DATA_TYPE_DOUBLE + struct // XUSER_DATA_TYPE_UNICODE + { + uint cbData; // Includes null-terminator + char * pwszData; + } string; + float fData; // XUSER_DATA_TYPE_FLOAT + struct // XUSER_DATA_TYPE_BINARY + { + uint cbData; + char * pbData; + } binary; + }; +} XUSER_DATA, *PXUSER_DATA; + +typedef struct _XUSER_PROPERTY +{ + DWORD dwPropertyId; + XUSER_DATA value; +} XUSER_PROPERTY, *PXUSER_PROPERTY; + +typedef struct _XUSER_CONTEXT +{ + DWORD dwContextId; + DWORD dwValue; +} XUSER_CONTEXT, *PXUSER_CONTEXT; + +typedef struct _XSESSION_SEARCHRESULT +{ + XSESSION_INFO info; + DWORD dwOpenPublicSlots; + DWORD dwOpenPrivateSlots; + DWORD dwFilledPublicSlots; + DWORD dwFilledPrivateSlots; + DWORD cProperties; + DWORD cContexts; + PXUSER_PROPERTY pProperties; + PXUSER_CONTEXT pContexts; +} XSESSION_SEARCHRESULT, *PXSESSION_SEARCHRESULT; + +typedef struct _XSESSION_SEARCHRESULT_HEADER +{ + DWORD dwSearchResults; + XSESSION_SEARCHRESULT *pResults; +} XSESSION_SEARCHRESULT_HEADER, *PXSESSION_SEARCHRESULT_HEADER; + +typedef struct _XSESSION_REGISTRANT +{ + uint64 qwMachineID; + DWORD bTrustworthiness; + DWORD bNumUsers; + XUID *rgUsers; + +} XSESSION_REGISTRANT; + +typedef struct _XSESSION_REGISTRATION_RESULTS +{ + DWORD wNumRegistrants; + XSESSION_REGISTRANT *rgRegistrants; +} XSESSION_REGISTRATION_RESULTS, *PXSESSION_REGISTRATION_RESULTS; + +typedef struct { + BYTE bFlags; + BYTE bReserved; + WORD cProbesXmit; + WORD cProbesRecv; + WORD cbData; + BYTE * pbData; + WORD wRttMinInMsecs; + WORD wRttMedInMsecs; + DWORD dwUpBitsPerSec; + DWORD dwDnBitsPerSec; +} XNQOSINFO; + +typedef struct { + uint cxnqos; + uint cxnqosPending; + XNQOSINFO axnqosinfo[1]; +} XNQOS; + +#define XSESSION_CREATE_HOST 0 +#define XUSER_DATA_TYPE_INT32 0 +#define XSESSION_CREATE_USES_ARBITRATION 0 +#define XNET_QOS_LISTEN_ENABLE 0 +#define XNET_QOS_LISTEN_DISABLE 0 +#define XNET_QOS_LISTEN_SET_DATA 0 + +FORCEINLINE void XBX_ProcessEvents() {} +FORCEINLINE unsigned int XBX_GetSystemTime() { return 0; } +FORCEINLINE int XBX_GetPrimaryUserId() { return 0; } +FORCEINLINE void XBX_SetPrimaryUserId( DWORD idx ) {} +FORCEINLINE int XBX_GetStorageDeviceId() { return 0; } +FORCEINLINE void XBX_SetStorageDeviceId( DWORD idx ) {} +FORCEINLINE const char *XBX_GetLanguageString() { return ""; } +FORCEINLINE bool XBX_IsLocalized() { return false; } + +#define XCONTENT_MAX_DISPLAYNAME_LENGTH 128 +#define XCONTENT_MAX_FILENAME_LENGTH 42 + +#define XBX_INVALID_STORAGE_ID ((DWORD) -1) +#define XBX_STORAGE_DECLINED ((DWORD) -2) + +#endif // XBOXSTUBS_H |