#ifndef __XAMP_H__ #define __XAMP_H__ typedef ULONG XMSG_HANDLE; #include #include #include #include #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__