Initial commit
This commit is contained in:
3622
xbdm/imp/xamp.h
Normal file
3622
xbdm/imp/xamp.h
Normal file
@@ -0,0 +1,3622 @@
|
||||
|
||||
|
||||
#ifndef __XAMP_H__
|
||||
#define __XAMP_H__
|
||||
|
||||
typedef ULONG XMSG_HANDLE;
|
||||
|
||||
#include <windef.h>
|
||||
#include <winbase.h>
|
||||
#include <kernelp.h>
|
||||
#include <KernelExports.h>
|
||||
#include "xboxp.h"
|
||||
#include "xdbg.h"
|
||||
#include "xamdbg.h"
|
||||
|
||||
#include "winsockx.h"
|
||||
#include "xonlinep.h"
|
||||
#include "xex.h"
|
||||
#include "xecrypt.h"
|
||||
#include "xcabinet.h"
|
||||
#include "contentpkg.h"
|
||||
#include "xamcache.h"
|
||||
|
||||
//
|
||||
// Define NTSTATUS if it's not already defined
|
||||
//
|
||||
|
||||
#if !defined(_NTDEF_)
|
||||
typedef LONG NTSTATUS;
|
||||
#endif
|
||||
|
||||
//
|
||||
// Force a reference to the kernel build number
|
||||
//
|
||||
|
||||
#pragma comment(linker, "/include:XboxKrnlBuildNumber")
|
||||
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 4201) // unnamed struct/union
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define APPSZ_TESTXEX ("testxex.xex")
|
||||
#define APPSZ_CERT ("cert.xex")
|
||||
#define APPSZ_HUDUI ("hud.xex")
|
||||
|
||||
// App IDs
|
||||
// Apps that load UI resource should have a unique id
|
||||
// that helps XUI cache resources across dll loads
|
||||
#define XAM_APP_ID_NONE (~0u)
|
||||
#define XAM_APP_ID_HUD 0
|
||||
#define XAM_APP_ID_FRIENDS 1
|
||||
#define XAM_APP_ID_DEVICESELECTOR 2
|
||||
#define XAM_APP_ID_SIGNIN 3
|
||||
#define XAM_APP_ID_TEMPAPP 4
|
||||
#define XAM_APP_ID_TESTXEX 5
|
||||
#define XAM_APP_ID_FEEDBACK 6
|
||||
#define XAM_APP_ID_MARKETPLACE 7
|
||||
#define XAM_APP_ID_MUSICPLAYER 8
|
||||
#define XAM_APP_ID_VOICEMAIL 9
|
||||
#define XAM_APP_ID_QUICKCHAT 10
|
||||
#define XAM_APP_ID_VK 11
|
||||
#define XAM_APP_ID_UPDATER 12
|
||||
#define XAM_APP_ID_GAMEPROFILE 13
|
||||
#define XAM_APP_ID_CREATEPROFILE 14
|
||||
#define XAM_APP_ID_MINIMUSICPLAYER 15
|
||||
#define XAM_APP_ID_CERT 16
|
||||
#define HXAMAPP_TESTXEX ((HXAMAPP)0x000000F9)
|
||||
#define HXAMAPP_CERT ((HXAMAPP)0x000000F8)
|
||||
|
||||
// Returns true if the xam app's xex image doesn't always have to be
|
||||
// loaded in the xam.
|
||||
#define XAMAPP_OPTIONAL(h) ( ((h) == HXAMAPP_TESTXEX) || ((h) == HXAMAPP_CERT) )
|
||||
|
||||
#define MSGAREA_TESTXEX (0x0006)
|
||||
#define XM_SYS_STORAGEDEVICECHANGE MSGID(MSGAREA_SYSTEM, 0x000F)
|
||||
#define IsLiveBaseCustomProcessingMsg(msg) (MSG_NUMBER(msg) & 0x8000)
|
||||
|
||||
//
|
||||
// NOTE: these are duplicated in \private\inc\xonp.h for codegen
|
||||
//
|
||||
|
||||
#define XM_LIVEBASE_LOGONCONNECT MSGID(MSGAREA_XLIVEBASE, 0x8001)
|
||||
#define XM_LIVEBASE_LOGONGETSERVICEINFO MSGID(MSGAREA_XLIVEBASE, 0x8007)
|
||||
#define XM_LIVEBASE_PRESENCEGETSEQNUM MSGID(MSGAREA_XLIVEBASE, 0x8017)
|
||||
#define XM_LIVEBASE_PRESENCESET MSGID(MSGAREA_XLIVEBASE, 0x8018)
|
||||
#define XM_LIVEBASE_PRESENCEENUMCREATE MSGID(MSGAREA_XLIVEBASE, 0x8019)
|
||||
#define XM_LIVEBASE_PRESENCEENUM MSGID(MSGAREA_XLIVEBASE, 0x801A)
|
||||
#define XM_LIVEBASE_PRESENCEENUMCLOSE MSGID(MSGAREA_XLIVEBASE, 0x801B)
|
||||
#define XM_LIVEBASE_PRESENCEGETSTATE MSGID(MSGAREA_XLIVEBASE, 0x801C)
|
||||
#define XM_LIVEBASE_PRESENCESETSTATE MSGID(MSGAREA_XLIVEBASE, 0x801D)
|
||||
#define XM_LIVEBASE_PRESENCESUBSCRIBE MSGID(MSGAREA_XLIVEBASE, 0x801E)
|
||||
#define XM_LIVEBASE_PRESENCEUNSUBSCRIBE MSGID(MSGAREA_XLIVEBASE, 0x801F)
|
||||
#define XM_LIVEBASE_FRIENDSENUMCREATE MSGID(MSGAREA_XLIVEBASE, 0x8020)
|
||||
#define XM_LIVEBASE_FRIENDSENUM MSGID(MSGAREA_XLIVEBASE, 0x8021)
|
||||
#define XM_LIVEBASE_FRIENDSENUMCLOSE MSGID(MSGAREA_XLIVEBASE, 0x8022)
|
||||
#define XM_LIVEBASE_INVITEGETINFO MSGID(MSGAREA_XLIVEBASE, 0x8023)
|
||||
#define XM_LIVEBASE_MSGENUMERATE MSGID(MSGAREA_XLIVEBASE, 0x8024)
|
||||
#define XM_LIVEBASE_MSGGETSUMMARY MSGID(MSGAREA_XLIVEBASE, 0x8025)
|
||||
#define XM_LIVEBASE_MSGCREATE MSGID(MSGAREA_XLIVEBASE, 0x8026)
|
||||
#define XM_LIVEBASE_MSGDESTROY MSGID(MSGAREA_XLIVEBASE, 0x8027)
|
||||
#define XM_LIVEBASE_MSGSETPROP MSGID(MSGAREA_XLIVEBASE, 0x8028)
|
||||
#define XM_LIVEBASE_MSGGETPROP MSGID(MSGAREA_XLIVEBASE, 0x8029)
|
||||
#define XM_LIVEBASE_MSGGETDETAILS MSGID(MSGAREA_XLIVEBASE, 0x802A)
|
||||
#define XM_LIVEBASE_MSGGETDETAILSSUMMARY MSGID(MSGAREA_XLIVEBASE, 0x802B)
|
||||
#define XM_LIVEBASE_MSGGETDETAILSPROPERTY MSGID(MSGAREA_XLIVEBASE, 0x802C)
|
||||
#define XM_LIVEBASE_MSGSETFLAGS MSGID(MSGAREA_XLIVEBASE, 0x802D)
|
||||
#define XM_LIVEBASE_MSGDELETE MSGID(MSGAREA_XLIVEBASE, 0x802E)
|
||||
#define XM_LIVEBASE_MSGINVITESEND MSGID(MSGAREA_XLIVEBASE, 0x802F)
|
||||
#define XM_LIVEBASE_MSGINVITEANSWER MSGID(MSGAREA_XLIVEBASE, 0x8030)
|
||||
#define XM_LIVEBASE_MSGINVITEREVOKE MSGID(MSGAREA_XLIVEBASE, 0x8031)
|
||||
#define XM_LIVEBASE_GETTASKPROGRESS MSGID(MSGAREA_XLIVEBASE, 0x8032)
|
||||
#define XM_LIVEBASE_GETREQUESTTHROTTLE MSGID(MSGAREA_XLIVEBASE, 0x8033)
|
||||
#define XM_LIVEBASE_SETREQUESTTHROTTLE MSGID(MSGAREA_XLIVEBASE, 0x8034)
|
||||
#define XM_LIVEBASE_STORAGEBUILDSERVERPATH MSGID(MSGAREA_XLIVEBASE, 0x8035)
|
||||
#define XM_LIVEBASE_EXPIREMARKETPLACECOUNTSCACHE MSGID(MSGAREA_XLIVEBASE, 0x8036)
|
||||
#define XM_LIVEBASE_PRESENCEINITIALIZE MSGID(MSGAREA_XLIVEBASE, 0x8037)
|
||||
#define XM_LIVEBASE_CONTENTGETINPROGRESSMETADATA MSGID(MSGAREA_XLIVEBASE, 0x8038)
|
||||
#define XM_BASE_DEVICEFORMAT MSGID(MSGAREA_XBASE, 0x000B)
|
||||
#define XM_BASE_CONTENTCOPYMOVE MSGID(MSGAREA_XBASE, 0x000C)
|
||||
#define XM_BASE_DEVICERENAME MSGID(MSGAREA_XBASE, 0x000D)
|
||||
#define XM_BASE_CONTENTAGGREGATEENUMERATE MSGID(MSGAREA_XBASE, 0x000E)
|
||||
#define XM_BASE_CONTENAGGREGATETCREATEENUM MSGID(MSGAREA_XBASE, 0x000F)
|
||||
#define XM_BASE_CONTENTAGGREGATECLOSEENUM MSGID(MSGAREA_XBASE, 0x0010)
|
||||
#define XM_BASE_CONTENTGETMETADATA MSGID(MSGAREA_XBASE, 0x0011)
|
||||
#define XM_BASE_CONTENTSETTHUMBNAIL MSGID(MSGAREA_XBASE, 0x0012)
|
||||
#define XM_BASE_CONTENTGETTHUMBNAIL MSGID(MSGAREA_XBASE, 0x0013)
|
||||
#define XM_BASE_CONTENTGETCREATOR MSGID(MSGAREA_XBASE, 0x0014)
|
||||
#define XM_BASE_DEVICEGETSTATE MSGID(MSGAREA_XBASE, 0x0015)
|
||||
#define XM_BASE_CONTENTRESOLVE MSGID(MSGAREA_XBASE, 0x0016)
|
||||
#define XM_BASE_CONTENTGETLICENSEMASK MSGID(MSGAREA_XBASE, 0x0017)
|
||||
#define XM_BASE_CONTENTFLUSH MSGID(MSGAREA_XBASE, 0x0018)
|
||||
#define XM_BASE_CONTENTINSTALL MSGID(MSGAREA_XBASE, 0x0019)
|
||||
#define XM_BASE_CONTENTGETATTRIBUTES MSGID(MSGAREA_XBASE, 0x001A)
|
||||
#define XM_BASE_PROFILEENUMERATE MSGID(MSGAREA_XBASE, 0x3001)
|
||||
#define XM_BASE_PROFILECREATEENUM MSGID(MSGAREA_XBASE, 0x3002)
|
||||
#define XM_BASE_PROFILECLOSEENUM MSGID(MSGAREA_XBASE, 0x3003)
|
||||
#define XM_BASE_PROFILELOAD MSGID(MSGAREA_XBASE, 0x3004)
|
||||
#define XM_BASE_PROFILESAVE MSGID(MSGAREA_XBASE, 0x3005)
|
||||
#define XM_BASE_PROFILEDELETE MSGID(MSGAREA_XBASE, 0x3006)
|
||||
#define XM_BASE_PROFILERENAME MSGID(MSGAREA_XBASE, 0x3007)
|
||||
|
||||
//
|
||||
// TestXEX Messages
|
||||
//
|
||||
|
||||
#define XM_TEST_PRESENDMESSAGE MSGID(MSGAREA_TESTXEX, 0x0001)
|
||||
#define XM_TEST_POSTSENDMESSAGE MSGID(MSGAREA_TESTXEX, 0x0002)
|
||||
#define XM_TEST_SENDASYNCMESSAGE MSGID(MSGAREA_TESTXEX, 0x0003)
|
||||
#define XM_TEST_SENDNOTIFICATION MSGID(MSGAREA_TESTXEX, 0x0004)
|
||||
#define XM_TEST_ASYNCMESSAGEINUSE MSGID(MSGAREA_TESTXEX, 0x0005)
|
||||
#define XM_TEST_SETMEDIACODE MSGID(MSGAREA_TESTXEX, 0x0006)
|
||||
#define XM_TEST_ENABLEUITIMING MSGID(MSGAREA_TESTXEX, 0x0007)
|
||||
#define XM_TEST_DUMPUITIMING MSGID(MSGAREA_TESTXEX, 0x0008)
|
||||
#define XM_TEST_UIAPPLOAD MSGID(MSGAREA_TESTXEX, 0x0009)
|
||||
|
||||
#define XM_TEST_ENABLEAUTOMATION MSGID(MSGAREA_TESTXEX, 0x0011)
|
||||
#define XM_TEST_DISABLEAUTOMATION MSGID(MSGAREA_TESTXEX, 0x0012)
|
||||
#define XM_TEST_STARTSCRIPTENGINE MSGID(MSGAREA_TESTXEX, 0x0013)
|
||||
#define XM_TEST_STOPSCRIPTENGINE MSGID(MSGAREA_TESTXEX, 0x0014)
|
||||
#define XM_TEST_RUNSCRIPT MSGID(MSGAREA_TESTXEX, 0x0015)
|
||||
#define XM_TEST_SETTITLESTARTUPSCRIPT MSGID(MSGAREA_TESTXEX, 0x0016)
|
||||
#define XM_TEST_SETDLLENGINEPATH MSGID(MSGAREA_TESTXEX, 0x0017)
|
||||
#define XM_TEST_UPDATETESTCOMMAND MSGID(MSGAREA_TESTXEX, 0x0018)
|
||||
|
||||
#define XM_TEST_STARTMESSAGESPOOF MSGID(MSGAREA_TESTXEX, 0x0021)
|
||||
#define XM_TEST_STOPMESSAGESPOOF MSGID(MSGAREA_TESTXEX, 0x0022)
|
||||
#define XM_TEST_STARTASYNCMESSAGESPOOF MSGID(MSGAREA_TESTXEX, 0x0023)
|
||||
#define XM_TEST_STOPASYNCMESSAGESPOOF MSGID(MSGAREA_TESTXEX, 0x0024)
|
||||
|
||||
#define XM_TEST_STARTMESSAGETIMER MSGID(MSGAREA_TESTXEX, 0x0031)
|
||||
#define XM_TEST_STOPMESSAGETIMER MSGID(MSGAREA_TESTXEX, 0x0032)
|
||||
#define XM_TEST_STARTMESSAGELOG MSGID(MSGAREA_TESTXEX, 0x0033)
|
||||
#define XM_TEST_STOPMESSAGELOG MSGID(MSGAREA_TESTXEX, 0x0034)
|
||||
|
||||
#define XM_TEST_OCCLUSIONQUERYBEGIN MSGID(MSGAREA_TESTXEX, 0x0040)
|
||||
#define XM_TEST_OCCLUSIONQUERYEND MSGID(MSGAREA_TESTXEX, 0x0041)
|
||||
#define XM_TEST_OCCLUSIONQUERYGETDATA MSGID(MSGAREA_TESTXEX, 0x0042)
|
||||
|
||||
#define XM_TEST_CHANGEXEXINFO MSGID(MSGAREA_TESTXEX, 0x0051)
|
||||
#define XM_TEST_DELETESPAFILE MSGID(MSGAREA_TESTXEX, 0x0052)
|
||||
#define XM_TEST_RESETFILECACHE MSGID(MSGAREA_TESTXEX, 0x0053)
|
||||
|
||||
#define TEST_SPA_FILENAME_SIZE 64
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD dwTitleID;
|
||||
CHAR szSpaFilename[TEST_SPA_FILENAME_SIZE];
|
||||
} TEST_CHANGEXEXINFO_MSG, *PTEST_CHANGEXEXINFO_MSG;
|
||||
|
||||
|
||||
//
|
||||
// XGI
|
||||
//
|
||||
|
||||
#define XM_XGI_RECOVERTITLE MSGID(MSGAREA_XGI, 0x0003)
|
||||
#define XM_XGI_SYNC MSGID(MSGAREA_XGI, 0x0004)
|
||||
#define XM_XGI_CONTENTOPENED MSGID(MSGAREA_XGI, 0x0005)
|
||||
#define XM_XGI_USERSETCONTEXT MSGID(MSGAREA_XGI, 0x0006)
|
||||
#define XM_XGI_USERSETPROPERTY MSGID(MSGAREA_XGI, 0x0007)
|
||||
|
||||
#define XM_XGI_WRITEACHIEVEMENT MSGID(MSGAREA_XGI, 0x0008)
|
||||
#define XM_XGI_CREATEENUM MSGID(MSGAREA_XGI, 0x0009)
|
||||
#define XM_XGI_ACHIEVEMENTENUMERATE MSGID(MSGAREA_XGI, 0x000A)
|
||||
#define XM_XGI_CLOSEENUM MSGID(MSGAREA_XGI, 0x000B)
|
||||
#define XM_XGI_READSETTINGS MSGID(MSGAREA_XGI, 0x000C)
|
||||
#define XM_XGI_WRITESETTINGS MSGID(MSGAREA_XGI, 0x000D)
|
||||
|
||||
#define XM_XGI_SESSIONCREATE MSGID(MSGAREA_XGI, 0x0010)
|
||||
#define XM_XGI_SESSIONDELETE MSGID(MSGAREA_XGI, 0x0011)
|
||||
#define XM_XGI_SESSIONJOIN MSGID(MSGAREA_XGI, 0x0012)
|
||||
#define XM_XGI_SESSIONLEAVE MSGID(MSGAREA_XGI, 0x0013)
|
||||
#define XM_XGI_SESSIONSTART MSGID(MSGAREA_XGI, 0x0014)
|
||||
#define XM_XGI_SESSIONEND MSGID(MSGAREA_XGI, 0x0015)
|
||||
#define XM_XGI_SESSIONSEARCH MSGID(MSGAREA_XGI, 0x0016)
|
||||
#define XM_XGI_SESSIONCONFIG MSGID(MSGAREA_XGI, 0x0017)
|
||||
#define XM_XGI_SESSIONMODIFY MSGID(MSGAREA_XGI, 0x0018)
|
||||
#define XM_XGI_SESSIONINVITE MSGID(MSGAREA_XGI, 0x0019)
|
||||
#define XM_XGI_SESSIONARBITRATE MSGID(MSGAREA_XGI, 0x001A)
|
||||
#define XM_XGI_SESSIONSEARCHBYID MSGID(MSGAREA_XGI, 0x001B)
|
||||
#define XM_XGI_SESSIONSEARCHEX MSGID(MSGAREA_XGI, 0x001C)
|
||||
|
||||
#define XM_XGI_VIEWRESET MSGID(MSGAREA_XGI, 0x0020)
|
||||
#define XM_XGI_STATSREAD MSGID(MSGAREA_XGI, 0x0021)
|
||||
#define XM_XGI_STATSENUMCREATE MSGID(MSGAREA_XGI, 0x0022)
|
||||
#define XM_XGI_STATSENUMERATE MSGID(MSGAREA_XGI, 0x0023)
|
||||
#define XM_XGI_STATSCLOSEENUM MSGID(MSGAREA_XGI, 0x0024)
|
||||
#define XM_XGI_STATSWRITE MSGID(MSGAREA_XGI, 0x0025)
|
||||
#define XM_XGI_STATSFLUSH MSGID(MSGAREA_XGI, 0x0026)
|
||||
|
||||
#define XM_XGI_READTILE MSGID(MSGAREA_XGI, 0x0030)
|
||||
#define XM_XGI_WRITETILE MSGID(MSGAREA_XGI, 0x0031)
|
||||
#define XM_XGI_READTILETOTEXTURE MSGID(MSGAREA_XGI, 0x0032)
|
||||
#define XM_XGI_WRITEGAMERTILE MSGID(MSGAREA_XGI, 0x0033)
|
||||
#define XM_XGI_PREPAREGAMERTILES MSGID(MSGAREA_XGI, 0x0034)
|
||||
#define XM_XGI_INITFLASHTILES MSGID(MSGAREA_XGI, 0x0035)
|
||||
#define XM_XGI_INVALIDATEGAMERTILECACHE MSGID(MSGAREA_XGI, 0x0036)
|
||||
|
||||
#define XM_XGI_READSTRING MSGID(MSGAREA_XGI, 0x0038)
|
||||
|
||||
#define XM_XGI_TITLEENUMERATE MSGID(MSGAREA_XGI, 0x0050)
|
||||
#define XM_XMP_PLAYUSERCONTENT MSGID(MSGAREA_XMP, 0x0001)
|
||||
#define XM_XMP_PLAYTITLEPLAYLIST MSGID(MSGAREA_XMP, 0x0002)
|
||||
#define XM_XMP_CONTINUE MSGID(MSGAREA_XMP, 0x0003)
|
||||
#define XM_XMP_STOP MSGID(MSGAREA_XMP, 0x0004)
|
||||
#define XM_XMP_PAUSE MSGID(MSGAREA_XMP, 0x0005)
|
||||
#define XM_XMP_NEXT MSGID(MSGAREA_XMP, 0x0006)
|
||||
#define XM_XMP_PREVIOUS MSGID(MSGAREA_XMP, 0x0007)
|
||||
#define XM_XMP_SETPLAYBACKBEHAVIOR MSGID(MSGAREA_XMP, 0x0008)
|
||||
#define XM_XMP_GETSTATUS MSGID(MSGAREA_XMP, 0x0009)
|
||||
#define XM_XMP_MOVESONG MSGID(MSGAREA_XMP, 0x000A)
|
||||
#define XM_XMP_GETVOLUME MSGID(MSGAREA_XMP, 0x000B)
|
||||
#define XM_XMP_SETVOLUME MSGID(MSGAREA_XMP, 0x000C)
|
||||
#define XM_XMP_CREATETITLEPLAYLIST MSGID(MSGAREA_XMP, 0x000D)
|
||||
#define XM_XMP_GETNOWPLAYING MSGID(MSGAREA_XMP, 0x000E)
|
||||
#define XM_XMP_ADDSONGS MSGID(MSGAREA_XMP, 0x0011)
|
||||
#define XM_XMP_REMOVESONGS MSGID(MSGAREA_XMP, 0x0012)
|
||||
#define XM_XMP_DELETETITLEPLAYLIST MSGID(MSGAREA_XMP, 0x0013)
|
||||
#define XM_XMP_CREATESONGENUMERATOR MSGID(MSGAREA_XMP, 0x0014)
|
||||
#define XM_XMP_ENUMERATESONG MSGID(MSGAREA_XMP, 0x0015)
|
||||
#define XM_XMP_CLOSESONGENUMERATOR MSGID(MSGAREA_XMP, 0x0016)
|
||||
#define XM_XMP_CREATETITLEPLAYLISTENUMERATOR MSGID(MSGAREA_XMP, 0x0017)
|
||||
#define XM_XMP_ENUMERATETITLEPLAYLIST MSGID(MSGAREA_XMP, 0x0018)
|
||||
#define XM_XMP_CLOSETITLEPLAYLISTENUMERATOR MSGID(MSGAREA_XMP, 0x0019)
|
||||
#define XM_XMP_SETPLAYBACKCONTROLLER MSGID(MSGAREA_XMP, 0x001A)
|
||||
#define XM_XMP_GETPLAYBACKCONTROLLER MSGID(MSGAREA_XMP, 0x001B)
|
||||
#define XM_XMP_CREATEMEDIACONTAINERENUMERATOR MSGID(MSGAREA_XMP, 0x001C)
|
||||
#define XM_XMP_ENUMERATEMEDIACONTAINER MSGID(MSGAREA_XMP, 0x001D)
|
||||
#define XM_XMP_CLOSEMEDIACONTAINERENUMERATOR MSGID(MSGAREA_XMP, 0x001E)
|
||||
#define XM_XMP_CREATEPHOTOENUMERATOR MSGID(MSGAREA_XMP, 0x001F)
|
||||
#define XM_XMP_ENUMERATEPHOTO MSGID(MSGAREA_XMP, 0x0020)
|
||||
#define XM_XMP_CLOSEPHOTOENUMERATOR MSGID(MSGAREA_XMP, 0x0021)
|
||||
#define XM_XMP_CREATEVIDEOENUMERATOR MSGID(MSGAREA_XMP, 0x0022)
|
||||
#define XM_XMP_ENUMERATEVIDEO MSGID(MSGAREA_XMP, 0x0023)
|
||||
#define XM_XMP_CLOSEVIDEOENUMERATOR MSGID(MSGAREA_XMP, 0x0024)
|
||||
#define XM_XMP_CREATEUSERPLAYLISTENUMERATOR MSGID(MSGAREA_XMP, 0x0025)
|
||||
#define XM_XMP_ENUMERATEUSERPLAYLIST MSGID(MSGAREA_XMP, 0x0026)
|
||||
#define XM_XMP_CLOSEUSERPLAYLISTENUMERATOR MSGID(MSGAREA_XMP, 0x0027)
|
||||
#define XM_XMP_EMPTYPLAYLIST MSGID(MSGAREA_XMP, 0x0028)
|
||||
#define XM_XMP_GETPLAYBACKBEHAVIOR MSGID(MSGAREA_XMP, 0x0029)
|
||||
#define XM_XMP_GETTOTALNUMBEROFITEMS MSGID(MSGAREA_XMP, 0x002A)
|
||||
#define XM_XMP_GETMEDIASOURCES MSGID(MSGAREA_XMP, 0x002B)
|
||||
#define XM_XMP_GETMEDIASTREAM MSGID(MSGAREA_XMP, 0x002C)
|
||||
#define XM_XMP_GETPHOTOTHUMBNAILSTREAM MSGID(MSGAREA_XMP, 0x002D)
|
||||
#define XM_XMP_GETTITLEPLAYLISTBUFFERSIZE MSGID(MSGAREA_XMP, 0x002E)
|
||||
#define XM_XMP_DASHINIT MSGID(MSGAREA_XMP, 0x002F)
|
||||
#define XM_XMP_GETTITLEINFO MSGID(MSGAREA_XMP, 0x0030)
|
||||
#define XM_XMP_GETNUMSONGSINTITLEPLAYLIST MSGID(MSGAREA_XMP, 0x0031)
|
||||
#define XM_XMP_IMPORTALBUM MSGID(MSGAREA_XMP, 0x0032)
|
||||
#define XM_XMP_GETBEATEFFECTOUTPUT MSGID(MSGAREA_XMP, 0x0033)
|
||||
#define XM_XMP_EDITALBUM MSGID(MSGAREA_XMP, 0x0034)
|
||||
#define XM_XMP_EDITTRACK MSGID(MSGAREA_XMP, 0x0035)
|
||||
#define XM_XMP_DELETEMEDIA MSGID(MSGAREA_XMP, 0x0036)
|
||||
#define XM_XMP_DELETECONTAINER MSGID(MSGAREA_XMP, 0x0037)
|
||||
#define XM_XMP_GETMEDIASOURCEINFO MSGID(MSGAREA_XMP, 0x0038)
|
||||
#define XM_XMP_COMMITPLAYLIST MSGID(MSGAREA_XMP, 0x0039)
|
||||
#define XM_XMP_CHANGEWMCSERVER MSGID(MSGAREA_XMP, 0x003A)
|
||||
#define XM_XMP_PLAYMEDIACONTAINER MSGID(MSGAREA_XMP, 0x003B)
|
||||
#define XM_XMP_RENAMECONTAINER MSGID(MSGAREA_XMP, 0x003C)
|
||||
#define XM_XMP_CAPTUREOUTPUT MSGID(MSGAREA_XMP, 0x003D)
|
||||
#define XM_XMP_CREATEMEDIAOBJECTENUMERATOR MSGID(MSGAREA_XMP, 0x003E)
|
||||
#define XM_XMP_ENUMERATEMEDIAOBJECT MSGID(MSGAREA_XMP, 0x003F)
|
||||
#define XM_XMP_CLOSEMEDIAOBJECTENUMERATOR MSGID(MSGAREA_XMP, 0x0040)
|
||||
#define XM_XMP_CREATETITLEPLAYLISTSONGENUMERATOR MSGID(MSGAREA_XMP, 0x0041)
|
||||
#define XM_XMP_ENUMERATETITLEPLAYLISTSONG MSGID(MSGAREA_XMP, 0x0042)
|
||||
#define XM_XMP_CLOSETITLEPLAYLISTSONGENUMERATOR MSGID(MSGAREA_XMP, 0x0043)
|
||||
#define XM_XMP_SETMEDIASOURCEWORKSPACE MSGID(MSGAREA_XMP, 0x0044)
|
||||
#define XM_XMP_GETNUMTITLEPLAYLISTS MSGID(MSGAREA_XMP, 0x0045)
|
||||
#define XM_XMP_GETMEDIASOURCE MSGID(MSGAREA_XMP, 0x0046)
|
||||
#define XM_XMP_DELETEALLLOCALMUSIC MSGID(MSGAREA_XMP, 0x0047)
|
||||
#define XM_XMP_REMOVESONGSWITHSOURCE MSGID(MSGAREA_XMP, 0x0048)
|
||||
#define XM_XMP_RESTARTPLAYBACK MSGID(MSGAREA_XMP, 0x0049)
|
||||
#define XM_XMP_SETDASHNOWPLAYINGQUEUEMODE MSGID(MSGAREA_XMP, 0x004A)
|
||||
#define XM_XMP_GETDASHNOWPLAYINGQUEUEMODE MSGID(MSGAREA_XMP, 0x004B)
|
||||
#define XM_XMP_ENTERCDRIPPINGMODE MSGID(MSGAREA_XMP, 0x004C)
|
||||
#define XM_XMP_LEAVECDRIPPINGMODE MSGID(MSGAREA_XMP, 0x004D)
|
||||
|
||||
//
|
||||
// UVBase Messages
|
||||
//
|
||||
|
||||
#define XM_UVBASE_REQUESTVOICECHAT MSGID(MSGAREA_UVBASE, 0x0001)
|
||||
#define XM_UVBASE_QUITVOICECHAT MSGID(MSGAREA_UVBASE, 0x0002)
|
||||
#define XM_UVBASE_ENUMERATEVOICECHATS MSGID(MSGAREA_UVBASE, 0x0003)
|
||||
#define XM_UVBASE_SWITCHTOVOICECHAT MSGID(MSGAREA_UVBASE, 0x0004)
|
||||
#define XM_UVBASE_CONNECTTOVOICECHAT MSGID(MSGAREA_UVBASE, 0x0005)
|
||||
#define XM_UVBASE_CALLBACKUSERTOVOICECHAT MSGID(MSGAREA_UVBASE, 0x0006)
|
||||
#define XM_UVBASE_CREATEVOICEMAIL MSGID(MSGAREA_UVBASE, 0x0007)
|
||||
#define XM_UVBASE_RECORDVOICEMAIL MSGID(MSGAREA_UVBASE, 0x0008)
|
||||
#define XM_UVBASE_PLAYVOICEMAIL MSGID(MSGAREA_UVBASE, 0x0009)
|
||||
#define XM_UVBASE_STOPVOICEMAIL MSGID(MSGAREA_UVBASE, 0x000A)
|
||||
#define XM_UVBASE_CLOSEVOICEMAIL MSGID(MSGAREA_UVBASE, 0x000B)
|
||||
#define XM_UVBASE_ENUMERATECHANNELS MSGID(MSGAREA_UVBASE, 0x000C)
|
||||
//
|
||||
// We reverse the RSHOULDER and LSHOULDER constants to be consistent with old
|
||||
// Xbox1 input that had the order BLACK then WHITE.
|
||||
//
|
||||
#define VK_PAD_XE 0x5808
|
||||
#define VK_PAD_BINDING 0x5809
|
||||
//
|
||||
// Combination codes reserved by XUI input processing.
|
||||
// Do not define conflicting public values.
|
||||
//
|
||||
// #define VK_PAD_A_OR_START 0x5840
|
||||
// #define VK_PAD_B_OR_BACK 0x5841
|
||||
// #define VK_NONE 0x5842
|
||||
// ...
|
||||
// Reserved through 0x584F
|
||||
//
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Debug instrumentation
|
||||
//
|
||||
|
||||
XBOXAPI
|
||||
VOID
|
||||
WINAPI
|
||||
XamDbgSetOutputLevel(
|
||||
IN HXAMAPP hxamapp OPTIONAL,
|
||||
IN ULONG ulLevel
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
VOID
|
||||
WINAPI
|
||||
XamDbgSetBreakLevel(
|
||||
IN HXAMAPP hxamapp OPTIONAL,
|
||||
IN ULONG ulLevel
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
BOOL
|
||||
WINAPI
|
||||
XamDbgPrint(
|
||||
IN ULONG ulLevel,
|
||||
IN LPCSTR pszFormat,
|
||||
...
|
||||
);
|
||||
typedef struct _TESTXEXMESSAGE
|
||||
{
|
||||
HXAMAPP hxamapp;
|
||||
DWORD dwMessage;
|
||||
UINT_PTR pParam1;
|
||||
UINT_PTR pParam2;
|
||||
HRESULT hr;
|
||||
} TESTXEXMESSAGE, *PTESTXEXMESSAGE;
|
||||
|
||||
typedef struct _TESTXEXXUILOCK
|
||||
{
|
||||
BOOL fWait;
|
||||
DWORD dwTime;
|
||||
} TESTXEXXUILOCK, *PTESTXEXXUILOCK;
|
||||
|
||||
typedef struct _TESTXEXSYSINFO
|
||||
{
|
||||
DWORD dwBuildVer;
|
||||
DWORD dwBuildFlags;
|
||||
DWORD dwHardwareVer;
|
||||
} TESTXEXSYSINFO, *PTESTXEXSYSINFO;
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XamSetAutomation(
|
||||
IN BOOL fAutomation
|
||||
);
|
||||
|
||||
#ifndef XUIElementPropVal
|
||||
typedef struct XUIElementPropVal XUIElementPropVal;
|
||||
#endif
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamApplySkin(
|
||||
IN DWORD dwUserIndex,
|
||||
IN LPCSTR pszSkinModule, OPTIONAL
|
||||
IN CONST XUIElementPropVal* pPropBkgnd OPTIONAL
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamGetBkgndDefault(
|
||||
OUT XUIElementPropVal* pPropBkgnd
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamGetDefaultSystemImage(
|
||||
OUT PBYTE* ppbImage,
|
||||
OUT PDWORD pcbImage OPTIONAL
|
||||
);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
XAM_DEFAULT_IMAGE_SYSTEM = 0,
|
||||
XAM_DEFAULT_IMAGE_DASHICON = 1,
|
||||
|
||||
XAM_DEFAULT_IMAGE_ID_COUNT = 2
|
||||
} XAM_DEFAULT_IMAGE_ID;
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamGetDefaultImage(
|
||||
IN XAM_DEFAULT_IMAGE_ID dwImageId,
|
||||
OUT PBYTE* ppbImage,
|
||||
OUT PDWORD pcbImage OPTIONAL
|
||||
);
|
||||
|
||||
#ifndef HXUIBRUSH
|
||||
typedef struct _XUIBRUSH* HXUIBRUSH;
|
||||
#endif
|
||||
|
||||
VOID
|
||||
XamSendMessageToLoadedApps(
|
||||
IN DWORD dwMessage,
|
||||
IN UINT_PTR pParam1,
|
||||
IN UINT_PTR pParam2
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamFormatMessage(
|
||||
OUT LPWSTR pszOut,
|
||||
IN DWORD cchOut,
|
||||
IN LPCWSTR pszTemplate,
|
||||
...
|
||||
);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
XAMDATEFORMAT_dMyyyy = 0,
|
||||
XAMDATEFORMAT_dMMyyyy,
|
||||
XAMDATEFORMAT_ddMMyyyy,
|
||||
XAMDATEFORMAT_Mdyyyy,
|
||||
XAMDATEFORMAT_yyyyMd,
|
||||
XAMDATEFORMAT_yyyyMMdd,
|
||||
XAMDATEFORMAT_MMyy,
|
||||
} XAMDATEFORMAT;
|
||||
|
||||
XAMDATEFORMAT XamGetLocaleDateFormat(
|
||||
IN DWORD dwCountry
|
||||
);
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XamFormatTimeString(
|
||||
IN DWORD dwUserIndex,
|
||||
IN FILETIME ft,
|
||||
OUT LPWSTR pszBuff,
|
||||
IN ULONG cchBuff
|
||||
);
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XamFormatDateString(
|
||||
IN DWORD dwUserIndex,
|
||||
IN FILETIME ft,
|
||||
OUT LPWSTR pszBuff,
|
||||
IN ULONG cchBuff
|
||||
);
|
||||
|
||||
INT
|
||||
WINAPI
|
||||
XamUniSortCmpString(
|
||||
LPCWSTR pszString1,
|
||||
LPCWSTR pszString2,
|
||||
UINT nMaxLen
|
||||
);
|
||||
|
||||
#ifndef HXUIOBJ
|
||||
typedef struct _XUIOBJ* HXUIOBJ;
|
||||
#endif
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamGetRootObj(
|
||||
OUT HXUIOBJ* phRootObj
|
||||
);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
XHUDOPENSTATE_NONE = 0,
|
||||
XHUDOPENSTATE_HALF,
|
||||
XHUDOPENSTATE_FULL,
|
||||
XHUDOPENSTATE_ERROR,
|
||||
//-----------------
|
||||
XHUDOPENSTATE_COUNT
|
||||
} XHUDOPENSTATE, *PXHUDOPENSTATE;
|
||||
|
||||
typedef VOID (CALLBACK *PFNMSGBOXRETURN)(
|
||||
IN INT iButtonPressed,
|
||||
OUT PXHUDOPENSTATE pHudRestoreState
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamShowMessageBox(
|
||||
IN OPTIONAL HXUIOBJ hOwner, // HXUIOBJ to be notified on Completion. (optional)
|
||||
IN LPCWSTR pszTitle, // Title text.
|
||||
IN LPCWSTR pszText, // Message text.
|
||||
IN DWORD cButtons, // Count of buttons in rgButtons.
|
||||
IN LPCWSTR* rgButtons, // Array of text strings for buttons.
|
||||
IN DWORD dwFocusButton, // Set focus to a button with this index,
|
||||
IN OPTIONAL PFNMSGBOXRETURN pfnMsgBoxReturn, // Callback function called on Completion. (optional)
|
||||
IN DWORD dwFlags // Flags
|
||||
);
|
||||
|
||||
#define MAX_RESOURCE_PATH 128
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamBuildResourceLocator(
|
||||
IN OPTIONAL HINSTANCE hInstance, // HINSTANCE of the module from which to load resources.
|
||||
IN LPCWSTR pszContainer, // Resource container name (i.e. section name or package name)
|
||||
IN OPTIONAL LPCWSTR pszResource, // Resource name
|
||||
OUT LPWSTR pszResourceLocator, // Sting buffer to recieve the locator string.
|
||||
IN DWORD cchResourceLocator // Count of characters in pszResourceLocator.
|
||||
);
|
||||
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamBuildSharedSystemResourceLocator(
|
||||
IN LPCWSTR pszResource, // Resource name
|
||||
OUT LPWSTR pszResourceLocator, // Sting buffer to recieve the locator string.
|
||||
IN DWORD cchResourceLocator // Count of characters in pszResourceLocator.
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamBuildGamercardResourceLocator(
|
||||
IN LPCWSTR pszResource, // Resource name
|
||||
OUT LPWSTR pszResourceLocator, // Sting buffer to recieve the locator string.
|
||||
IN DWORD cchResourceLocator // Count of characters in pszResourceLocator.
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamBuildDynamicResourceLocator(
|
||||
IN DWORD dwAppId, // Unique application id
|
||||
IN OPTIONAL HINSTANCE hInstance, // HINSTANCE of the module from which to load resources.
|
||||
IN LPCWSTR pszContainer, // Resource container name (i.e. section name or package name)
|
||||
IN OPTIONAL LPCWSTR pszResource, // Resource name
|
||||
OUT LPWSTR pszResourceLocator, // Sting buffer to recieve the locator string.
|
||||
IN DWORD cchResourceLocator // Count of characters in pszResourceLocator.
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamCustomSetBannerImage(
|
||||
IN const VOID * pvTexture,
|
||||
IN const VOID * pvBits,
|
||||
IN DWORD dwFlags
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XAutomationpBindController(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XAutomationpUnbindController(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XAutomationpInputXenonButton(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XAutomationpInputSetState(
|
||||
IN DWORD dwUserIndex,
|
||||
IN PXINPUT_GAMEPAD pXGamepad
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XAutomationpInputPress(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwVkey
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XamEnableOverdraw(
|
||||
IN BOOL fEnable
|
||||
);
|
||||
|
||||
#define XAMINLINE FORCEINLINE
|
||||
|
||||
//
|
||||
// Crt initialization for system apps
|
||||
//
|
||||
BOOL WINAPI _CrtInit();
|
||||
VOID WINAPI _CrtTerm();
|
||||
BOOL WINAPI _CrtThreadInit();
|
||||
VOID WINAPI _CrtThreadTerm();
|
||||
|
||||
//
|
||||
// XamApp SPIs
|
||||
//
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamNavigate(
|
||||
IN DWORD dwUserIndex,
|
||||
IN LPCSTR pszShortcut,
|
||||
IN ULONGLONG qwParam1,
|
||||
IN DWORD dwParam2
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XamAppRequestLoad(
|
||||
VOID
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XamAppRequestLoadEx(
|
||||
XHUDOPENSTATE OpenState
|
||||
);
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XamAppUnrequestLoad(
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamAppUnloadStack(
|
||||
IN BOOL fWaitForCompletion // specified whether the call should block until the app stack is fully unloaded
|
||||
);
|
||||
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamAppLoad(
|
||||
IN LPCSTR pszSysApp,
|
||||
IN DWORD dwUserIndex, // user index from which the app will accept input.
|
||||
IN PVOID pvAppParams OPTIONAL, // params that will be passed to the app as the first param of XM_SET_PARAMS
|
||||
IN DWORD cbAppParams OPTIONAL, // size of data pointed to by pvAppParams
|
||||
IN PXOVERLAPPED pxoverlapped OPTIONAL, // xoverlapped struct to signal when the operation is completed
|
||||
OUT PHXAMAPP phxamapp OPTIONAL
|
||||
);
|
||||
|
||||
void
|
||||
WINAPI
|
||||
XamAppUnloadSelf();
|
||||
|
||||
#define XSYSLOADINPUT_NONE 0x00000000
|
||||
#define XSYSLOADINPUT_FIRSTLOAD 0x00000001
|
||||
#define XSYSLOADINPUT_RELOAD 0x00000002
|
||||
|
||||
typedef struct _XSYSLOADINPUT
|
||||
{
|
||||
DWORD dwFlags; // See XSYSLOADINPUT_*
|
||||
PVOID pvParam;
|
||||
HINSTANCE hInstance;
|
||||
DWORD dwUserIndex;
|
||||
} XSYSLOADINPUT, *PXSYSLOADINPUT;
|
||||
|
||||
typedef struct _XSYSLOADOUTPUT
|
||||
{
|
||||
DWORD cbPersist;
|
||||
} XSYSLOADOUTPUT;
|
||||
|
||||
//
|
||||
// XM_SYS_STORAGEDEVICECHANGE
|
||||
//
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DEVICESTATE_NONE = 0,
|
||||
DEVICESTATE_ADD,
|
||||
DEVICESTATE_REMOVE,
|
||||
DEVICESTATE_IDLE,
|
||||
DEVICESTATE_UNFORMATTED,
|
||||
DEVICESTATE_IGNORE,
|
||||
DEVICESTATE_FORCE_DWORD = 0xFFFFFFFF
|
||||
} DEVICESTATE;
|
||||
|
||||
typedef struct XSTORAGEDEVICECHANGE_PARAMS
|
||||
{
|
||||
CHAR szDevicePath[MAX_PATH];
|
||||
BOOL fRemoved;
|
||||
DWORD deviceType;
|
||||
DWORD deviceId;
|
||||
DEVICESTATE eState;
|
||||
} XSTORAGEDEVICECHANGE_PARAMS, *PXSTORAGEDEVICECHANGE_PARAMS;
|
||||
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamRegisterSysApp(
|
||||
IN HINSTANCE hInstance,
|
||||
IN HXAMAPP hXamApp,
|
||||
IN PMESSAGEPROC pfnMessageProc,
|
||||
IN DWORD dwAppId
|
||||
);
|
||||
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUnregisterSysApp(
|
||||
IN HINSTANCE hInstance,
|
||||
IN HXAMAPP hXamApp,
|
||||
IN DWORD dwAppId
|
||||
);
|
||||
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
XCODEC_TYPE_AAC = 0,
|
||||
//-----------------
|
||||
XCODEC_TYPE_COUNT
|
||||
} XCODEC_TYPE, *PXCODEC_TYPE;
|
||||
|
||||
#define XCODEC_TYPE_AAC_TITLE_ID 0xFFFE07DF
|
||||
#define XCODEC_TYPE_AAC_CONTENTTYPE XCONTENTTYPE_MARKETPLACE
|
||||
|
||||
typedef
|
||||
PVOID
|
||||
(*PFN_CREATE_CODEC_INSTANCE)();
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XMPRegisterCodec(
|
||||
IN XCODEC_TYPE xcodectype,
|
||||
IN PFN_CREATE_CODEC_INSTANCE pfnCreateCodec
|
||||
);
|
||||
|
||||
PFN_CREATE_CODEC_INSTANCE
|
||||
XMPGetCodecCreationFunction(
|
||||
IN XCODEC_TYPE xcodectype
|
||||
);
|
||||
|
||||
|
||||
|
||||
DECLSPEC_NORETURN
|
||||
VOID
|
||||
XamTerminateTitle(
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// XAM Scheduler
|
||||
//------------------------------------------------------------------------------
|
||||
typedef HRESULT (WINAPI *PXAMTASKPROC)(
|
||||
IN PVOID pvParam
|
||||
);
|
||||
|
||||
typedef PVOID HXAMTASK, *PHXAMTASK;
|
||||
typedef PVOID HXAMTASKQUEUE, *PHXAMTASKQUEUE;
|
||||
typedef PVOID HXAMTASKOBJ, *PHXAMTASKOBJ; // Generic handle, either XAMTASK or XAMTASKQUEUE
|
||||
|
||||
// Type of task
|
||||
#define XAMPROPERTY_TYPE_WAIT 0x00000001 // waits on a kernel handle and calls taskproc when signaled
|
||||
#define XAMPROPERTY_TYPE_DEDICATED 0x00000002 // dedicated thread, will do work and exit
|
||||
#define XAMPROPERTY_TYPE_POOLED 0x00000004 // reuse some kind of thread pool
|
||||
#define XAMPROPERTY_TYPE_PERIODIC 0x00000008 // reuse some kind of thread pool, run at regular intervals
|
||||
#define XAMPROPERTY_TYPE_UI 0x00000010
|
||||
#define _XAMPROPERTY_TYPE_MASK_ 0x0000001F
|
||||
|
||||
// When this task wakes up and does processing
|
||||
#define XAMPROPERTY_WAKEUP_IO 0x00000100 // burst of CPU usage but mostly waiting on I/O
|
||||
#define XAMPROPERTY_WAKEUP_NETWORK 0x00000200 // burst of CPU usage but mostly waiting on N/W
|
||||
#define XAMPROPERTY_WAKEUP_OFTENWAIT 0x00000400 // calling WaitFor*Object* often
|
||||
#define _XAMPROPERTY_WAKEUP_MASK_ 0x00000700
|
||||
|
||||
// Task CPU usage
|
||||
#define XAMPROPERTY_CPUUSAGE_LO 0x00001000 // e.g.: waiting and processing notifications
|
||||
#define XAMPROPERTY_CPUUSAGE_HI 0x00002000 // e.g.: CODEC, encrypting, animations?
|
||||
#define _XAMPROPERTY_CPUUSAGE_MASK_ 0x00003000
|
||||
|
||||
// Duration
|
||||
#define XAMPROPERTY_DURATION_VERYSHORT 0x00010000
|
||||
#define XAMPROPERTY_DURATION_SHORT 0x00020000
|
||||
#define XAMPROPERTY_DURATION_LONG 0x00040000
|
||||
// 0x00080000 // Taken below
|
||||
#define _XAMPROPERTY_DURATION_MASK_ 0x00070000
|
||||
|
||||
// Priority
|
||||
#define XAMPROPERTY_PRI_LO 0x00100000
|
||||
#define XAMPROPERTY_PRI_NORMAL 0x00200000
|
||||
#define XAMPROPERTY_PRI_HI 0x00400000
|
||||
#define XAMPROPERTY_PRI_BACKGROUND 0x00800000
|
||||
#define XAMPROPERTY_PRI_FOREGROUND 0x00080000
|
||||
#define _XAMPROPERTY_PRI_LOHIMASK_ 0x00700000
|
||||
#define _XAMPROPERTY_PRI_XGROUNDMASK_ 0x00880000
|
||||
#define _XAMPROPERTY_PRI_MASK_ 0x00F80000
|
||||
|
||||
// Misc
|
||||
#define XAMPROPERTY_MISC_FIREONCE 0x01000000
|
||||
#define XAMPROPERTY_MISC_ONTITLEBEHALF 0x02000000
|
||||
#define XAMPROPERTY_MISC_ONSYSTEMBEHALF 0x04000000
|
||||
#define XAMPROPERTY_MISC_WAITONHANDLE 0x08000000 // By default, we expect a waitable kernel object (e.g. KEVENT)
|
||||
#define XAMPROPERTY_MISC_SERIALQUEUE 0x10000000 // hxamtaskqueue needs to be set
|
||||
#define XAMPROPERTY_MISC_FORCE_GROUND 0x20000000 // forces _XAMPROPERTY_PRI_XGROUNDMASK_ to be followed. Do not use this except in extreme cases!
|
||||
|
||||
#define _XAMPROPERTY_MISC_BEHALFMASK_ 0x06000000
|
||||
#define _XAMPROPERTY_MISC_MASK_ 0x1F000000
|
||||
|
||||
typedef struct _XAMTASKATTRIBUTES
|
||||
{
|
||||
DWORD dwProperties; // Zero or more XAMPROPERTY_*
|
||||
|
||||
union
|
||||
{
|
||||
// mandatory for XAMPROPERTY_TYPE_PERIODIC
|
||||
DWORD dwPeriod; // Period in millisec, only for XAMPROPERTY_TYPE_PERIODIC
|
||||
|
||||
// mandatory to have one of these for XAMPROPERTY_TYPE_WAIT
|
||||
PVOID pvWaitable; // Pointer to waitable kernel object, e.g.: KEVENT
|
||||
HANDLE hWaitable; // (1) HANDLE to waitable object, requires XAMPROPERTY_MISC_WAITONHANDLE
|
||||
// (2) Make sure to DuplicateHandle it! CloseHandle will automatically
|
||||
// get called on it when the task is deleted.
|
||||
// (3) If using this rather than hWaitable, then the task scheduling can
|
||||
// fail if the HANDLE is invalid. That would be a caller error.
|
||||
// (4) The HANDLE needs to be a system process HANDLE.
|
||||
|
||||
// optionally for XAMPROPERTY_TYPE_POOLED (which is mutually exclusive with XAMPROPERTY_TYPE_WAIT)
|
||||
HXAMTASKQUEUE hxamtaskqueue;
|
||||
};
|
||||
} XAMTASKATTRIBUTES, *PXAMTASKATTRIBUTES;
|
||||
|
||||
HRESULT
|
||||
XamTaskSchedule(
|
||||
IN PXAMTASKPROC pxamtaskproc,
|
||||
IN PVOID pvParam,
|
||||
IN PXAMTASKATTRIBUTES pxamtaskattribs OPTIONAL, // If NULL, default properties will be used
|
||||
OUT PHXAMTASK phxamtask
|
||||
);
|
||||
|
||||
// Usage
|
||||
// Create a task using XamTaskCreate, can fail if out of memory
|
||||
// Modify it using XamTaskModify, this cannot fail
|
||||
// Schedule it using XamTaskReschedule, this cannot fail
|
||||
HRESULT
|
||||
XamTaskCreate(
|
||||
OUT PHXAMTASK phxamtask
|
||||
);
|
||||
|
||||
VOID
|
||||
XamTaskReschedule(
|
||||
IN HXAMTASK hxamtask
|
||||
);
|
||||
|
||||
HRESULT
|
||||
XamTaskSchedulerInitialize(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
XamTaskCloseHandle(
|
||||
IN HXAMTASKOBJ hxamtaskobj
|
||||
);
|
||||
|
||||
VOID
|
||||
XamTaskCancel(
|
||||
IN HXAMTASK hxamtask
|
||||
);
|
||||
|
||||
// Wait for task to be "done" or "cancelled"
|
||||
VOID
|
||||
XamTaskWaitOnCompletion(
|
||||
IN HXAMTASK hxamtask
|
||||
);
|
||||
|
||||
// S_OK: completed
|
||||
// E_PENDING: not completed
|
||||
HRESULT
|
||||
XamTaskGetStatus(
|
||||
IN HXAMTASK hxamtask
|
||||
);
|
||||
|
||||
BOOL
|
||||
XamTaskShouldExit(
|
||||
VOID
|
||||
);
|
||||
|
||||
#define XAMTASKMODIFY_NONE 0x00000000
|
||||
#define XAMTASKMODIFY_TASKPROC 0x00000001
|
||||
#define XAMTASKMODIFY_PVPARAM 0x00000002
|
||||
#define XAMTASKMODIFY_ATTRIBUTES 0x00000004
|
||||
|
||||
VOID
|
||||
XamTaskModify(
|
||||
IN HXAMTASK hxamtask,
|
||||
IN DWORD dwFlags,
|
||||
IN PXAMTASKPROC pxamtaskproc,
|
||||
IN PVOID pvParam,
|
||||
IN PXAMTASKATTRIBUTES pxamtaskattribs
|
||||
);
|
||||
|
||||
VOID
|
||||
XamTaskActivateXenonButtonHandler(
|
||||
IN DWORD dwPortInput
|
||||
);
|
||||
|
||||
HXAMTASK
|
||||
XamTaskGetCurrentTask(
|
||||
VOID
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamTaskQueryProperty(
|
||||
IN HXAMTASK hxamtask,
|
||||
IN DWORD dwPropertyMask
|
||||
);
|
||||
|
||||
HRESULT
|
||||
XamTaskGetAttributes(
|
||||
IN HXAMTASK hxamtask,
|
||||
IN OUT PXAMTASKATTRIBUTES pxamtaskattribs
|
||||
);
|
||||
|
||||
HRESULT
|
||||
XamTaskGetWaitableObject(
|
||||
IN HXAMTASK hxamtask,
|
||||
OUT PHANDLE ph
|
||||
);
|
||||
|
||||
HRESULT
|
||||
XamTaskCreateQueue(
|
||||
OUT PHXAMTASKQUEUE phxamtaskqueue
|
||||
);
|
||||
|
||||
HRESULT
|
||||
XamTaskGetCompletionStatus(
|
||||
IN HXAMTASK hxamtask
|
||||
);
|
||||
|
||||
// Not XamTask function, but close enough
|
||||
BOOL
|
||||
XamExecutingOnBehalfOfTitle(
|
||||
VOID
|
||||
);
|
||||
|
||||
#define XNFLAG_INTERNAL (0x80000000)
|
||||
#define XNMASK_AREA (0x7e000000)
|
||||
#define XNMASK_VERSION (0x01FF0000)
|
||||
#define XNID_INTERNAL(Version, Area, Index)(DWORD)(XNID(Version, Area, Index) | XNFLAG_INTERNAL)
|
||||
|
||||
//
|
||||
// This version number needs to be bumped up each time we add a notification
|
||||
// after a final release. When a game links to an xdk, this version number
|
||||
// is linked into the game and only notifications with version less than or
|
||||
// equal to XNID_CURRENTVERSION will be send to the title. This scheme will
|
||||
// help keep new notitifications from breaking existing titles.
|
||||
//
|
||||
#define XNID_CURRENTVERSION (0)
|
||||
#define XNOTIFY_FEEDBACK (0x00000010)
|
||||
#define _XNAREA_FEEDBACK (4)
|
||||
#define XN_SYS_TITLELOAD XNID_INTERNAL(0, _XNAREA_SYSTEM, 0x0001)
|
||||
#define XN_SYS_TIMEZONE XNID_INTERNAL(0, _XNAREA_SYSTEM, 0x0002)
|
||||
#define XN_SYS_LANGUAGE XNID_INTERNAL(0, _XNAREA_SYSTEM, 0x0003)
|
||||
#define XN_SYS_VIDEOFLAGS XNID_INTERNAL(0, _XNAREA_SYSTEM, 0x0004)
|
||||
#define XN_SYS_AUDIOFLAGS XNID_INTERNAL(0, _XNAREA_SYSTEM, 0x0005)
|
||||
#define XN_SYS_PARENTALCONTROLGAMES XNID_INTERNAL(0, _XNAREA_SYSTEM, 0x0006)
|
||||
#define XN_SYS_PARENTALCONTROLPASSWORD XNID_INTERNAL(0, _XNAREA_SYSTEM, 0x0007)
|
||||
#define XN_SYS_PARENTALCONTROLMOVIES XNID_INTERNAL(0, _XNAREA_SYSTEM, 0x0008)
|
||||
#define XN_SYS_DASHCONTEXTCHANGED XNID_INTERNAL(0, _XNAREA_SYSTEM, 0x000c)
|
||||
#define XN_SYS_DISCMEDIACHANGED XNID_INTERNAL(0, _XNAREA_SYSTEM, 0x000d)
|
||||
#define XN_SYS_THEMECHANGED XNID_INTERNAL(0, _XNAREA_SYSTEM, 0x000f)
|
||||
#define XN_SYS_SYSTEMUPDATECHANGED XNID_INTERNAL(0, _XNAREA_SYSTEM, 0x0010)
|
||||
#define XN_LIVE_INVITE_RECEIVED XNID_INTERNAL(0, _XNAREA_LIVE, 0x0004)
|
||||
#define XN_LIVE_INVITE_ANSWER_RECEIVED XNID_INTERNAL(0, _XNAREA_LIVE, 0x0005)
|
||||
#define XN_LIVE_MESSAGE_LIST_CHANGED XNID_INTERNAL(0, _XNAREA_LIVE, 0x0006)
|
||||
#define XN_LIVE_POINTS_BALANCE_CHANGED XNID_INTERNAL(0, _XNAREA_LIVE, 0x000B)
|
||||
#define XN_LIVE_PLAYERSLIST_CHANGED XNID_INTERNAL(0, _XNAREA_LIVE, 0x000C)
|
||||
#define XN_LIVE_ITEM_PURCHASED XNID_INTERNAL(0, _XNAREA_LIVE, 0x000D)
|
||||
#define XN_FRIENDS_REQUEST_RECEIVED XNID_INTERNAL(0, _XNAREA_FRIENDS, 0x0004)
|
||||
#define XN_FRIENDS_ANSWER_RECEIVED XNID_INTERNAL(0, _XNAREA_FRIENDS, 0x0005)
|
||||
#define XN_FRIENDS_REQUEST_RESULT XNID_INTERNAL(0, _XNAREA_FRIENDS, 0x0006)
|
||||
|
||||
//
|
||||
// Feedback notifications
|
||||
//
|
||||
|
||||
#define XN_FEEDBACK_FIRST XNID(0, _XNAREA_FEEDBACK, 0x0001)
|
||||
#define XN_FEEDBACK_COMPLAINT_SENT XNID_INTERNAL(0, _XNAREA_FEEDBACK, 0x0001)
|
||||
#define XN_FEEDBACK_PR_SENT XNID_INTERNAL(0, _XNAREA_FEEDBACK, 0x0002)
|
||||
#define XN_FEEDBACK_PR_CHANGED XNID_INTERNAL(0, _XNAREA_FEEDBACK, 0x0003)
|
||||
#define XN_FEEDBACK_LAST XNID(0, _XNAREA_FEEDBACK, 0x0004)
|
||||
|
||||
#define XN_XMP_MEDIASOURCECONNECTIONCHANGED XNID_INTERNAL(0, _XNAREA_XMP, 0x0004)
|
||||
#define XN_XMP_TITLEPLAYLISTCONTENTCHANGED XNID_INTERNAL(0, _XNAREA_XMP, 0x0005)
|
||||
#define XN_XMP_LOCALMEDIACONTENTCHANGED XNID_INTERNAL(0, _XNAREA_XMP, 0x0006)
|
||||
#define XN_XMP_DASHNOWPLAYINGQUEUEMODECHANGED XNID_INTERNAL(0, _XNAREA_XMP, 0x0007)
|
||||
HANDLE
|
||||
WINAPI
|
||||
XamNotifyCreateListener(
|
||||
IN ULONGLONG qwAreas,
|
||||
IN DWORD dwVersion
|
||||
);
|
||||
|
||||
HANDLE
|
||||
WINAPI
|
||||
XamNotifyCreateListenerInternal(
|
||||
IN ULONGLONG qwAreas,
|
||||
IN BOOL fReceiveInternalNotifications,
|
||||
IN DWORD dwVersion
|
||||
);
|
||||
|
||||
#define XNotifyCreateListenerInternal(qwAreas, fReceiveInternalNotifications) \
|
||||
XamNotifyCreateListenerInternal(qwAreas, fReceiveInternalNotifications, XNID_CURRENTVERSION)
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XNotifyBroadcast(
|
||||
IN DWORD dwNotificationId,
|
||||
IN ULONG_PTR param
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XNotifyRegisterArea(
|
||||
IN ULONGLONG qwArea,
|
||||
IN DWORD dwMinGlobalMessage,
|
||||
IN DWORD dwMaxGlobalMessage
|
||||
);
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XNotifyResetGlobalListener();
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XNotifyFreeTitleHandles();
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XNotifyFreeUIAppHandles();
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XNotifyTitleStartup();
|
||||
|
||||
|
||||
#define XNOTIFYUI_TYPE_FRIENDONLINE 0
|
||||
#define XNOTIFYUI_TYPE_GAMEINVITE 1
|
||||
#define XNOTIFYUI_TYPE_FRIENDREQUEST 2
|
||||
#define XNOTIFYUI_TYPE_GENERIC 3
|
||||
#define XNOTIFYUI_TYPE_MULTIPENDING 4
|
||||
#define XNOTIFYUI_TYPE_PERSONALMESSAGE 5
|
||||
#define XNOTIFYUI_TYPE_SIGNEDOUT 6
|
||||
#define XNOTIFYUI_TYPE_SIGNEDIN 7
|
||||
#define XNOTIFYUI_TYPE_SIGNEDINLIVE 8
|
||||
#define XNOTIFYUI_TYPE_SIGNEDINNEEDPASS 9
|
||||
#define XNOTIFYUI_TYPE_CHATREQUEST 10
|
||||
#define XNOTIFYUI_TYPE_CONNECTIONLOST 11
|
||||
#define XNOTIFYUI_TYPE_DOWNLOADCOMPLETE 12
|
||||
#define XNOTIFYUI_TYPE_SONGPLAYING 13
|
||||
#define XNOTIFYUI_TYPE_PREFERRED_REVIEW 14
|
||||
#define XNOTIFYUI_TYPE_AVOID_REVIEW 15
|
||||
#define XNOTIFYUI_TYPE_COMPLAINT 16
|
||||
#define XNOTIFYUI_TYPE_CHATCALLBACK 17
|
||||
#define XNOTIFYUI_TYPE_REMOVEDMU 18
|
||||
#define XNOTIFYUI_TYPE_REMOVEDGAMEPAD 19
|
||||
#define XNOTIFYUI_TYPE_CHATJOIN 20
|
||||
#define XNOTIFYUI_TYPE_CHATLEAVE 21
|
||||
#define XNOTIFYUI_TYPE_GAMEINVITESENT 22
|
||||
#define XNOTIFYUI_TYPE_CANCELPERSISTENT 23
|
||||
#define XNOTIFYUI_TYPE_CHATCALLBACKSENT 24
|
||||
#define XNOTIFYUI_TYPE_MULTIFRIENDONLINE 25
|
||||
#define XNOTIFYUI_TYPE_ONEFRIENDONLINE 26
|
||||
#define XNOTIFYUI_TYPE_ACHIEVEMENT 27
|
||||
#define XNOTIFYUI_TYPE_HYBRIDDISC 28
|
||||
#define XNOTIFYUI_TYPE_MAX 28
|
||||
|
||||
|
||||
#define XNOTIFYUI_PRIORITY_LOW 0
|
||||
#define XNOTIFYUI_PRIORITY_DEFAULT 1
|
||||
#define XNOTIFYUI_PRIORITY_HIGH 2
|
||||
#define XNOTIFYUI_PRIORITY_PERSISTENT 3
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XNotifyUISetOptions(
|
||||
BOOL fShow,
|
||||
BOOL fPlaySound
|
||||
);
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XNotifyUIGetOptions(
|
||||
BOOL* pfShow,
|
||||
BOOL* pfPlaySound
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamInputGetState(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwFlags,
|
||||
OUT PXINPUT_STATE pState
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamInputGetCapabilities(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwFlags,
|
||||
OUT PXINPUT_CAPABILITIES pCapabilities
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamInputSetState(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwFlags,
|
||||
IN PXINPUT_VIBRATION pVibration,
|
||||
IN BYTE bAmplitude OPTIONAL,
|
||||
IN BYTE bFrequency OPTIONAL,
|
||||
IN BYTE bOffset OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamInputGetDeviceStats(
|
||||
IN DWORD dwUserIndex,
|
||||
OUT PXINPUT_DEVICE_STATS pDeviceStats
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamInputGetKeystroke(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwFlags,
|
||||
OUT PXINPUT_KEYSTROKE pKeystroke
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamInputGetKeystrokeEx(
|
||||
IN OUT PDWORD pdwUserIndex,
|
||||
IN DWORD dwFlags,
|
||||
OUT PXINPUT_KEYSTROKE pKeystroke
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamInputGetKeystrokeHud(
|
||||
IN DWORD dwUserIndex,
|
||||
OUT PXINPUT_KEYSTROKE pKeystroke
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamInputSetLayoutKeyboard(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwLanguage
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamInputResetLayoutKeyboard(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
WORD
|
||||
WINAPI
|
||||
XamInputToggleKeyLocks(
|
||||
IN DWORD dwUserIndex,
|
||||
IN WORD wToggleMask
|
||||
);
|
||||
|
||||
VOID
|
||||
XamInputEnableAutobind(
|
||||
IN BOOL Enable
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamEnableSystemAppInput(
|
||||
IN DWORD dwUserIndex,
|
||||
IN BOOL Enable
|
||||
);
|
||||
|
||||
#define XDASHCONTEXT_NONE 0
|
||||
#define XDASHCONTEXT_TROUBLESHOOTER 1
|
||||
#define XDASHCONTEXT_ACCOUNTRECOVERY 2
|
||||
#define XDASHCONTEXT_OOBE 3
|
||||
|
||||
VOID
|
||||
XamSetDashContext(
|
||||
IN DWORD dwDashContext
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamGetDashContext(
|
||||
VOID
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamGetCurrentTitleId(
|
||||
VOID
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XamIsCurrentTitleDash(
|
||||
VOID
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
ULONG
|
||||
WINAPI
|
||||
XamGetSystemVersion(
|
||||
VOID
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
NTSTATUS
|
||||
WINAPI
|
||||
XamGetGameRatings(
|
||||
OUT PUCHAR* ppGameRatings,
|
||||
OUT PULONG pcGameRatings
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamGetWCNConfigFile(
|
||||
OUT LPSTR pszFile,
|
||||
IN DWORD cchFile
|
||||
);
|
||||
|
||||
DECLSPEC_NORETURN
|
||||
XBOXAPI
|
||||
VOID
|
||||
WINAPI
|
||||
XamLaunchNewImage(
|
||||
IN LPCSTR pszImagePath,
|
||||
IN DWORD dwFlags
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// XVoice APIs
|
||||
//------------------------------------------------------------------------------
|
||||
#ifdef __XVOICE_H__
|
||||
XBOXAPI
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamVoiceCreate(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwMaxAttachedPackets,
|
||||
OUT PXVOICE_HANDLE phHandle
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
BOOL
|
||||
WINAPI
|
||||
XamVoiceHeadsetPresent(
|
||||
IN XVOICE_HANDLE hObject
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamVoiceSubmitPacket(
|
||||
IN XVOICE_HANDLE hObject,
|
||||
IN BOOL fInput,
|
||||
IN OUT PXMEDIAPACKET Packet
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
BOOL
|
||||
WINAPI
|
||||
XamVoiceClose(
|
||||
IN XVOICE_HANDLE hObject
|
||||
);
|
||||
#endif __XVOICE_H__
|
||||
|
||||
#define XA_NONE 0x00000000
|
||||
#define XA_REVIEW 0x00000000 // Tag XamAlloc callswith
|
||||
// this if you're not sure
|
||||
// what flags to use
|
||||
#define XA_DEFAULT 0x00000000
|
||||
|
||||
// Type of memory
|
||||
#define XA_WORKSPACE 0x10000000
|
||||
#define XA_HEAP 0x20000000
|
||||
#define XA_PHYSICAL 0x40000000
|
||||
#define XA_XMP 0x80000000
|
||||
#define _XA_TYPE_MASK_ 0xF0000000
|
||||
|
||||
// Modifiers
|
||||
#define XA_PERMANENT 0x01000000
|
||||
#define XA_UIRUNTIME 0x02000000
|
||||
#define XA_CHARGESYSTEM 0x04000000
|
||||
#define XA_CHARGETITLE 0x08000000
|
||||
|
||||
// By default all allocations thru XamAlloc are zero'ed out, pass this flag in to
|
||||
// avoid that.
|
||||
#define XA_NOZEROMEMORY 0x00100000
|
||||
|
||||
// Internalto XamAlloc use only, do not use
|
||||
#define _XA_DEBUGHEAP_ 0x00010000
|
||||
|
||||
#define _XA_CHARGE_MASK_ 0x0C000000
|
||||
#define _XA_LIFETIME_MASK_ 0x03000000
|
||||
#define _XA_MODIFIER_MASK_ 0x0F100000
|
||||
|
||||
// Don't touch the _HXAMAPP_MASK_ values!
|
||||
//#define XA_DONTTOUCH_ _HXAMAPP_MASK_
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamAlloc(
|
||||
IN DWORD dwFlags,
|
||||
IN DWORD cb,
|
||||
OUT PVOID* ppv
|
||||
);
|
||||
|
||||
// Use only for physical allocs
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamAllocEx(
|
||||
IN DWORD dwFlagsEx,
|
||||
IN DWORD dwFlags,
|
||||
IN DWORD cb,
|
||||
OUT PVOID* ppv
|
||||
);
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XamFree(
|
||||
IN PVOID pv
|
||||
);
|
||||
|
||||
SIZE_T
|
||||
WINAPI
|
||||
XamAllocSize(
|
||||
IN PVOID pv
|
||||
);
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Session handle helpers
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamSessionCreateHandle(HANDLE* ph);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamSessionRefObjByHandle(HANDLE h, void** ppSessionStruct);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
DWORD
|
||||
XamGetOverlappedResult(
|
||||
IN PXOVERLAPPED lpXOverlapped,
|
||||
OUT LPDWORD pdwResult,
|
||||
IN BOOL bWait
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamGetOverlappedExtendedError(
|
||||
IN PXOVERLAPPED lpXOverlapped
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamEnumerate(
|
||||
IN HANDLE hEnum,
|
||||
IN DWORD dwFlags,
|
||||
IN PVOID pvBuffer,
|
||||
IN DWORD cbBuffer,
|
||||
OUT PDWORD pcItemsReturned OPTIONAL,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentCreate(
|
||||
IN DWORD dwUserIndex,
|
||||
IN LPCSTR pszRootName,
|
||||
IN CONST XCONTENT_DATA* pcd,
|
||||
IN DWORD dwContentFlags,
|
||||
OUT PDWORD pdwDisposition OPTIONAL,
|
||||
OUT PDWORD pdwLicenseMask OPTIONAL,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentCreateEx(
|
||||
IN DWORD dwUserIndex,
|
||||
IN LPCSTR pszRootName,
|
||||
IN CONST XCONTENT_DATA* pcd,
|
||||
IN DWORD dwContentFlags,
|
||||
OUT PDWORD pdwDisposition OPTIONAL,
|
||||
OUT PDWORD pdwLicenseMask OPTIONAL,
|
||||
IN DWORD dwFileCacheSize,
|
||||
IN ULARGE_INTEGER uliContentSize,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentCreateInternal(
|
||||
IN LPCSTR pszRootName,
|
||||
IN CONST XCONTENT_DATA_INTERNAL* pcdi,
|
||||
IN DWORD dwContentFlags,
|
||||
OUT PDWORD pdwDisposition OPTIONAL,
|
||||
OUT PDWORD pdwLicenseMask OPTIONAL,
|
||||
IN DWORD dwFileCacheSize,
|
||||
IN ULARGE_INTEGER uliContentSize,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentOpenFile(
|
||||
IN DWORD dwUserIndex,
|
||||
IN LPCSTR pszRootName,
|
||||
IN LPCSTR pszFileName,
|
||||
IN DWORD dwContentFlags,
|
||||
IN DWORD dwFileCacheSize,
|
||||
OUT PDWORD pdwLicenseMask OPTIONAL,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentOpenFileInternal(
|
||||
IN DWORD dwUserIndex,
|
||||
IN LPCSTR pszRootName,
|
||||
IN LPCSTR pszFileName,
|
||||
IN DWORD dwContentFlags,
|
||||
IN DWORD dwFileCacheSize,
|
||||
OUT PXCONTENT_DATA_INTERNAL pcdi OPTIONAL,
|
||||
OUT PDWORD pdwLicenseMask OPTIONAL,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentInstall(
|
||||
IN DWORD dwUserIndex,
|
||||
IN XCONTENTDEVICEID DeviceID,
|
||||
IN LPCSTR pszFileName,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentDelete(
|
||||
IN DWORD dwUserIndex,
|
||||
IN CONST XCONTENT_DATA* pcd,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentDeleteInternal(
|
||||
IN CONST XCONTENT_DATA_INTERNAL* pcdi,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
DWORD
|
||||
XamContentResolve(
|
||||
IN DWORD dwUserIndex,
|
||||
IN CONST XCONTENT_DATA* pcd,
|
||||
OUT LPSTR pszPath,
|
||||
IN DWORD cchPath,
|
||||
IN BOOL fCreateDir,
|
||||
IN LPCSTR pszRootName, OPTIONAL
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentResolveInternal(
|
||||
IN CONST XCONTENT_DATA_INTERNAL* pcdi,
|
||||
OUT LPSTR pszPath,
|
||||
IN DWORD cchPath,
|
||||
IN BOOL fCreateDir,
|
||||
IN LPCSTR pszRootName, OPTIONAL
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentGetAttributes(
|
||||
IN DWORD dwUserIndex,
|
||||
IN CONST XCONTENT_DATA* pcd,
|
||||
OUT LPWIN32_FILE_ATTRIBUTE_DATA pfad,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentGetAttributesInternal(
|
||||
IN CONST XCONTENT_DATA_INTERNAL* pcdi,
|
||||
OUT LPWIN32_FILE_ATTRIBUTE_DATA pfad,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentCopyInternal(
|
||||
IN CONST XUID* pXuidDst, OPTIONAL
|
||||
IN CONST XCONTENTDEVICEID* pDeviceIdDst, OPTIONAL
|
||||
IN CONST XCONTENT_DATA_INTERNAL* pcdi,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentMoveInternal(
|
||||
IN CONST XUID* pXuidDst, OPTIONAL
|
||||
IN CONST XCONTENTDEVICEID* pDeviceIdDst, OPTIONAL
|
||||
IN CONST XCONTENT_DATA_INTERNAL* pcdi,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
#define XCONTENT_COPYFLAG_NONE 0x00000000
|
||||
#define XCONTENT_COPYFLAG_DELETESOURCE 0x00000001
|
||||
#define XCONTENT_COPYFLAG_DEVICETRANSFER 0x00000002
|
||||
#define XCONTENT_COPYFLAG_PROFILETRANSFER 0x00000004
|
||||
|
||||
DWORD
|
||||
XamContentClose(
|
||||
IN LPCSTR pszRootName,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentFlush(
|
||||
IN LPCSTR pszRootName,
|
||||
IN PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentCreateEnumerator(
|
||||
IN DWORD dwUserIndex,
|
||||
IN XCONTENTDEVICEID DeviceID,
|
||||
IN DWORD dwContentType,
|
||||
IN DWORD dwContentFlags,
|
||||
IN DWORD cItem,
|
||||
OUT PDWORD pcbBuffer, OPTIONAL
|
||||
OUT PHANDLE phEnum
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentCreateEnumeratorInternal(
|
||||
IN XUID xuid,
|
||||
IN XCONTENTDEVICEID dwDeviceId,
|
||||
IN DWORD dwContentType,
|
||||
IN DWORD dwTitleId,
|
||||
IN DWORD dwContentFlags,
|
||||
IN DWORD cItem,
|
||||
OUT PDWORD pcbBuffer, OPTIONAL
|
||||
OUT PHANDLE phEnum
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentCreateDeviceEnumerator(
|
||||
IN DWORD dwContentTypes,
|
||||
IN DWORD dwFlags,
|
||||
IN DWORD cItem,
|
||||
OUT PDWORD pcbBuffer OPTIONAL,
|
||||
OUT PHANDLE phEnum
|
||||
);
|
||||
|
||||
|
||||
|
||||
#define COMMONUSER_XUID ((XUID) -1)
|
||||
|
||||
DWORD
|
||||
XamContentAggregateCreateEnumerator(
|
||||
IN XUID xuid,
|
||||
IN XCONTENTDEVICEID DeviceId,
|
||||
IN DWORD dwContentType,
|
||||
IN DWORD dwTitleId,
|
||||
OUT PHANDLE phEnum
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentGetDeviceState(
|
||||
IN XCONTENTDEVICEID DeviceID,
|
||||
IN OUT PXOVERLAPPED pOverlapped
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentGetDeviceData(
|
||||
IN XCONTENTDEVICEID DeviceID,
|
||||
OUT PXDEVICE_DATA pDeviceData
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentGetDeviceName(
|
||||
IN XCONTENTDEVICEID DeviceID,
|
||||
OUT LPWSTR pwszName,
|
||||
IN DWORD cchName
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentGetMetaDataInternal(
|
||||
IN CONST XCONTENT_DATA_INTERNAL* pcdi,
|
||||
OUT XCONTENT_METADATA* pContentMetaData,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentSetThumbnail(
|
||||
IN DWORD dwUserIndex,
|
||||
IN CONST XCONTENT_DATA* pcd,
|
||||
IN CONST BYTE* pbThumbnail,
|
||||
IN DWORD cbThumbnail,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentGetThumbnail(
|
||||
IN DWORD dwUserIndex,
|
||||
IN CONST XCONTENT_DATA* pContentData,
|
||||
OUT PBYTE pbThumbnail, OPTIONAL
|
||||
IN OUT PDWORD pcbThumbnail,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentGetCreator(
|
||||
IN DWORD dwUserIndex,
|
||||
IN CONST XCONTENT_DATA* pContentData,
|
||||
OUT BOOL* pfUserIsCreator,
|
||||
OUT PXUID pxuid, OPTIONAL
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentSetThumbnailInternal(
|
||||
IN CONST XCONTENT_DATA_INTERNAL* pcdi,
|
||||
IN CONST BYTE* pbThumbnail,
|
||||
IN DWORD cbThumbnail,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentGetLicenseMask(
|
||||
OUT DWORD* pdwLicenseMask,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
#define XCONTENT_PACKAGE_FS_DEVICE_PREFIX "\\Device\\Package_"
|
||||
#define XCONTENT_MAX_PACKAGE_FS_DEVICE_NAME 64
|
||||
|
||||
#define XCONTENT_PKGFLAG_KEEP_OPEN_ON_TITLE_TERMINATE 0x00000001
|
||||
#define XCONTENT_PKGFLAG_DONT_UPDATE_DIGESTS_ON_CLOSE 0x00000002
|
||||
|
||||
#define COMMON_XCONTENT_PKGFLAGS (XCONTENT_PKGFLAG_KEEP_OPEN_ON_TITLE_TERMINATE | \
|
||||
XCONTENT_PKGFLAG_DONT_UPDATE_DIGESTS_ON_CLOSE)
|
||||
|
||||
typedef struct _XCONTENT_MOUNTED_PACKAGE
|
||||
{
|
||||
PVOID pvFsDeviceObject;
|
||||
PVOID pvFsBlockCache;
|
||||
LIST_ENTRY leMountedPackages;
|
||||
DWORD dwFlags;
|
||||
HANDLE hPackageFile;
|
||||
DWORD dwOpenRefCount;
|
||||
RTL_CRITICAL_SECTION csHeaderLock;
|
||||
XCONTENT_HEADER ContentHeader;
|
||||
XCONTENT_METADATA ContentMetaData;
|
||||
PBYTE pbOtherMetaData;
|
||||
DWORD dwOtherMetaDataSize;
|
||||
XCONTENTDEVICEID DeviceIDLocked;
|
||||
CHAR szFsDeviceName[XCONTENT_MAX_PACKAGE_FS_DEVICE_NAME];
|
||||
CHAR szPackageFilePath[MAX_PATH];
|
||||
} XCONTENT_MOUNTED_PACKAGE, *PXCONTENT_MOUNTED_PACKAGE;
|
||||
|
||||
#define XCONTENT_CREATEPKG_KEEP_OPEN_ON_TITLE_TERMINATE XCONTENT_PKGFLAG_KEEP_OPEN_ON_TITLE_TERMINATE
|
||||
#define XCONTENT_CREATEPKG_DONT_UPDATE_DIGESTS_ON_CLOSE XCONTENT_PKGFLAG_DONT_UPDATE_DIGESTS_ON_CLOSE
|
||||
#define XCONTENT_CREATEPKG_OVERWRITE 0x00010000
|
||||
|
||||
#define VALID_XCONTENT_CREATEPKG_FLAGS (XCONTENT_CREATEPKG_KEEP_OPEN_ON_TITLE_TERMINATE | \
|
||||
XCONTENT_CREATEPKG_DONT_UPDATE_DIGESTS_ON_CLOSE | \
|
||||
XCONTENT_CREATEPKG_OVERWRITE)
|
||||
|
||||
DWORD
|
||||
XamContentCreateAndMountPackage(
|
||||
IN LPCSTR szPackagePath,
|
||||
IN HANDLE hFileToUse OPTIONAL,
|
||||
IN CONST XCONTENT_METADATA* pMetaData,
|
||||
IN CONST BYTE* pbOtherMetaData OPTIONAL,
|
||||
IN DWORD dwOtherMetaDataSize,
|
||||
IN DWORD dwFlags,
|
||||
IN XCONTENTDEVICEID DeviceIDToLock,
|
||||
OUT PXCONTENT_MOUNTED_PACKAGE* ppMountedPackage
|
||||
);
|
||||
|
||||
#define XCONTENT_OPENPKG_DONT_VERIFY_SIGNATURE 0x00010000
|
||||
#define XCONTENT_OPENPKG_COPY_EXISTING_HANDLE 0x00020000
|
||||
|
||||
#define VALID_XCONTENT_OPENPKG_FLAGS (XCONTENT_OPENPKG_DONT_VERIFY_SIGNATURE | \
|
||||
XCONTENT_OPENPKG_COPY_EXISTING_HANDLE)
|
||||
|
||||
DWORD
|
||||
XamContentOpenPackageFile(
|
||||
IN LPCSTR szPackagePath,
|
||||
IN DWORD dwContentType,
|
||||
IN DWORD dwFlags,
|
||||
OUT HANDLE * phPackageFile,
|
||||
OUT PXCONTENT_MOUNTED_PACKAGE* ppExistingMountedPackage,
|
||||
OUT XCONTENT_HEADER * pContentHeader,
|
||||
OUT XCONTENT_METADATA * pContentMetaData,
|
||||
OUT BYTE * pbOtherMetaData OPTIONAL,
|
||||
IN OUT DWORD * pdwOtherMetaDataSize OPTIONAL
|
||||
);
|
||||
|
||||
#define XCONTENT_MOUNTPKG_KEEP_OPEN_ON_TITLE_TERMINATE XCONTENT_PKGFLAG_KEEP_OPEN_ON_TITLE_TERMINATE
|
||||
#define XCONTENT_MOUNTPKG_DONT_UPDATE_DIGESTS_ON_CLOSE XCONTENT_PKGFLAG_DONT_UPDATE_DIGESTS_ON_CLOSE
|
||||
|
||||
#define VALID_XCONTENT_MOUNTPKG_FLAGS (XCONTENT_MOUNTPKG_KEEP_OPEN_ON_TITLE_TERMINATE | \
|
||||
XCONTENT_MOUNTPKG_DONT_UPDATE_DIGESTS_ON_CLOSE)
|
||||
|
||||
DWORD
|
||||
XamContentMountPackage(
|
||||
IN HANDLE hPackageFile,
|
||||
IN LPCSTR szPackagePath,
|
||||
IN const XCONTENT_HEADER * pContentHeader,
|
||||
IN const XCONTENT_METADATA * pContentMetaData,
|
||||
IN const BYTE * pbOtherMetaData OPTIONAL,
|
||||
IN DWORD dwOtherMetaDataSize,
|
||||
IN DWORD dwFlags,
|
||||
IN XCONTENTDEVICEID DeviceIDToLock,
|
||||
OUT PXCONTENT_MOUNTED_PACKAGE * ppMountedPackage
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentWritePackageHeader(
|
||||
IN XCONTENT_MOUNTED_PACKAGE * pMountedPackage
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentFlushPackage(
|
||||
IN XCONTENT_MOUNTED_PACKAGE * pMountedPackage
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentDismountAndClosePackage(
|
||||
IN XCONTENT_MOUNTED_PACKAGE * pMountedPackage
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentClosePackageFile(
|
||||
IN HANDLE hPackageFile
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentLockUnlockPackageHeaders(
|
||||
IN XCONTENT_MOUNTED_PACKAGE * pMountedPackage,
|
||||
IN BOOL fLock
|
||||
);
|
||||
|
||||
DWORD
|
||||
XamContentEstimatePackageSize(
|
||||
IN DWORD cbContentSize
|
||||
);
|
||||
|
||||
#define XamContentReferencePackage(pkg) ObReferenceObject((pkg)->pvFsDeviceObject)
|
||||
#define XamContentDereferencePackage(pkg) ObDereferenceObject((pkg)->pvFsDeviceObject)
|
||||
#define XamContentSetPackageFlags(pkg, flags) ((DWORD) InterlockedOr((LONG*) (&(pkg)->dwFlags), (LONG) (flags)))
|
||||
#define XamContentClearPackageFlags(pkg, flags) ((DWORD) InterlockedAnd((LONG*) (&(pkg)->dwFlags), (LONG) (~(flags))))
|
||||
|
||||
|
||||
DWORD
|
||||
XamContentLaunchImage(
|
||||
IN DWORD dwUserIndex,
|
||||
IN CONST XCONTENT_DATA* pContentData,
|
||||
IN LPCSTR pszImagePath
|
||||
);
|
||||
|
||||
|
||||
DWORD
|
||||
XamContentLaunchImageInternal(
|
||||
IN CONST XCONTENT_DATA_INTERNAL* pContentData,
|
||||
IN LPCSTR pszImagePath
|
||||
);
|
||||
|
||||
typedef struct _XDEVICERENAMEPARAM
|
||||
{
|
||||
XCONTENTDEVICEID DeviceID;
|
||||
LPCWSTR pwszName;
|
||||
DWORD cchName;
|
||||
} XDEVICERENAMEPARAM, *PXDEVICERENAMEPARAM;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// XamUser functions and flags
|
||||
//------------------------------------------------------------------------------
|
||||
#define XAMUSER_NONE 0x00000000
|
||||
#define XAMUSER_XUID_OFFLINE 0x00000001
|
||||
#define XAMUSER_XUID_ONLINE 0x00000002
|
||||
#define XAMUSER_XUID_GUEST 0x00000004
|
||||
#define XAMUSER_RECOVER_ACCOUNT 0x80000000
|
||||
|
||||
#define XAMUSERLOGON_OFFLINEONLY 0x00000001
|
||||
#define XAMUSERLOGON_FORCELIVELOGOFF 0x00000002 // requires XAMUSERLOGON_OFFLINEONLY
|
||||
#define XAMUSERLOGON_ADDUSERS 0x00000004
|
||||
#define XAMUSERLOGON_REMOVEUSERS 0x00000008
|
||||
#define XAMUSERLOGON_FOREGROUNDPRI 0x00000010
|
||||
#define XAMUSERLOGON_NOPOPUPNOTIFICATION 0x00000020
|
||||
#define XAMUSERLOGON_DONTWAITFORCOMPLETION 0x00000040
|
||||
#define XAMUSERLOGON_ALLOWMACHINEACCOUNTONLY 0x00000080
|
||||
#define XAMUSERLOGON_CHECKONLINETICKETSONLY 0x00000100
|
||||
#define XAMUSERLOGON_ALLOWDEFAULTUSER 0x00000200
|
||||
#define XAMUSERLOGON_ALLOWUSERSWITHREQUIREDMESSAGE 0x00000400
|
||||
#define XAMUSERLOGON_RESTRICTEDPOPUPNOTIFICATION 0x00000800
|
||||
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUserGetXUID(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwFlags, // XAMUSER_XUID_ONLINE, OFFLINE or EITHER
|
||||
OUT PXUID pxuid
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUserGetIndexFromXUID(
|
||||
IN XUID xuid,
|
||||
IN DWORD dwFlags,
|
||||
OUT PDWORD pdwUserIndex
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUserGetGamerTag(
|
||||
IN DWORD dwUserIndex,
|
||||
OUT LPWSTR pszGamerTag,
|
||||
IN DWORD cchGamerTag
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUserLogon(
|
||||
IN CONST XUID* rgUsers,
|
||||
IN DWORD dwFlags,
|
||||
IN PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
#ifndef PROFILEENUMRESULT
|
||||
typedef struct _PROFILEENUMRESULT PROFILEENUMRESULT;
|
||||
#endif
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUserLogonEx(
|
||||
IN CONST PROFILEENUMRESULT* rgUsers,
|
||||
IN DWORD dwFlags,
|
||||
IN PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUserFlushLogonQueue(
|
||||
IN PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserGetUserIndexMask(
|
||||
IN DWORD dwFlags // See XAMUSER_
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserGetRequestedUserIndexMask(
|
||||
IN DWORD dwFlags // See XAMUSER_
|
||||
);
|
||||
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamGetUserPresetPresenceState(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XamSetUserPresetPresenceState(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwStateFlags
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XamUserIsOnlineEnabled(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserGetUserFlags(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserGetUserFlagsFromXUID(
|
||||
IN XUID xuid
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserGetCachedUserFlags(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
BYTE
|
||||
WINAPI
|
||||
XamUserGetOnlineCountryFromXUID(
|
||||
IN XUID xuid
|
||||
);
|
||||
|
||||
BYTE
|
||||
WINAPI
|
||||
XamUserGetMembershipTier(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
BYTE
|
||||
WINAPI
|
||||
XamUserGetMembershipTierFromXUID(
|
||||
IN XUID xuid
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XamUserIsGuest(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
|
||||
|
||||
// Macros to use with XamUserGetUserIndexMask. Given a user index and a bit
|
||||
// mask, tells if a user index bit is on or off.
|
||||
#define XAMUSER_MASK_USERINDEX_X(__dwUserIndex__, __dw__) (!!((__dw__) & (1 << (__dwUserIndex__))))
|
||||
|
||||
#define XAMUSER_MASK_USERINDEX_0(__dw__) XAMUSER_USERINDEX_X(0, __dw__)
|
||||
#define XAMUSER_MASK_USERINDEX_1(__dw__) XAMUSER_USERINDEX_X(1, __dw__)
|
||||
#define XAMUSER_MASK_USERINDEX_2(__dw__) XAMUSER_USERINDEX_X(2, __dw__)
|
||||
#define XAMUSER_MASK_USERINDEX_3(__dw__) XAMUSER_USERINDEX_X(3, __dw__)
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUserGetDeviceContext(
|
||||
IN DWORD dwUserIndex,
|
||||
IN UCHAR ucDeviceCategory,
|
||||
OUT PULONG_PTR pulDeviceContext
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUserLookupDevice(
|
||||
IN ULONG_PTR ulDeviceContext,
|
||||
IN UCHAR ucDeviceCategory,
|
||||
OUT PDWORD pdwUserIndex
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUserBindDeviceCallback(
|
||||
IN ULONG_PTR ulUserIdentifier,
|
||||
IN ULONG_PTR ulDeviceContext,
|
||||
IN UCHAR ucDeviceCategory,
|
||||
IN BOOLEAN fUnbindUser,
|
||||
OUT PUCHAR pucAssignedUser
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserCheckPrivilege(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD PrivilegeType,
|
||||
OUT PBOOL pfResult
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserAreUsersFriends(
|
||||
IN DWORD dwUserIndex,
|
||||
IN PXUID pXuids,
|
||||
IN DWORD dwXuidCount,
|
||||
OUT PBOOL pfResult OPTIONAL,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
// Defines for XAMACCOUNTINFO's dwMask, indicate valid fields.
|
||||
// Keep these bits packed together as much as possible. Might use some
|
||||
// remaining bits for versioning at a later time.
|
||||
#define XAMPROFILE_NONE 0x00000000
|
||||
#define XAMPROFILE_PASSCODE 0x10000000 // set if password field is valid
|
||||
#define XAMPROFILE_ONLINEENABLED 0x20000000 // set if account is online enabled
|
||||
|
||||
#define XAMPROFILE_VERSIONMASK 0x000000FF
|
||||
|
||||
#define XAMPROFILE_VERSION1 1
|
||||
|
||||
#define XAMPROFILE_CURRENTVERSION XAMPROFILE_VERSION1
|
||||
|
||||
#define XAMPROFILE_MAX_HD 32
|
||||
#define XAMPROFILE_MAX_MU 8
|
||||
|
||||
#define XAMACCOUNT_LIVEFLAG_ACCTREQUIRESMGMT 0x00000001
|
||||
|
||||
|
||||
#define XAMACCOUNT_PASSCODELENGTH 4
|
||||
#define XAMACCOUNT_ONLINEDOMAINSIZE 20
|
||||
#define XAMACCOUNT_ONLINEKERBEROSREALMSIZE 24
|
||||
#define XAMACCOUNT_ONLINEKEYLENGTH 16
|
||||
#define XAMACCOUNT_USERPASSPORTMEMBERNAMESIZE (113 + 1)
|
||||
#define XAMACCOUNT_USERPASSPORTPASSWORDSIZE (16 + 16)
|
||||
#define XAMACCOUNT_OWNERPASSPORTMEMBERNAMESIZE XAMACCOUNT_USERPASSPORTMEMBERNAMESIZE
|
||||
|
||||
|
||||
#define XAMUSER_ISTEAMXUID IsTeamXUID
|
||||
#define XAMUSER_ISOFFLINEXUID IsOfflineXUID
|
||||
#define XAMUSER_ISONLINEXUID IsOnlineXUID
|
||||
#define XAMUSER_ISGUESTXUID IsGuestXUID
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
typedef struct _XAMACCOUNTINFO
|
||||
{
|
||||
DWORD dwReserved; // Don't touch outside of XamProfile* functions
|
||||
DWORD dwLiveFlags;
|
||||
WCHAR szGamerTag[XUSER_NAME_SIZE];
|
||||
XUID xuidOnline;
|
||||
DWORD dwCachedUserFlags;
|
||||
DWORD dwOnlineServiceNetworkID;
|
||||
BYTE rgbPasscode[XAMACCOUNT_PASSCODELENGTH];
|
||||
CHAR szOnlineDomain[XAMACCOUNT_ONLINEDOMAINSIZE];
|
||||
CHAR szOnlineKerberosRealm[XAMACCOUNT_ONLINEKERBEROSREALMSIZE];
|
||||
BYTE rgbOnlineKey[XAMACCOUNT_ONLINEKEYLENGTH];
|
||||
CHAR szUserPassportMembername[XAMACCOUNT_USERPASSPORTMEMBERNAMESIZE];
|
||||
CHAR rgcUserPassportPassword[XAMACCOUNT_USERPASSPORTPASSWORDSIZE];
|
||||
CHAR szOwnerPassportMembername[XAMACCOUNT_OWNERPASSPORTMEMBERNAMESIZE];
|
||||
} XAMACCOUNTINFO, *PXAMACCOUNTINFO;
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct _USER_PAYMENT_INFO USER_PAYMENT_INFO, *PUSER_PAYMENT_INFO;
|
||||
typedef struct _PASSPORT_SESSION_TOKEN PASSPORT_SESSION_TOKEN;
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamProfileCreate(
|
||||
IN DWORD dwFlags, // XAMUSER_XUID_ONLINE, OFFLINE or both
|
||||
IN OUT PXCONTENTDEVICEID pDeviceID,
|
||||
IN XUID xuidOffline,
|
||||
IN CONST XAMACCOUNTINFO* paccountinfo,
|
||||
IN CONST USER_PAYMENT_INFO* puserpaymentinfo,
|
||||
IN CONST PASSPORT_SESSION_TOKEN* puserPassportToken,
|
||||
IN CONST PASSPORT_SESSION_TOKEN* pownerPassportToken,
|
||||
OUT PVOID* ppvContext
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamProfileGetCreationStatus(
|
||||
IN PVOID pvContext,
|
||||
OUT PXUID pxuidOffline
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamProfileDelete(
|
||||
IN XCONTENTDEVICEID DeviceID,
|
||||
IN XUID xuidOffline
|
||||
);
|
||||
|
||||
typedef struct _PROFILEENUMRESULT
|
||||
{
|
||||
XUID xuidOffline;
|
||||
XAMACCOUNTINFO xai;
|
||||
XCONTENTDEVICEID DeviceID;
|
||||
} PROFILEENUMRESULT, *PPROFILEENUMRESULT;
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamProfileCreateEnumerator(
|
||||
IN XCONTENTDEVICEID DeviceID,
|
||||
OUT PHANDLE phEnum
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamProfileEnumerate(
|
||||
IN HANDLE hEnum,
|
||||
IN DWORD dwFlags,
|
||||
OUT PPROFILEENUMRESULT pProfileEnumResult,
|
||||
IN OUT PXOVERLAPPED pOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamProfileFindAccount(
|
||||
IN XUID xuidOffline,
|
||||
OUT PXAMACCOUNTINFO pAccountInfo,
|
||||
OUT PXCONTENTDEVICEID pDeviceID OPTIONAL
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamProfileRenameAccount(
|
||||
IN XUID xuidOffline,
|
||||
IN LPCWSTR pszName
|
||||
);
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamProfileOpen(
|
||||
IN XUID xuidOffline,
|
||||
IN LPCSTR pszRootName,
|
||||
IN DWORD dwFlags,
|
||||
OUT PXCONTENT_DATA_INTERNAL pcdi OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamProfileClose(
|
||||
IN LPCSTR pszRootName
|
||||
);
|
||||
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamProfileLoadAccountInfo(
|
||||
IN XCONTENTDEVICEID DeviceID,
|
||||
IN XUID xuidOffline,
|
||||
OUT PXAMACCOUNTINFO pAccountInfo
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamProfileSaveAccountInfo(
|
||||
IN XCONTENTDEVICEID DeviceID,
|
||||
IN XUID xuidOffline,
|
||||
IN XAMACCOUNTINFO * pAccountInfo
|
||||
);
|
||||
|
||||
|
||||
__inline
|
||||
BOOL
|
||||
XamProfileIsParentalControlled(
|
||||
IN CONST XAMACCOUNTINFO* pAccountInfo
|
||||
)
|
||||
{
|
||||
return ((pAccountInfo->dwCachedUserFlags & XONLINE_USER_PARENTAL_CONTROLLED) != 0);
|
||||
}
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
XamAreMixedAccountsSignedIn(
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// Contains information need to process an async message. This structure
|
||||
// is pointed to by the InternalContext field from the XOVERLAPPED structure.
|
||||
// In some cases, when some user data needs to be associated with the message,
|
||||
// memory for the user data and this structure is allocated in a single
|
||||
// allocation.
|
||||
//
|
||||
|
||||
typedef struct _XASYNCMESSAGE
|
||||
{
|
||||
HXAMAPP hxamapp;
|
||||
DWORD dwMessage;
|
||||
PXOVERLAPPED pOverlapped;
|
||||
PVOID pBuffer;
|
||||
PVOID UserEvent;
|
||||
PVOID Apc;
|
||||
HXAMTASK hXamTask;
|
||||
} XASYNCMESSAGE, *PXASYNCMESSAGE;
|
||||
|
||||
//
|
||||
// XAM Boot Data
|
||||
//
|
||||
// This is shared between XAM and XBDM, so be sure to keep it backward
|
||||
// compatible.
|
||||
//
|
||||
|
||||
typedef enum _XAM_BOOT_REASON
|
||||
{
|
||||
XAM_BOOT_SYSTEM_START = 0,
|
||||
XAM_BOOT_LAUNCH_MEDIA,
|
||||
XAM_BOOT_LAUNCH_NEW_IMAGE,
|
||||
XAM_BOOT_USER_REQUEST,
|
||||
XAM_BOOT_DEBUG_REQUEST,
|
||||
XAM_BOOT_RECOVERY,
|
||||
XAM_BOOT_MFG_LOADER,
|
||||
XAM_BOOT_DUMP,
|
||||
XAM_BOOT_LAUNCH_DASHBOARD,
|
||||
XAM_BOOT_LAUNCH_ANY_DASHBOARD,
|
||||
} XAM_BOOT_REASON;
|
||||
|
||||
|
||||
#define XAM_MAX_LAUNCH_PATH 256
|
||||
#define XAM_BOOT_DATA_FLAG_TITLE 0x00000001
|
||||
#define XAM_BOOT_DATA_FLAG_UNLOAD_HUD 0x00000002
|
||||
#define XAM_BOOT_DATA_FLAG_BOUND_PATH 0x00000004
|
||||
#define XAM_BOOT_DATA_FLAG_ASSUME_DVD 0x00000010
|
||||
#define XAM_BOOT_DATA_FLAG_DASH_ARCADE 0x00000020
|
||||
#define XAM_BOOT_DATA_FLAG_HYBRID_FORCE_DVD 0x00000040
|
||||
#define XAM_BOOT_DATA_FLAG_HYBRID_FORCE_GAME 0x00000080
|
||||
#define XAM_BOOT_DATA_FLAG_HYBRID_NO_NOTIFY 0x00000100
|
||||
|
||||
#pragma pack(push, 4)
|
||||
|
||||
typedef struct _XAM_BOOT_DATA_BLOCK
|
||||
{
|
||||
//
|
||||
// Base (1888) structure
|
||||
//
|
||||
|
||||
XAM_BOOT_REASON Reason;
|
||||
DWORD Flags;
|
||||
PVOID ImagePhysicalBase;
|
||||
ULONG ImageSize;
|
||||
CHAR ImageName[XAM_MAX_LAUNCH_PATH];
|
||||
CHAR DDrive[XAM_MAX_LAUNCH_PATH];
|
||||
CHAR CommandLine[XAM_MAX_LAUNCH_PATH];
|
||||
|
||||
//
|
||||
// Fields added after build 1888
|
||||
//
|
||||
|
||||
DWORD MinVersion;
|
||||
} XAM_BOOT_DATA_BLOCK;
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XMsgAcquireAsyncMessageFromOverlapped(
|
||||
IN PXOVERLAPPED pOverlapped,
|
||||
OUT PXASYNCMESSAGE* ppMsg
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XMsgReleaseAsyncMessageToOverlapped(
|
||||
IN PXASYNCMESSAGE pMsg,
|
||||
IN PXOVERLAPPED pOverlapped
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// System-defined string ids used in the SPA file
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#define X_STRINGID_TITLE 0x8000
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD dwTitleId;
|
||||
ULONGLONG qwId;
|
||||
DWORD dwUserIndex;
|
||||
WCHAR* pwsz;
|
||||
PDWORD pcch;
|
||||
} XGI_READSTRING_MSG;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Tiles/Images/Pictures
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
XTILETYPE_ACHIEVEMENT = 0,
|
||||
XTILETYPE_GAME_ICON = 1,
|
||||
XTILETYPE_GAMER_TILE = 2,
|
||||
XTILETYPE_GAMER_TILE_SMALL = 3,
|
||||
XTILETYPE_LOCAL_GAMER_TILE = 4,
|
||||
XTILETYPE_LOCAL_GAMER_TILE_SMALL = 5,
|
||||
XTILETYPE_BKGND = 6,
|
||||
XTILETYPE_AWARDED_GAMER_TILE = 7,
|
||||
XTILETYPE_AWARDED_GAMER_TILE_SMALL = 8,
|
||||
XTILETYPE_GAMER_TILE_BY_IMAGE_ID = 9,
|
||||
} XTILETYPE;
|
||||
|
||||
|
||||
#define X_IMAGEID_FLAGS_LARGE 0x00020000
|
||||
#define X_IMAGEID_FLAGS_SMALL 0x00010000
|
||||
|
||||
// number of tiles available to users to pick
|
||||
#define NUM_FLASH_TILES 12
|
||||
|
||||
// total number of tiles available, including one for xbox 1 users
|
||||
#define NUM_FLASH_TILES_ALL NUM_FLASH_TILES + 1
|
||||
|
||||
//
|
||||
// System defined image ids
|
||||
//
|
||||
|
||||
#define X_IMAGEID_DEFAULT_TITLEID XENON_DASH_TITLE_ID
|
||||
#define X_IMAGEID_DEFAULT_TILE 0x0 + X_IMAGEID_FLAGS_LARGE
|
||||
#define X_IMAGEID_DEFAULT_TILE_SMALL 0x0 + X_IMAGEID_FLAGS_SMALL
|
||||
|
||||
#define X_IMAGEID_GAME 0x8000
|
||||
#define X_IMAGEID_GAMER 0x8001
|
||||
#define X_IMAGEID_GAMER_SMALL 0x8002
|
||||
#define X_IMAGEID_BKGND 0x8003
|
||||
#define X_IMAGEID_GAME_MARKETPLACE 0x8004
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
DWORD dwNumXuids;
|
||||
CONST XUID* rgXuids;
|
||||
} XGI_PREPAREGAMERTILES_MSG;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
XTILETYPE eTileType;
|
||||
DWORD dwTitleId; // Used for game tile and achievements
|
||||
ULONGLONG qwImageId;
|
||||
DWORD dwUserIndex; // Used for achievements
|
||||
PBYTE pbImage;
|
||||
PDWORD pcbBuffer;
|
||||
DWORD cbBuffer;
|
||||
DWORD dwPitch;
|
||||
DWORD dwHeight;
|
||||
} XGI_READWRITETILE_MSG;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BOOL fForEnumerate; // Making available for enumeration, or making it the gamer's tile?
|
||||
DWORD dwUserIndex;
|
||||
DWORD dwTitleId; // Title id of the granting title
|
||||
DWORD dwImageId; // Image id of the 64x64 tile
|
||||
DWORD dwImageIdSmall; // Image id of the 32x32 tile
|
||||
BOOL fUpdateSetting; // Update profile setting as a part of writing tile? (only if fForEnumeate = false)
|
||||
} XGI_WRITEGAMERTILE_MSG;
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserCreateAchievementEnumerator(
|
||||
IN DWORD dwTitleId, // A title in your family or 0 for the current title
|
||||
IN DWORD dwUserIndex, // User index of locally signed-in user making the request
|
||||
IN XUID xuidRequestee, // XUID of remote user whose titles are enumerated (or INVALID_XUID for a local enumeration)
|
||||
IN DWORD dwDetailFlags, // Get the descriptions, etc.
|
||||
IN DWORD dwStartingIndex, // Number of achievements to skip before enumerating
|
||||
IN DWORD cItem, // Number of achievements to retrieve per enumeration
|
||||
OUT PDWORD pcbBuffer, // Size of buffer needed to enumerate
|
||||
OUT PHANDLE ph // Handle to created enumerator
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserCreateStatsEnumerator(
|
||||
IN DWORD dwTitleId, // Title id to read stats for, 0 if current
|
||||
IN XGI_STATS_ENUMERATOR_TYPE enumType, // Type of enumeration to be performed
|
||||
IN ULONGLONG qwPivot, // Rank, rating to start from, or user to pivot around, depending on type
|
||||
IN DWORD dwNumRows, // Number of rows to retrieve
|
||||
IN DWORD dwNumStatsSpecs, // Number of specs in the pSpecs parameter
|
||||
IN CONST XUSER_STATS_SPEC* pSpecs, // Array of stats specs to retrieve
|
||||
OUT PDWORD pcbBuffer, // Size of buffer needed to enumerate
|
||||
OUT PHANDLE ph // Handle to created enumerator
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserCreateTitlesPlayedEnumerator(
|
||||
IN DWORD dwTitleId, // A title in your family or 0 for the current title
|
||||
IN DWORD dwUserIndex, // User index of locally signed-in user making the request
|
||||
IN XUID xuid, // XUID of remote user whose titles are enumerated (or INVALID_XUID for a local enumeration)
|
||||
IN DWORD dwStartingIndex, // Number to skip before enumerating
|
||||
IN DWORD cItem, // Number to retrieve per enumeration
|
||||
OUT PDWORD pcbBuffer, // Size of buffer needed to enumerate
|
||||
OUT PHANDLE ph // Handle to created enumerator
|
||||
);
|
||||
|
||||
void
|
||||
XamInitFlashTiles(void);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamPrepareGamerTiles(
|
||||
IN DWORD dwUserIndex, // User index of user reading gamer tiles
|
||||
IN DWORD dwNumXuids, // number of xuids in rgXuids
|
||||
IN CONST XUID* rgXuids // List of users to prepare tiles for
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamReadTile(
|
||||
IN XTILETYPE eTileType,
|
||||
IN DWORD dwTitleId,
|
||||
IN ULONGLONG qwImageId,
|
||||
IN DWORD dwUserIndex, // User index of profile to search in
|
||||
IN PBYTE pbImage,
|
||||
IN OUT PDWORD pcbBuffer,
|
||||
IN OUT PXOVERLAPPED pXOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamReadTileToTexture(
|
||||
IN XTILETYPE eTileType,
|
||||
IN DWORD dwTitleId,
|
||||
IN ULONGLONG qwImageId,
|
||||
IN DWORD dwUserIndex, // User index of profile to search in
|
||||
IN OUT PBYTE pbTextureBuffer,
|
||||
IN DWORD dwPitch,
|
||||
IN DWORD dwHeight,
|
||||
IN OUT PXOVERLAPPED pXOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamWriteGamerTile(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwTitleId,
|
||||
IN DWORD dwImageId,
|
||||
IN DWORD dwImageIdSmall,
|
||||
IN BOOL fForEnumeration,
|
||||
IN OUT PXOVERLAPPED pXOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamWriteTile(
|
||||
IN XTILETYPE eTileType,
|
||||
IN DWORD dwTitleId,
|
||||
IN ULONGLONG qwImageId,
|
||||
IN DWORD dwUserIndex,
|
||||
IN PBYTE pbImage,
|
||||
IN OUT DWORD cbImage,
|
||||
IN OUT PXOVERLAPPED pXOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
DWORD
|
||||
WINAPI
|
||||
XamParseGamerTileKey(
|
||||
IN PXUSER_DATA pKey,
|
||||
OUT PDWORD pdwTitleId,
|
||||
OUT PDWORD pdwImageId,
|
||||
OUT PDWORD pdwImageIdSmall
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamReadString(
|
||||
IN DWORD dwTitleId,
|
||||
IN ULONGLONG qwStringId,
|
||||
IN DWORD dwUserIndex, // User index of profile to search in
|
||||
IN WCHAR* pwsz,
|
||||
IN OUT PDWORD pcch,
|
||||
IN OUT PXOVERLAPPED pXOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
XamGetCachedTitleName(
|
||||
IN DWORD dwTitleId,
|
||||
OUT LPWSTR pwsz,
|
||||
IN OUT PDWORD pcch
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
XamGetCachedGamerTag(
|
||||
IN XUID xuid,
|
||||
OUT LPSTR psz,
|
||||
IN OUT PDWORD pcch
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
XamGetCachedGamerTagW(
|
||||
IN XUID xuid,
|
||||
OUT LPWSTR pwsz,
|
||||
IN OUT PDWORD pcch
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamReadImage(
|
||||
IN DWORD dwTileFlags,
|
||||
IN DWORD dwTitleId,
|
||||
IN DWORD dwUserIndex,
|
||||
IN ULONGLONG qwImageId,
|
||||
OUT HXUIBRUSH* phBrush
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamDecompressPNGToTexture(
|
||||
IN PBYTE pbPng,
|
||||
IN DWORD cbPng,
|
||||
IN PBYTE pbTexture,
|
||||
IN DWORD dwPitch,
|
||||
IN DWORD dwHeight
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Server synchronization (profile settings, achievements, title list, etc.)
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD dwUserIndexMask;
|
||||
} XGI_SYNC_MSG;
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserProfileSync(
|
||||
IN DWORD dwUserIndexMask, // Who to sync (bitmap of user indexes (LSB == user index 0))
|
||||
IN OUT PXOVERLAPPED pXOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Title tracking and recovery
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Titles-played list
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// The XUSER_TITLE_PLAYED structure defines the info stored for each title
|
||||
// ever played. It's used in both the SPIs and as the format stored in a profile
|
||||
// file.
|
||||
//
|
||||
// If this format changes then all existing title records in all profiles will
|
||||
// be invalidated. That's why there are unused members for adding new info later.
|
||||
// Just be sure that the size of the structure (including alignment packing)
|
||||
// remains the same!
|
||||
|
||||
typedef struct tagXUSER_TITLE_PLAYED
|
||||
{
|
||||
DWORD dwTitleId;
|
||||
|
||||
DWORD dwAchievementsPossible;
|
||||
DWORD dwAchievementsEarned;
|
||||
|
||||
DWORD dwCredPossible;
|
||||
DWORD dwCredEarned;
|
||||
|
||||
DWORD dwUnused1;
|
||||
DWORD dwUnused2;
|
||||
DWORD dwUnused3;
|
||||
|
||||
FILETIME ftLastLoaded; // Only changed if online
|
||||
|
||||
WCHAR wszTitleName[64]; // Includes null-terminator
|
||||
} XUSER_TITLE_PLAYED;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
CONST XUSER_TITLE_PLAYED* pTitleToRecover;
|
||||
} XGI_RECOVERTITLE_MSG;
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamProfileRecoverTitle(
|
||||
IN DWORD dwUserIndex,
|
||||
IN CONST XUSER_TITLE_PLAYED* pTitleToRecover,
|
||||
IN OUT PXOVERLAPPED pXOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Profile settings
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserReadProfileSettings(
|
||||
IN DWORD dwTitleId, // A title in your family or 0 for the current title
|
||||
IN DWORD dwUserIndexRequester, // User index of requesting user. Used for permission checking.
|
||||
IN DWORD dwNumFor, // Count of XUIDs in pxuidFor
|
||||
IN CONST XUID* pxuidFor, // Pointer to array of XUIDs to request settings for
|
||||
IN DWORD dwNumSettingIds, // Count of setting ids in pdwSettingIds
|
||||
IN CONST DWORD* pdwSettingIds, // Pointer to array of settings to retrieve
|
||||
IN OUT DWORD* pcbResults, // Size of pResults buffer. If *pchResults is 0 then required size is returned.
|
||||
IN OUT PXUSER_READ_PROFILE_SETTING_RESULT pResults,
|
||||
IN OUT PXOVERLAPPED pXOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserWriteProfileSettings(
|
||||
IN DWORD dwTitleId,
|
||||
IN DWORD dwUserIndex, // User index of player whose settings are written
|
||||
IN DWORD dwNumSettings, // Count of settings in pSettings
|
||||
IN CONST PXUSER_PROFILE_SETTING pSettings, // Pointer to array of settings to set
|
||||
IN PXOVERLAPPED pXOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Messaging UI APIs
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowMessageComposeUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN CONST XUID* pXuidRecipients OPTIONAL,
|
||||
IN UINT cRecipients,
|
||||
IN LPCWSTR pszText OPTIONAL
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowGameInviteUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN CONST XUID* pXuidRecipients OPTIONAL,
|
||||
IN UINT cRecipients,
|
||||
IN LPCWSTR pszText OPTIONAL
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowFriendRequestUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN XUID xuidUser
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowPrivateChatInviteUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwChannel
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Virtual keyboard API
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
typedef struct _XVIRTUALKBDUI_PARAMS
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
DWORD cchResultText;
|
||||
DWORD dwFlags;
|
||||
LPCWSTR pDefaultText;
|
||||
LPCWSTR pTitleText;
|
||||
LPCWSTR pDescriptionText;
|
||||
LPWSTR pResultText;
|
||||
PXOVERLAPPED pOverlapped;
|
||||
} XVIRTUALKBDUI_PARAMS, *PXVIRTUALKBDUI_PARAMS;
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowKeyboardUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwFlags,
|
||||
IN LPCWSTR pDefaultText,
|
||||
IN LPCWSTR pTitleText,
|
||||
IN LPCWSTR pDescriptionText,
|
||||
OUT LPWSTR pResultText,
|
||||
IN DWORD cchResultText,
|
||||
IN OUT PXOVERLAPPED pOverlapped
|
||||
);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// QuickChat UI API
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
typedef struct _XSHOWQUICKCHATUI_PARAMS
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
} XSHOWQUICKCHATUI_PARAMS, *PXSHOWQUICKCHATUI_PARAMS;
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowQuickChatUI(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// VoiceMail application API
|
||||
//------------------------------------------------------------------------------
|
||||
#define XSHOWVOICEMAILUI_RESULTS_NONE 0x00000000
|
||||
#define XSHOWVOICEMAILUI_RESULTS_RECORDED 0x00000001
|
||||
#define XSHOWVOICEMAILUI_RESULTS_ACCEPTED 0x00000002
|
||||
|
||||
typedef struct _XVOICEMAILUI_RESULTS
|
||||
{
|
||||
DWORD dwResults;
|
||||
DWORD cbRecordedBufferSize;
|
||||
} XVOICEMAILUI_RESULTS, *PXVOICEMAILUI_RESULTS;
|
||||
|
||||
#define XSHOWVOICEMAILUI_FLAGS_PLAYVOICE 0x00000001
|
||||
#define XSHOWVOICEMAILUI_FLAGS_RECORDVOICE 0x00000002
|
||||
#define XSHOWVOICEMAILUI_FLAGS_RESERVED1 0x00000004
|
||||
#define XSHOWVOICEMAILUI_FLAGS_RESERVED2 0x00000008
|
||||
|
||||
typedef struct _XVOICEMAILUI_PARAMS
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
DWORD dwFlags;
|
||||
PBYTE pbBuffer;
|
||||
DWORD cbBufferSize;
|
||||
DWORD cbRecordedBufferSize;
|
||||
WORD wCodec;
|
||||
PXVOICEMAILUI_RESULTS pResults;
|
||||
} XVOICEMAILUI_PARAMS, *PXVOICEMAILUI_PARAMS;
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowVoiceMailUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwFlags,
|
||||
IN PBYTE pbBuffer,
|
||||
IN DWORD cbBufferSize,
|
||||
IN DWORD cbRecordedBufferSize,
|
||||
IN WORD wCodec,
|
||||
OUT PXVOICEMAILUI_RESULTS pResults
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// GamerProfile application API types
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#define XGAMERPROFILE_MODE_GAMERCARD 0x00
|
||||
#define XGAMERPROFILE_MODE_GAMES 0x01
|
||||
#define XGAMERPROFILE_MODE_ACHIEVEMENTS 0x02
|
||||
#define XGAMERPROFILE_MODE_EDIT 0x03
|
||||
|
||||
typedef struct _XGAMERPROFILE_PARAMS
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
DWORD dwMode;
|
||||
XUID xuidTarget;
|
||||
DWORD dwTitleId;
|
||||
} XGAMERPROFILE_PARAMS, *PXGAMERPROFILE_PARAMS;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// GamerProfile application APIs
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowGamerCardUI(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowGamerCardUIForXUID(
|
||||
IN DWORD dwUserIndex,
|
||||
IN XUID xuidPlayer,
|
||||
IN BOOL fDisableChatButton
|
||||
);
|
||||
|
||||
//
|
||||
// API to show the Achievements UI
|
||||
//
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowAchievementsUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwTitleId
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowGamesUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN XUID xuidTarget
|
||||
);
|
||||
|
||||
typedef struct _XSHOWFRIENDSUI_PARAMS
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
DWORD dwFlags;
|
||||
XUID rgXuidRecipients[100];
|
||||
UINT cRecipients;
|
||||
WCHAR szText[256];
|
||||
ULONGLONG qwParam;
|
||||
DWORD dwChannel;
|
||||
} XSHOWFRIENDSUI_PARAMS, *PXSHOWFRIENDSUI_PARAMS;
|
||||
|
||||
#define XSHOWFRIENDSUI_FLAGS_SHOWMESSAGES (0x01)
|
||||
#define XSHOWFRIENDSUI_FLAGS_COMPOSEMESSAGE (0x02)
|
||||
#define XSHOWFRIENDSUI_FLAGS_GAMEINVITE (0x04)
|
||||
#define XSHOWFRIENDSUI_FLAGS_FRIENDREQUEST (0x08)
|
||||
#define XSHOWFRIENDSUI_FLAGS_SHOWPLAYERS (0x10)
|
||||
#define XSHOWFRIENDSUI_FLAGS_GAMERPROFILE (0x20)
|
||||
#define XSHOWFRIENDSUI_FLAGS_QUICKCHAT (0x40)
|
||||
#define XSHOWFRIENDSUI_FLAGS_DISABLECHAT (0x80)
|
||||
#define XSHOWFRIENDSUI_FLAGS_PRIVATECHATINVITE (0x100)
|
||||
#define XSHOWFRIENDSUI_FLAGS_SHOWRECENTMESSAGE (0x200)
|
||||
#define XSHOWFRIENDSUI_FLAGS_PRIVATECHATCHANNEL (0x400)
|
||||
#define XSHOWFRIENDSUI_FLAGS_INVOKEDBYPRIVATECHAT (0x800)
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowFriendsUI(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowPlayersUI(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowMessagesUI(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowMessagesUIEx(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwFlags
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowRecentMessageUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN ULONGLONG qwParam
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowRecentMessageUIEx(
|
||||
IN DWORD dwFlags,
|
||||
IN DWORD dwUserIndex,
|
||||
IN ULONGLONG qwParam,
|
||||
IN DWORD dwChannel
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowFriendsUIp(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwFlags
|
||||
);
|
||||
|
||||
typedef struct _XSHOWSIGNINUI_PARAMS
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
DWORD cPanes;
|
||||
DWORD dwFlags;
|
||||
PXOVERLAPPED pOverlapped;
|
||||
} XSHOWSIGNINUI_PARAMS, *PXSHOWSIGNINUI_PARAMS;
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowSigninUI(
|
||||
IN DWORD cPanes,
|
||||
IN DWORD dwFlags
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowSigninUIEx(
|
||||
IN DWORD cPanes,
|
||||
IN DWORD dwFlags,
|
||||
IN OUT PXOVERLAPPED pxov
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowSigninUIp(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD cPanes,
|
||||
IN DWORD dwFlags
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowPasscodeVerifyUI(
|
||||
IN DWORD dwUserIndex,
|
||||
OUT PMESSAGEBOX_RESULT pResult,
|
||||
IN OUT PXOVERLAPPED pOverlapped
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowDirtyDiscErrorUI(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Feedback application APIs
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//
|
||||
// Feedback API
|
||||
//
|
||||
|
||||
#define FEEDBACK_ENTRYPOINT_PLAYERREVIEW 0
|
||||
#define FEEDBACK_ENTRYPOINT_COMPLAINT 1
|
||||
#define FEEDBACK_ENTRYPOINT_REPUTATION 2
|
||||
|
||||
typedef struct _XSHOWFEEDBACKUI_PARAMS
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
XUID _xuidFeedbackTarget;
|
||||
DWORD _dEntryPoint;
|
||||
} XSHOWFEEDBACKUI_PARAMS, *PXSHOWFEEDBACKUI_PARAMS;
|
||||
|
||||
//
|
||||
// API to show the feedback UI
|
||||
//
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowPlayerReviewUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN XUID XuidFeedbackTarget
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowComplaintUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN XUID XuidFeedbackTarget
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowReputationUI(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamContentGetMarketplaceCounts(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwContentCategories,
|
||||
IN DWORD cbResults,
|
||||
IN OUT XOFFERING_CONTENTAVAILABLE_RESULT* pResults,
|
||||
IN PXOVERLAPPED pXOverlapped OPTIONAL
|
||||
);
|
||||
|
||||
#define XSHOWMARKETPLACEUI_ACTIVETITLEID 0
|
||||
|
||||
typedef struct _MP_BILLING_ACCOUNT_INFO
|
||||
{
|
||||
BOOL fEditMode;
|
||||
BYTE bPaymentTypeId;
|
||||
WCHAR wszPaymentInstrumentId[MAX_INSTANCE_ID_LENGTH];
|
||||
|
||||
WCHAR wszStreet1[MAX_STREET_SIZE];
|
||||
WCHAR wszStreet2[MAX_STREET_SIZE];
|
||||
WCHAR wszCity[MAX_CITY_SIZE];
|
||||
WCHAR wszDistrict[MAX_DISTRICT_SIZE];
|
||||
WCHAR wszState[MAX_STATE_SIZE];
|
||||
WCHAR wszPostalCode[MAX_POSTALCODE_SIZE];
|
||||
|
||||
WCHAR wszPhonePrefix[MAX_PHONE_PREFIX_SIZE];
|
||||
WCHAR wszPhoneNumber[MAX_PHONE_NUMBER_SIZE];
|
||||
WCHAR wszPhoneExtension[MAX_PHONE_EXTENSION_SIZE];
|
||||
|
||||
BYTE bCardTypeId;
|
||||
WCHAR wszCreditAccountHolderName[MAX_CC_NAME_SIZE];
|
||||
WCHAR wszCreditAccountNumber[MAX_CC_NUMBER_SIZE];
|
||||
WCHAR wszCreditCCVNumber[MAX_CC_CCV_NUMBER_SIZE];
|
||||
FILETIME ftExpirationDate;
|
||||
|
||||
WCHAR wszDebitAccountHolderName[MAX_DD_NAME_SIZE];
|
||||
WCHAR wszDebitAccountNumber[MAX_DD_NUMBER_SIZE];
|
||||
WCHAR wszDebitBankCode[MAX_DD_BANK_CODE_SIZE];
|
||||
WCHAR wszDebitBranchCode[MAX_DD_BRANCH_CODE_SIZE];
|
||||
WCHAR wszDebitCheckDigits[MAX_DD_CHECK_DIGITS_SIZE];
|
||||
} MP_BILLING_ACCOUNT_INFO, *PMP_BILLING_ACCOUNT_INFO;
|
||||
|
||||
typedef struct _XSHOWMARKETPLACEUI_PARAMS
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
XUID UserXuid;
|
||||
DWORD dwEntryPoint;
|
||||
ULONGLONG qwOfferID;
|
||||
DWORD dwOfferType;
|
||||
DWORD dwContentCategories;
|
||||
DWORD dwTitleId;
|
||||
|
||||
BYTE bOnlineCountry;
|
||||
PMP_BILLING_ACCOUNT_INFO pBillingInfo;
|
||||
PXOVERLAPPED pOverlapped;
|
||||
} XSHOWMARKETPLACEUI_PARAMS, *PXSHOWMARKETPLACEUI_PARAMS;
|
||||
|
||||
//
|
||||
// XamShowMarketplaceUI - This is a private SPI that will be called by the Dashboard
|
||||
// and the public XShowMarketplaceUI to display and
|
||||
// enumerate content specific to the title specified by the
|
||||
// dwTitleId parameter.
|
||||
//
|
||||
// dwUserIndex - The index of the currently signed in user for which content
|
||||
// should be displayed
|
||||
// dwEntryPoint - The starting location of the Marketplace HUD UI (See the
|
||||
// XSHOWMARKETPLACEUI_ENTRYPOINTS enum)
|
||||
// qwOfferID - If the entry point is specific to an offer the offering
|
||||
// ID needs to be provided, otherwise this can be 0.
|
||||
// dwOfferType - This can be used to filter the content list by offer type.
|
||||
// dwContentCategories - If the title wishes to display only certain types of
|
||||
// items (i.e. cars, maps, weapons, etc), they can use
|
||||
// this category bit filter.
|
||||
// dwTitleId - The Title Id of the the title that the content should be
|
||||
// displayed for.
|
||||
//
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowMarketplaceUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwEntryPoint,
|
||||
IN ULONGLONG qwOfferID,
|
||||
IN DWORD dwOfferType,
|
||||
IN DWORD dwContentCategories,
|
||||
IN DWORD dwTitleId
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowForcedNameChangeUI(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowSignupCreditCardUI(
|
||||
IN BYTE bOnlineCountry,
|
||||
IN OUT PMP_BILLING_ACCOUNT_INFO pCreditCardInfo,
|
||||
IN BOOL fParentCreditCard,
|
||||
IN OUT PXOVERLAPPED pOverlapped
|
||||
);
|
||||
|
||||
typedef struct _XSHOWDEVICESELECTORUI_PARAMS
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
DWORD dwContentType;
|
||||
DWORD dwContentFlags;
|
||||
ULARGE_INTEGER uliBytesRequested;
|
||||
PXCONTENTDEVICEID pDeviceID;
|
||||
PXOVERLAPPED pOverlapped;
|
||||
} XSHOWDEVICESELECTORUI_PARAMS, *PXSHOWDEVICESELECTORUI_PARAMS;
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowDeviceSelectorUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwContentType,
|
||||
IN DWORD dwContentFlags,
|
||||
IN ULARGE_INTEGER uliBytesRequested,
|
||||
OUT PXCONTENTDEVICEID pDeviceID,
|
||||
IN OUT PXOVERLAPPED pOverlapped
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Updater application APIs
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#define XSHOWUPDATER_UPDATESOURCE_LIVE 0x00000001
|
||||
#define XSHOWUPDATER_UPDATESOURCE_GAMEDISC 0x00000002
|
||||
#define XSHOWUPDATER_UPDATESOURCE_STORAGE 0x00000003
|
||||
#define XSHOWUPDATER_UPDATESOURCE_CACHE 0x00000004
|
||||
#define XSHOWUPDATER_UPDATESOURCEMASK 0x0000000F
|
||||
#define XSHOWUPDATER_LAUNCHING_DASH 0x00000010
|
||||
|
||||
typedef struct _XSHOWUPDATERUI_PARAMS
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
DWORD dwUpdateFlags;
|
||||
char szUpdatePath[MAX_PATH];
|
||||
XEX_EXECUTION_ID ExecutionId;
|
||||
char szTitleToLaunchWhenDone[XAM_MAX_LAUNCH_PATH];
|
||||
char szTitleToLaunchDDrive[XAM_MAX_LAUNCH_PATH];
|
||||
} XSHOWUPDATERUI_PARAMS, *PXSHOWUPDATERUI_PARAMS;
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowUpdaterUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwUpdateFlags,
|
||||
IN LPCSTR pszUpdatePath OPTIONAL,
|
||||
IN CONST XEX_EXECUTION_ID* pExecutionId OPTIONAL,
|
||||
IN LPCSTR pszTitleToLaunchWhenDone OPTIONAL,
|
||||
IN LPCSTR pszTitleToLaunchDDrive OPTIONAL
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUpdateStart(
|
||||
IN CONST CHAR* pszUpdatePath OPTIONAL,
|
||||
IN DWORD dwShowUpdaterFlags,
|
||||
IN CONST XEX_EXECUTION_ID* pExecutionId OPTIONAL,
|
||||
IN CONST CHAR* pszTitleToLaunchWhenDone OPTIONAL,
|
||||
IN CONST CHAR* pszTitleToLaunchDDrive OPTIONAL,
|
||||
OUT PHANDLE phUpdate
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUpdateGetProgress(
|
||||
IN HANDLE hUpdate,
|
||||
OUT PDWORD pdwUpdateStateId OPTIONAL,
|
||||
OUT PDWORD pdwPercentComplete OPTIONAL,
|
||||
OUT ULONGLONG* pqwNumerator OPTIONAL,
|
||||
OUT ULONGLONG* pqwDenominator OPTIONAL
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
void
|
||||
WINAPI
|
||||
XamUpdateGetExtenderInstance(
|
||||
IN HANDLE hUpdate,
|
||||
IN CONST CHAR* szSectionName,
|
||||
OUT HINSTANCE* phInstance
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
void
|
||||
WINAPI
|
||||
XamUpdateFinish(
|
||||
IN HANDLE hUpdate
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUpdateAllocateExtenderBuffer(
|
||||
IN HANDLE hUpdate,
|
||||
IN DWORD dwExtenderSize,
|
||||
OUT BYTE** ppbBuffer
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamUpdateAttachExtenderInstance(
|
||||
IN HANDLE hUpdate,
|
||||
IN HINSTANCE hInstance
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
VOID
|
||||
WINAPI
|
||||
XamRestartTitleLoadAfterUpdate(
|
||||
VOID
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
VOID
|
||||
WINAPI
|
||||
XamUIThreadDisableFontPatching(
|
||||
VOID
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
VOID
|
||||
WINAPI
|
||||
XamUIThreadEnableFontPatching(
|
||||
VOID
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUpdateGetBaseSystemVersion(
|
||||
VOID
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUpdateGetCurrentSystemVersion(
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// MessageBox and Live Upsell UI APIs (both are provided by the HUD sysapp)
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#define MESSAGEBOX_OPTION_MESSAGEBOX 0
|
||||
#define MESSAGEBOX_OPTION_LIVEUPSELL 1
|
||||
|
||||
#define XMB_TITLEMAX 32
|
||||
#define XMB_TEXTMAX 256
|
||||
#define XMB_BUTTONTEXTMAX 32
|
||||
|
||||
typedef struct _MESSAGEBOX_PARAMS
|
||||
{
|
||||
DWORD dwOption;
|
||||
DWORD dwUserIndex;
|
||||
WCHAR szTitle[XMB_TITLEMAX];
|
||||
WCHAR szText[XMB_TEXTMAX];
|
||||
DWORD cButtons;
|
||||
WCHAR rgButtons[XMB_MAXBUTTONS][XMB_BUTTONTEXTMAX];
|
||||
DWORD dwFocusButton;
|
||||
DWORD dwFlags;
|
||||
PMESSAGEBOX_RESULT pResult;
|
||||
PXOVERLAPPED pOverlapped;
|
||||
} MESSAGEBOX_PARAMS, *PMESSAGEBOX_PARAMS;
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowMessageBoxUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN LPCWSTR pszTitle,
|
||||
IN LPCWSTR pszText,
|
||||
IN DWORD cButtons,
|
||||
IN LPCWSTR* rgButtons,
|
||||
IN DWORD dwFocusButton,
|
||||
IN DWORD dwFlags,
|
||||
OUT PMESSAGEBOX_RESULT pResult,
|
||||
IN OUT PXOVERLAPPED pOverlapped
|
||||
);
|
||||
|
||||
#define MESSAGEBOXEX_ID_PAL50_INCOMPATIBLE 1
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowMessageBoxUIEx(
|
||||
IN DWORD dwUserIndex,
|
||||
IN LPCWSTR pszTitle,
|
||||
IN LPCWSTR pszText,
|
||||
IN DWORD cButtons,
|
||||
IN LPCWSTR* rgButtons,
|
||||
IN DWORD dwFocusButton,
|
||||
IN DWORD dwFlags,
|
||||
IN DWORD dwMessageID,
|
||||
OUT PMESSAGEBOX_RESULT pResult,
|
||||
IN OUT PXOVERLAPPED pOverlapped
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowLiveUpsellUI(
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Create Profile UI API
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#define XCREATEPROFILE_MODE_CREATENEW 0x00
|
||||
#define XCREATEPROFILE_MODE_SIGNUP 0x01
|
||||
#define XCREATEPROFILE_MODE_RECOVER 0x02
|
||||
|
||||
typedef struct _XCREATEPROFILEUI_PARAMS
|
||||
{
|
||||
DWORD dwUserIndex;
|
||||
DWORD dwMode;
|
||||
XUID xuid;
|
||||
} XCREATEPROFILEUI_PARAMS, *PXSHOWCREATEPROFILEUI_PARAMS;
|
||||
|
||||
#define XENON_SIGNUP_TITLE_ID 0xFFFE07DE
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowCreateProfileUI(
|
||||
IN DWORD dwUserIndex
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamShowLiveSignupUI(
|
||||
IN DWORD dwUserIndex,
|
||||
IN BOOL fRecoverAccount
|
||||
);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// RecentPlayers Cache APIs
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserAddRecentPlayer(
|
||||
IN DWORD dwUserIndex,
|
||||
IN XUID pUser,
|
||||
IN DWORD dwFlags,
|
||||
IN DWORD dwTitleID,
|
||||
IN DWORD dwRating,
|
||||
IN LPCSTR szGamertag
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserUpdateRecentPlayer(
|
||||
IN DWORD dwUserIndex,
|
||||
IN XUID xuidUser,
|
||||
IN DWORD dwFlags,
|
||||
IN DWORD dwRating,
|
||||
IN LPCSTR szGamertag
|
||||
);
|
||||
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamUserCreatePlayerEnumerator(
|
||||
IN DWORD dwUserIndex,
|
||||
IN DWORD dwStartingIndex,
|
||||
IN DWORD cItem,
|
||||
OUT PDWORD pcbBuffer,
|
||||
OUT PHANDLE ph
|
||||
);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Error code helpers
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
__inline
|
||||
DWORD
|
||||
Win32FromHRESULT(
|
||||
IN HRESULT hr
|
||||
)
|
||||
{
|
||||
DWORD dw;
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
dw = ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
else if (FACILITY_WIN32 == HRESULT_FACILITY(hr))
|
||||
{
|
||||
dw = (hr & ~0xFFFF0000);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
dw = ERROR_FUNCTION_FAILED;
|
||||
}
|
||||
|
||||
return dw;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// XN_SYS_DISCMEDIACHANGED parameter and support API
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#define XDISCMEDIATYPE_NONE 0
|
||||
#define XDISCMEDIATYPE_GAMEDISC 1
|
||||
#define XDISCMEDIATYPE_XBOXGAME 2
|
||||
#define XDISCMEDIATYPE_UNKNOWN 3
|
||||
#define XDISCMEDIATYPE_DVDA 4
|
||||
#define XDISCMEDIATYPE_DVD 5
|
||||
#define XDISCMEDIATYPE_VCD 6
|
||||
#define XDISCMEDIATYPE_CDAUDIO 7
|
||||
#define XDISCMEDIATYPE_CDDATA 8
|
||||
#define XDISCMEDIATYPE_GAMEDVDHYBRID 9
|
||||
|
||||
#define MAX_TITLE_TILE 16384
|
||||
#define MAX_TITLE_NAME 23 // Includes null-terminator
|
||||
|
||||
typedef struct _XGAMEINFO
|
||||
{
|
||||
DWORD dwTitleId;
|
||||
WCHAR wszTitleName[MAX_TITLE_NAME];
|
||||
} XGAMEINFO, *PXGAMEINFO;
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamGetGameInfo(
|
||||
OUT PXGAMEINFO pGameDiscInfo
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
VOID
|
||||
WINAPI
|
||||
XamGetMediaInfo(
|
||||
DWORD* pdwMediaType,
|
||||
DWORD* pdwTitleId
|
||||
);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Inactivity settings SPI
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#define XAMINACTIVITY_SCREENSAVER 0
|
||||
#define XAMINACTIVITY_AUTOSHUTOFF 1
|
||||
#define XAMINACTIVITY_COUNT 2
|
||||
|
||||
#define XAMSCREENSAVER_OFFVALUE 4096
|
||||
#define XAMSCREENSAVER_ONVALUE 10
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamEnableInactivityProcessing(
|
||||
IN DWORD InactivityIndex,
|
||||
IN BOOL Enable
|
||||
);
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
XamSetInactivityTime(
|
||||
IN DWORD InactivityIndex,
|
||||
IN DWORD Minutes
|
||||
);
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
XamSetInactivityTimeFromConfig(
|
||||
DWORD InactivityIndex
|
||||
);
|
||||
|
||||
VOID
|
||||
XamResetInactivity(
|
||||
VOID
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
BOOL
|
||||
WINAPI
|
||||
XamIsSysUiInvokedByXenonButton(
|
||||
VOID
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
BOOL
|
||||
WINAPI
|
||||
XamIsSysUiInvokedByTitle(
|
||||
VOID
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
BOOL
|
||||
WINAPI
|
||||
XamIsUIActive(
|
||||
VOID
|
||||
);
|
||||
|
||||
XBOXAPI
|
||||
VOID
|
||||
WINAPI
|
||||
XamSysUiDisableAutoClose(
|
||||
BOOL fLeaveOpen
|
||||
);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Power Management SPI
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
typedef enum _XAMPOWERMODE
|
||||
{
|
||||
XAMPOWERMODE_QUIET = 0,
|
||||
XAMPOWERMODE_FULL,
|
||||
} XAMPOWERMODE, *PXAMPOWERMODE;
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamSetPowerMode(
|
||||
IN XAMPOWERMODE PowerMode
|
||||
);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Challenge Response SPI
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
XBOXAPI
|
||||
DWORD
|
||||
WINAPI
|
||||
XamExecuteChallenge(
|
||||
IN PBYTE Image,
|
||||
IN DWORD ImageSize,
|
||||
IN PBYTE Arguments,
|
||||
IN DWORD ArgumentsSize,
|
||||
IN PBYTE ResultBuffer,
|
||||
IN DWORD ResultBufferSize
|
||||
);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Internal Utility methods that are NOT exported via DLL.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
NTSTATUS
|
||||
XamQuerySymbolicLink(
|
||||
LPCSTR SymbolicLinkName,
|
||||
LPSTR DeviceNameBuffer,
|
||||
DWORD DeviceNameBufferSize
|
||||
);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
#pragma warning(pop)
|
||||
|
||||
#endif // __XAMP_H__
|
||||
Reference in New Issue
Block a user