123 lines
5.6 KiB
C++
123 lines
5.6 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose: Interface to Xbox 360 system functions. Helps deal with the async
|
|
// system and Live
|
|
// functions by either providing a handle for the caller to
|
|
//check results or handling automatic cleanup of the async data when the caller
|
|
//doesn't care about the results.
|
|
//
|
|
//===========================================================================//
|
|
|
|
#ifndef IXBOXSYSTEM_H
|
|
#define IXBOXSYSTEM_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#if !defined(_X360)
|
|
#include "xbox/xboxstubs.h"
|
|
#endif
|
|
|
|
typedef void *AsyncHandle_t;
|
|
typedef void *XboxHandle_t;
|
|
|
|
#ifdef POSIX
|
|
#define ERROR_SUCCESS 0
|
|
#define ERROR_IO_PENDING 1
|
|
#define ERROR_IO_INCOMPLETE 2
|
|
#define ERROR_INSUFFICIENT_BUFFER 3
|
|
#endif
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Xbox system interface
|
|
//-----------------------------------------------------------------------------
|
|
abstract_class IXboxSystem {
|
|
public:
|
|
virtual AsyncHandle_t CreateAsyncHandle(void) = 0;
|
|
virtual void ReleaseAsyncHandle(AsyncHandle_t handle) = 0;
|
|
virtual int GetOverlappedResult(AsyncHandle_t handle, uint * pResultCode,
|
|
bool bWait) = 0;
|
|
virtual void CancelOverlappedOperation(AsyncHandle_t handle) = 0;
|
|
|
|
// Save/Load
|
|
virtual void GetModSaveContainerNames(const char *pchModName,
|
|
const wchar_t **ppchDisplayName,
|
|
const char **ppchName) = 0;
|
|
virtual uint GetContainerRemainingSpace(void) = 0;
|
|
virtual bool DeviceCapacityAdequate(DWORD nStorageID,
|
|
const char *pModName) = 0;
|
|
virtual DWORD DiscoverUserData(DWORD nUserID, const char *pModName) = 0;
|
|
|
|
// XUI
|
|
virtual bool ShowDeviceSelector(bool bForce, uint *pStorageID,
|
|
AsyncHandle_t *pHandle) = 0;
|
|
virtual void ShowSigninUI(uint nPanes, uint nFlags) = 0;
|
|
|
|
// Rich Presence and Matchmaking
|
|
virtual int UserSetContext(uint nUserIdx, uint nContextID,
|
|
uint nContextValue, bool bAsync = true,
|
|
AsyncHandle_t *pHandle = NULL) = 0;
|
|
virtual int UserSetProperty(uint nUserIndex, uint nPropertyId, uint nBytes,
|
|
const void *pvValue, bool bAsync = true,
|
|
AsyncHandle_t *pHandle = NULL) = 0;
|
|
|
|
// Matchmaking
|
|
virtual int CreateSession(
|
|
uint nFlags, uint nUserIdx, uint nMaxPublicSlots, uint nMaxPrivateSlots,
|
|
uint64 * pNonce, void *pSessionInfo, XboxHandle_t *pSessionHandle,
|
|
bool bAsync, AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
virtual uint DeleteSession(XboxHandle_t hSession, bool bAsync,
|
|
AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
virtual uint SessionSearch(
|
|
uint nProcedureIndex, uint nUserIndex, uint nNumResults, uint nNumUsers,
|
|
uint nNumProperties, uint nNumContexts,
|
|
XUSER_PROPERTY * pSearchProperties, XUSER_CONTEXT * pSearchContexts,
|
|
uint * pcbResultsBuffer, XSESSION_SEARCHRESULT_HEADER * pSearchResults,
|
|
bool bAsync, AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
virtual uint SessionStart(XboxHandle_t hSession, uint nFlags, bool bAsync,
|
|
AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
virtual uint SessionEnd(XboxHandle_t hSession, bool bAsync,
|
|
AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
virtual int SessionJoinLocal(XboxHandle_t hSession, uint nUserCount,
|
|
const uint *pUserIndexes,
|
|
const bool *pPrivateSlots, bool bAsync,
|
|
AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
virtual int SessionJoinRemote(XboxHandle_t hSession, uint nUserCount,
|
|
const XUID *pXuids, const bool *pPrivateSlots,
|
|
bool bAsync,
|
|
AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
virtual int SessionLeaveLocal(XboxHandle_t hSession, uint nUserCount,
|
|
const uint *pUserIndexes, bool bAsync,
|
|
AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
virtual int SessionLeaveRemote(XboxHandle_t hSession, uint nUserCount,
|
|
const XUID *pXuids, bool bAsync,
|
|
AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
virtual int SessionMigrate(XboxHandle_t hSession, uint nUserIndex,
|
|
void *pSessionInfo, bool bAsync,
|
|
AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
virtual int SessionArbitrationRegister(
|
|
XboxHandle_t hSession, uint nFlags, uint64 nonce, uint * pBytes,
|
|
void *pBuffer, bool bAsync, AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
|
|
// Stats
|
|
virtual int WriteStats(XboxHandle_t hSession, XUID xuid, uint nViews,
|
|
void *pViews, bool bAsync,
|
|
AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
|
|
// Achievements
|
|
virtual int EnumerateAchievements(
|
|
uint nUserIdx, uint64 xuid, uint nStartingIdx, uint nCount,
|
|
void *pBuffer, uint nBufferBytes, bool bAsync = true,
|
|
AsyncHandle_t *pAsyncHandle = NULL) = 0;
|
|
virtual void AwardAchievement(uint nUserIdx, uint nAchievementId) = 0;
|
|
|
|
virtual void FinishContainerWrites(void) = 0;
|
|
virtual uint GetContainerOpenResult(void) = 0;
|
|
virtual uint OpenContainers(void) = 0;
|
|
virtual void CloseContainers(void) = 0;
|
|
};
|
|
|
|
#define XBOXSYSTEM_INTERFACE_VERSION "XboxSystemInterface001"
|
|
|
|
#endif // IXBOXSYSTEM_H
|