// // All APIs unique to Xbox that live in XAPILIB.LIB should be // defined in this header file // #ifndef _XBOXP_ #define _XBOXP_ #ifdef __cplusplus extern "C" { #endif #include "xbox.h" #ifdef __cplusplus } #endif #pragma warning(push) #pragma warning(disable: 4201) // unnamed struct/union #define XBOXAPI #ifdef __cplusplus extern "C" { #endif #define GUEST_SELECTOR_XUID ((XUID) 0xE000000000000000) XBOXAPI FORCEINLINE BOOL WINAPI IsOfflineXUID( XUID xuid ) { return (xuid & 0xF000000000000000) == 0xE000000000000000; } XBOXAPI FORCEINLINE BOOL WINAPI IsOnlineXUID( XUID xuid ) { return (xuid & 0xFFFF000000000000) == 0x0009000000000000; } XBOXAPI FORCEINLINE BOOL WINAPI IsGuestXUID( XUID xuid ) { DWORD HighPart; HighPart = (DWORD)(xuid >> 48); return ((HighPart & 0x000F) == 0x9) && ((HighPart & 0x00C0) > 0); } #define MAX_DISPLAY_BLOCKS 50001 XBOXAPI DWORD WINAPI XGetDisplayBlocks( IN LPCSTR szPathName ); XBOXAPI HANDLE WINAPI XapipCreateThread( IN LPSECURITY_ATTRIBUTES lpThreadAttributes OPTIONAL, IN DWORD dwStackSize OPTIONAL, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter OPTIONAL, IN DWORD dwCreationFlags OPTIONAL, IN DWORD dwThreadProcessor, OUT LPDWORD lpThreadId OPTIONAL ); #define XSAVEGAME_NOCOPY 1 XBOXAPI DWORD WINAPI XCreateSaveGame( IN LPCSTR szRootPathName, IN LPCWSTR wszSaveGameName, IN DWORD dwCreationDisposition, IN DWORD dwCreateFlags, OUT LPSTR szPathBuffer, IN UINT uSize ); XBOXAPI DWORD WINAPI XDeleteSaveGame( IN LPCSTR szRootPathName, IN LPCWSTR wszSaveGameName ); #define MAX_GAMENAME 128 typedef struct _XGAME_FIND_DATA { WIN32_FIND_DATAA wfd; CHAR szSaveGameDirectory[MAX_PATH]; WCHAR szSaveGameName[MAX_GAMENAME]; } XGAME_FIND_DATA, *PXGAME_FIND_DATA; XBOXAPI HANDLE WINAPI XFindFirstSaveGame( IN LPCSTR szRootPathName, OUT PXGAME_FIND_DATA pFindGameData ); XBOXAPI BOOL WINAPI XFindNextSaveGame( IN HANDLE hFindGame, OUT PXGAME_FIND_DATA pFindGameData ); XBOXAPI BOOL WINAPI XFindClose( IN HANDLE hFind ); #define MAX_NICKNAME 32 XBOXAPI BOOL WINAPI XSetNicknameW( IN LPCWSTR wszNickname, IN BOOL fPreserveCase ); #define XSetNickname XSetNicknameW XBOXAPI HANDLE WINAPI XFindFirstNicknameW( IN BOOL fThisTitleOnly, OUT LPWSTR wszNickname, IN UINT uSize ); #define XFindFirstNickname XFindFirstNicknameW XBOXAPI BOOL WINAPI XFindNextNicknameW( IN HANDLE hFindNickname, OUT LPWSTR wszNickname, IN UINT uSize ); #define XFindNextNickname XFindNextNicknameW typedef ULONGLONG XOFFERING_ID; #define MAX_CONTENT_DISPLAY_NAME 128 typedef struct _XCONTENT_FIND_DATA { WIN32_FIND_DATAA wfd; XOFFERING_ID qwOfferingId; DWORD dwFlags; CHAR szContentDirectory[MAX_PATH]; WCHAR szDisplayName[MAX_CONTENT_DISPLAY_NAME]; } XCONTENT_FIND_DATA, *PXCONTENT_FIND_DATA; XBOXAPI HANDLE WINAPI XFindFirstContent( IN LPCSTR szRootPathName, IN DWORD dwFlagFilter, OUT PXCONTENT_FIND_DATA pFindContentData ); XBOXAPI BOOL WINAPI XFindNextContent( IN HANDLE hFindContent, OUT PXCONTENT_FIND_DATA pFindContentData ); XBOXAPI BOOL WINAPI XGetContentInstallLocation( IN DWORD dwTitleID, IN LPCSTR szSourceMetadataFileName, OUT LPSTR szInstallDirectory ); XBOXAPI BOOL WINAPI XGetContentInstallLocationFromIDs( IN DWORD dwTitleID, IN XOFFERING_ID xOfferingID, OUT LPSTR szInstallDirectory ); XBOXAPI BOOL WINAPI XInstallContentSignatures( IN DWORD dwTitleID, IN LPCSTR szSourceMetadataFileName, IN LPCSTR szDestinationDirectory ); XBOXAPI BOOL WINAPI XCreateContentSimple( IN DWORD dwTitleID, IN XOFFERING_ID xOfferingID, IN DWORD dwContentFlags, IN LPCWSTR wszContentName, IN LPCSTR szDestinationDirectory ); XBOXAPI BOOL WINAPI XRemoveContent( IN LPCSTR szDirectoryName ); XBOXAPI HANDLE WINAPI XLoadContentSignaturesWithFileName( IN DWORD dwTitleID, IN LPCSTR szMetadataFileName ); XBOXAPI BOOL WINAPI XLocateSignatureByNameEx( IN HANDLE hSignature, IN LPCSTR szFileName, IN DWORD dwFileOffset, IN OUT LPDWORD pdwDataSize, OUT LPBYTE* ppbSignatureData, OUT LPDWORD pdwSignatureSize ); XBOXAPI BOOL WINAPI XLocateNextSignature( IN HANDLE hSignature, OUT LPSTR* pszFileName, OUT LPDWORD pdwFileNameLength, OUT LPDWORD pdwFileOffset, OUT LPDWORD pdwDataSize, OUT LPBYTE* ppbSignatureData, OUT LPDWORD pdwSignatureSize ); XBOXAPI BOOL WINAPI XInstallContentSignaturesWithFileName( IN DWORD dwTitleID, IN LPCSTR szSourceMetadataFileName, IN LPCSTR szDestinationName, IN DWORD dwInstallFlags ); XBOXAPI BOOL WINAPI XInstallContentSignaturesEx( IN DWORD dwTitleID, IN LPCSTR szSourceMetadataFileName, IN LPCSTR szInstallDirectory, IN DWORD dwInstallFlags ); #define XSIG_INSTALL_NO_CHECK_SIGNATURE 0x00000001 #define XSIG_INSTALL_MARK_AS_INSTALLED 0x00000002 #define XCALCSIG_LIVE_SIGNATURE_SIZE 100 typedef struct { DWORD SignatureFlags; BYTE LiveSignature[XCALCSIG_LIVE_SIGNATURE_SIZE]; } XCONTSIG_LIVE_SIGNATURE_INFO, *PXCONTSIG_LIVE_SIGNATURE_INFO; XBOXAPI HANDLE WINAPI XLoadContentSignaturesEx( IN DWORD dwTitleID, IN LPCSTR szDirectoryName ); #define XLoadContentSignatures(lpDirectoryName) \ XLoadContentSignaturesEx(0, lpDirectoryName) XBOXAPI BOOL WINAPI XLocateLiveSignature( IN HANDLE hSignature, OUT PXCONTSIG_LIVE_SIGNATURE_INFO pxlsInfo, OUT PBYTE pbLiveDigest ); XBOXAPI BOOL WINAPI XLocateSignatureByIndex( IN HANDLE hSignature, IN DWORD dwSignatureIndex, OUT LPBYTE* ppbSignatureData, OUT LPDWORD pdwSignatureSize ); XBOXAPI BOOL WINAPI XLocateSignatureByName( IN HANDLE hSignature, IN LPCSTR szFileName, IN DWORD dwFileOffset, IN DWORD dwDataSize, OUT LPBYTE* ppbSignatureData, OUT LPDWORD pdwSignatureSize ); XBOXAPI BOOL WINAPI XCalculateContentSignature( IN LPBYTE pbData, IN DWORD dwDataSize, OUT LPBYTE pbSignature, IN OUT LPDWORD pdwSignatureSize ); XBOXAPI VOID WINAPI XCloseContentSignatures( IN HANDLE hSignature ); XBOXAPI VOID WINAPI XComputeContentSignatureKey( IN ULONG dwTitleID, OUT PUCHAR pbSignatureKey ); XBOXAPI DWORD WINAPI XGetLocale(); #define XC_VIDEO_STANDARD_PAL_M 4 // // Index for reserved fields in XVIDEO_MODE // #define XVIDEO_MODE_INDEX_PIXEL_CLOCK 0 #define XC_AV_PACK_SDC 0 // Standard-definition component #define XC_AV_PACK_SCART 1 // SCART (composite and RGB SDTV) #define XC_AV_PACK_RFU 2 // RF SDTV #define XC_AV_PACK_HDC 3 // High-definition component #define XC_AV_PACK_RESERVED 4 // Reserved #define XC_AV_PACK_CSV 5 // Composite/S-Video #define XC_AV_PACK_PC 6 // PC (output RGB VGA, hsync/vsync/DDC) #define XC_AV_PACK_NONE 7 // Indicates no AV pack plugged in #define XC_AV_PACK_MAX 8 XBOXAPI DWORD WINAPI XGetAVPack( VOID ); XBOXAPI DWORD WINAPI XGetVideoStandard( VOID ); #define XC_VIDEO_FLAGS_LETTERBOX 0x00000010 #define XC_VIDEO_FLAGS_PAL_60Hz 0x00000040 // // Analog speaker configuration values are a enumeration while digital values // are a bitmask. 0 is not a valid analog value, but 0 in the digital word // indicates that no digital encoding or preencoded output is allowed on the // digital channel. In that case, the digital channel will output the same // data as the analog. // #define XC_AUDIO_FLAGS_SURROUND 0x00000001 #define XC_AUDIO_FLAGS_MONO 0x00000002 #define XC_AUDIO_FLAGS_ENABLE_DOLBYDIGITAL 0x00010000 #define XC_AUDIO_FLAGS_ENABLE_WMAPRO 0x00020000 #define XC_AUDIO_FLAGS_BASICMASK 0x0000FFFF #define XC_AUDIO_FLAGS_ENCODEDMASK 0xFFFF0000 #define XC_AUDIO_FLAGS_BASIC(c) ((DWORD)(c) & XC_AUDIO_FLAGS_BASICMASK) #define XC_AUDIO_FLAGS_ENCODED(c) ((DWORD)(c) & XC_AUDIO_FLAGS_ENCODEDMASK) #define XC_AUDIO_FLAGS_COMBINED(b,e) (XC_AUDIO_FLAGS_BASIC(b) | XC_AUDIO_FLAGS_ENCODED(e)) #define XC_AUDIO_FLAGS_DEFAULT XC_AUDIO_FLAGS_COMBINED(XC_AUDIO_FLAGS_SURROUND, XC_AUDIO_FLAGS_ENABLE_DOLBYDIGITAL) XBOXAPI DWORD WINAPI XGetAudioFlags( VOID ); #define XC_CONSOLE_REGION_NA 0x00 #define XC_CONSOLE_REGION_ASIA 0x01 #define XC_CONSOLE_REGION_EUROPE 0x02 #define XC_CONSOLE_REGION_RESTOFWORLD 0x03 #define XC_CONSOLE_REGION_DEVKIT 0x7F #define XC_GAME_REGION(region, subregion) \ ((XC_CONSOLE_REGION_##region << 8) | (subregion)) #define XC_GAME_REGION_NA_ALL XC_GAME_REGION(NA, 0xFF) #define XC_GAME_REGION_ASIA_ALL XC_GAME_REGION(ASIA, 0xFF) #define XC_GAME_REGION_ASIA_JAPAN XC_GAME_REGION(ASIA, 0x01) #define XC_GAME_REGION_ASIA_CHINA XC_GAME_REGION(ASIA, 0x02) #define XC_GAME_REGION_ASIA_REST XC_GAME_REGION(ASIA, 0xFC) #define XC_GAME_REGION_EUROPE_ALL XC_GAME_REGION(EUROPE, 0xFF) #define XC_GAME_REGION_EUROPE_AUNZ XC_GAME_REGION(EUROPE, 0x01) #define XC_GAME_REGION_EUROPE_REST XC_GAME_REGION(EUROPE, 0xFE) #define XC_GAME_REGION_RESTOFWORLD_ALL XC_GAME_REGION(RESTOFWORLD, 0xFF) #define XC_GAME_REGION_DEVKIT_ALL XC_GAME_REGION(DEVKIT, 0xFF) #define XC_GAME_REGION_MANUFACTURING 0x8000 #define XC_GAME_REGION_REGION(region) \ (((region) & 0xFF00) >> 8) // // These flags are stored in the retail flags (XCONFIG_USER_RETAIL_FLAGS). // #define XC_MISC_FLAG_AUTOPOWERDOWN 0x00000001 #define XC_MISC_FLAG_DONT_USE_DST 0x00000002 #define XC_MISC_FLAG_CONNECTIONNOTICE 0x00000004 #define XC_MISC_FLAG_24HCLOCK 0x00000008 #define XC_MISC_FLAG_NO_NOTIFY_DISPLAY 0x00000010 #define XC_MISC_FLAG_NO_NOTIFY_SOUND 0x00000020 #define XC_MISC_FLAG_OOBE_HAS_RUN 0x00000040 #define XC_MISC_FLAG_ALL_MASK ((XC_MISC_FLAG_AUTOPOWERDOWN) | (XC_MISC_FLAG_DONT_USE_DST) | (XC_MISC_FLAG_CONNECTIONNOTICE) | \ (XC_MISC_FLAG_24HCLOCK) | (XC_MISC_FLAG_NO_NOTIFY_DISPLAY) | (XC_MISC_FLAG_NO_NOTIFY_SOUND) | \ (XC_MISC_FLAG_OOBE_HAS_RUN)) #define XINPUT_GAMEPAD_XE 0x0400 #define XINPUT_GAMEPAD_BINDING 0x0800 #define XINPUT_FLAG_SYSTEMAPP 0x80000000 #define XINPUT_MAX_RAW_BUFFER (32) typedef struct _XINPUT_RAW { BYTE Buffer[XINPUT_MAX_RAW_BUFFER]; BYTE Length; DWORD dwPacketNumber; } XINPUT_RAW, *PXINPUT_RAW; // // The master vibration level is stored as a user profile setting. It may be // one of the following. These are redundant definitions. The actual profile // enum values may be found in xonline.h, but this header includes these // definitions for the driver and other system components. // #define XINPUT_VIBRATION_LEVEL_NONE 0 #define XINPUT_VIBRATION_LEVEL_LOW 1 #define XINPUT_VIBRATION_LEVEL_MEDIUM 2 #define XINPUT_VIBRATION_LEVEL_HIGH 3 #define XINPUT_VIBRATION_LEVEL_MAX 4 // // Battery level may only be one of the following // #define XINPUT_BATTERY_LEVEL_LITTLE 0 #define XINPUT_BATTERY_LEVEL_LOW 1 #define XINPUT_BATTERY_LEVEL_MEDIUM 2 #define XINPUT_BATTERY_LEVEL_HIGH 3 #define XINPUT_BATTERY_LEVEL_MAX 4 // // Wireless signal strength may be reported as one of the following values // #define XINPUT_SIGNAL_STRENGTH_VERY_LOW 0 #define XINPUT_SIGNAL_STRENGTH_LOW 1 #define XINPUT_SIGNAL_STRENGTH_MEDIUM 2 #define XINPUT_SIGNAL_STRENGTH_GOOD 3 #define XINPUT_SIGNAL_STRENGTH_MAX 4 typedef struct _XINPUT_DEVICE_STATS { ULONG ulBatteryLevel; ULONG ulSignalStrength; ULONG ulDeviceType; ULONG ulDevicePort; ULONG ulDeviceVersion; } XINPUT_DEVICE_STATS, *PXINPUT_DEVICE_STATS; XBOXAPI DWORD WINAPI XInputSetStateEx( IN DWORD dwUserIndex, IN PXINPUT_VIBRATION pVibration, IN BYTE bAmplitude OPTIONAL, IN BYTE bFrequency OPTIONAL, IN BYTE bOffset OPTIONAL ); XBOXAPI DWORD WINAPI XInputRawState( IN DWORD dwUserIndex, IN DWORD dwFlags, IN BOOL fSetState, IN PXINPUT_RAW pRawState ); typedef struct _XINPUT_POLLING_PARAMETERS { BYTE fAutoPoll:1; BYTE fInterruptOut:1; BYTE ReservedMBZ1:6; BYTE bInputInterval; BYTE bOutputInterval; BYTE ReservedMBZ2; } XINPUT_POLLING_PARAMETERS, *PXINPUT_POLLING_PARAMETERS; typedef struct _XINPUT_DEVICE_DESCRIPTION { WORD wVendorID; WORD wProductID; WORD wVersion; } XINPUT_DEVICE_DESCRIPTION, *PXINPUT_DEVICE_DESCRIPTION; XBOXAPI DWORD WINAPI XInputGetDeviceDescription( IN HANDLE hDevice, OUT PXINPUT_DEVICE_DESCRIPTION pDescription ); #define XINPUT_LIGHTGUN_CALIBRATION_CENTER_X 0 #define XINPUT_LIGHTGUN_CALIBRATION_CENTER_Y 0 #define XINPUT_LIGHTGUN_CALIBRATION_UPPERLEFT_X -25000 #define XINPUT_LIGHTGUN_CALIBRATION_UPPERLEFT_Y 25000 typedef struct _XINPUT_LIGHTGUN_CALIBRATION_OFFSETS { WORD wCenterX; WORD wCenterY; WORD wUpperLeftX; WORD wUpperLeftY; } XINPUT_LIGHTGUN_CALIBRATION_OFFSETS, *PXINPUT_LIGHTGUN_CALIBRATION_OFFSETS; // // XVoice APIs // typedef PVOID XVOICE_HANDLE, *PXVOICE_HANDLE; typedef struct XMEDIAPACKET *PXMEDIAPACKET; #ifdef __XVOICE_H__ XBOXAPI HRESULT WINAPI XVoiceCreate( IN DWORD dwUserIndex, IN DWORD dwMaxAttachedPackets, OUT PXVOICE_HANDLE phHandle ); XBOXAPI HRESULT WINAPI XVoiceSubmitPacket( IN XVOICE_HANDLE hObject, IN BOOL fInput, IN OUT PXMEDIAPACKET pPacket ); XBOXAPI BOOL WINAPI XVoiceClose( IN XVOICE_HANDLE hObject ); #endif // __XVOICE_H__ XBOXAPI DWORD WINAPI XCleanDrive( IN CHAR chDrive ); XBOXAPI BOOL WINAPI XapiRecovery( IN BOOL QuickFormat ); #define XINIT_LIMIT_DEVKIT_MEMORY 0x00000004 #define XINIT_NO_SETUP_HARD_DISK 0x00000008 #define XINIT_DONT_MODIFY_HARD_DISK 0x00000010 XBOXAPI DWORD WINAPI XMountUtilityDriveInternal( IN DWORD dwTitleId, IN BOOL fFormatClean, IN DWORD dwBytesPerCluster, IN SIZE_T dwFileCacheSize ); XBOXAPI BOOL WINAPI XFormatUtilityDrive( VOID ); XBOXAPI DWORD WINAPI XMountAlternateTitleA( IN LPCSTR szRootPath, IN DWORD dwAltTitleId, OUT PCHAR pchDrive ); #define XMountAlternateTitle XMountAlternateTitleA XBOXAPI DWORD WINAPI XUnmountAlternateTitleA( IN CHAR chDrive ); #define XUnmountAlternateTitle XUnmountAlternateTitleA XBOXAPI DWORD WINAPI XGetDiskSectorSizeA( IN LPCSTR szRootPathName ); #define XGetDiskSectorSize XGetDiskSectorSizeA #define XBOX_HD_SECTOR_SIZE 512 #define XBOX_DVD_SECTOR_SIZE 2048 #define XBOX_MU_SECTOR_SIZE 4096 XBOXAPI DWORD WINAPI XGetDiskClusterSizeA( IN LPCSTR szRootPathName ); #define XGetDiskClusterSize XGetDiskClusterSizeA #ifdef _XBOX_ //only define this if xbox.h was already included. #include typedef struct _XDCS_DVD_CODE_INFORMATION { WORD bcdVersion; DWORD dwCodeLength; } XDCS_DVD_CODE_INFORMATION, *PXDCS_DVD_CODE_INFORMATION; #include typedef struct _XDCS_ASYNC_DOWNLOAD_REQUEST { DWORD dwDeviceInstance; PVOID pvBuffer; ULONG ulOffset; ULONG ulLength; ULONG ulBytesRead; ULONG ulStatus; HANDLE hCompleteEvent; } XDCS_ASYNC_DOWNLOAD_REQUEST, *PXDCS_ASYNC_DOWNLOAD_REQUEST; DWORD WINAPI XDCSGetInformation( IN DWORD dwPort, OUT PDWORD pdwDeviceInstance, OUT PXDCS_DVD_CODE_INFORMATION pDvdCodeInformation ); DWORD WINAPI XDCSDownloadCode( DWORD dwDeviceInstance, PVOID pvBuffer, ULONG ulOffset, ULONG ulLength, PULONG pulBytesRead ); DWORD WINAPI XDCSDownloadCodeAsync( IN OUT PXDCS_ASYNC_DOWNLOAD_REQUEST pXDCSDownloadRequest ); #endif //_XBOX_ BOOL WINAPI XapiSetLocalTime( IN CONST SYSTEMTIME* lpLocalTime ); DWORD WINAPI XapipQueryTimeZoneInformation( OUT PTIME_ZONE_INFORMATION TimeZoneInformation, OUT PBOOL pfUseDST ); DWORD WINAPI XapipSetTimeZoneInformation( IN PTIME_ZONE_INFORMATION TimeZoneInformation ); BOOL WINAPI XapipUseDaylightSavingTime(); #define MAX_LAUNCH_DATA_SIZE 1020 #define XLDEMO_RUNMODE_KIOSKMODE 0x01 #define XLDEMO_RUNMODE_USERSELECTED 0x02 #define MAX_LAUNCH_CMDLINE_SIZE 256 // // Structures and enumerations for LaunchData. // #define XDASHLAUNCHDATA_RESERVED_SIZE (MAX_LAUNCH_DATA_SIZE - 12) #define XDASHLAUNCHDATA_COMMAND_DEFAULT 0 #define XDASHLAUNCHDATA_COMMAND_SIGNUP 1 #define XDASHLAUNCHDATA_COMMAND_NETWORKTROUBLESHOOTER 2 #define XDASHLAUNCHDATA_COMMAND_ARCADE 3 #define XDASHLAUNCHDATA_COMMAND_MEMORY 4 #define XDASHLAUNCHDATA_COMMAND_MUSIC 6 #define XDASHLAUNCHDATA_COMMAND_DVD 7 #define XDASHLAUNCHDATA_COMMAND_MCXDOWNLOADER 8 // MCX depends on this value *never* changing #define XDASHLAUNCHDATA_COMMAND_MEDIANETWORKTROUBLESHOOTER 9 #define XDASHLAUNCHDATA_COMMAND_ACCOUNTMANAGE_HOME 10 #define XDASHLAUNCHDATA_COMMAND_ACCOUNTMANAGE_PRIVACY 11 #define XDASHLAUNCHDATA_COMMAND_ACCOUNTMANAGE_ACCEPTTOU 12 #define XDASHLAUNCHDATA_COMMAND_ACCOUNTMANAGE_BILLING 13 #define XDASHLAUNCHDATA_COMMAND_GAMES_DEMOS 14 #define XDASHLAUNCHDATA_COMMAND_GAMES_TRAILERS 15 #define XDASHLAUNCHDATA_COMMAND_RETURNFROMENTRYPOINT_MUSIC 16 #define XDASHLAUNCHDATA_COMMAND_MARKETPLACE_TILES 17 #define XDASHLAUNCHDATA_COMMAND_SETTINGS 18 #define XDASHLAUNCHDATA_COMMAND_RETURNFROMENTRYPOINT_GAMES 19 #define XDASHLAUNCHDATA_COMMAND_FAMILYSETTINGS 20 #define XDASHLAUNCHDATA_COMMAND_RETURNFROMENTRYPOINT_SYSTEM 21 #define XDASHLAUNCHDATA_COMMAND_OOBE_WELCOME 22 #define XDASHLAUNCHDATA_COMMAND_GAMES_ARCADE 23 typedef struct _XDASHLAUNCHDATA { DWORD dwVersion; DWORD dwCommand; DWORD dwUserIndex; BYTE Reserved[XDASHLAUNCHDATA_RESERVED_SIZE]; } XDASHLAUNCHDATA; XBOXAPI DWORD WINAPI XSetLaunchData( IN PVOID pLaunchData, IN DWORD dwLaunchDataSize ); XBOXAPI DWORD WINAPI XGetLaunchDataSize( OUT LPDWORD pdwLaunchDataSize ); XBOXAPI DWORD WINAPI XGetLaunchData( OUT PVOID pBuffer, IN DWORD dwBufferSize ); DECLSPEC_NORETURN XBOXAPI VOID WINAPI XLaunchNewImage( IN LPCSTR szImagePath, IN DWORD dwFlags ); // XLaunchNewImage keyword constants. // Titles depend on these strings staying the same. #define XLAUNCH_KEYWORD_DETECT_MEDIA "XLNI_DET_MEDIA" #define XLAUNCH_FLAG_FROM_MEMORY 0x00000001 #define XLAUNCH_FLAG_DETECT_MEDIA 0x00000002 #define XLAUNCH_FLAG_NO_ABSOLUTE_PATHS 0x00000004 #define XLAUNCH_FLAG_NO_PACKAGES 0x00000008 #define XLAUNCH_FLAG_UNLOAD_HUD 0x00000010 #define XLAUNCH_FLAG_BOUND_PATH 0x00000020 #define XLAUNCH_FLAG_SYSTEM_VERSION 0x00000040 #define XLAUNCH_FLAG_ASSUME_DVD 0x00000080 #define XLAUNCH_FLAG_DASH_ARCADE 0x00000100 #define XLAUNCH_FLAG_HYBRID_FORCE_DVD 0x00000200 #define XLAUNCH_FLAG_HYBRID_FORCE_GAME 0x00000400 #define XLAUNCH_FLAG_HYBRID_NO_NOTIFY 0x00000800 #define XTRAY_STATE_CLOSED 0 #define XTRAY_STATE_CLOSING 1 #define XTRAY_STATE_OPEN 2 #define XTRAY_STATE_OPENING 3 #define XTRAY_STATE_READING 4 XBOXAPI DWORD WINAPI XGetTrayState( VOID ); XBOXAPI HRESULT WINAPI XLaunchMedia( VOID ); XBOXAPI VOID WINAPI XLaunchNewImageEx( IN LPCSTR szImagePath, IN LPCSTR szDDrivePath, IN LPCSTR szCmdLine, IN DWORD dwFlags ); typedef struct _XSWAPDISC_RESULTS { DWORD dwNewDiscNumber; } XSWAPDISC_RESULTS, *PXSWAPDISC_RESULTS; XBOXAPI DWORD WINAPI XSwapDiscAndLaunchNewImage( IN LPCWSTR wszDiscName, IN DWORD dwDiscNumber, IN LPCSTR szImagePath, IN DWORD dwFlags, OUT PXSWAPDISC_RESULTS pResults OPTIONAL, IN OUT PXOVERLAPPED pOverlapped OPTIONAL ); // // Register or deregister a notification routine // which will be called when a thread is created or deleted. // // NOTE: The XTHREAD_NOTIFICATION structure must remain // valid until the thread notification routine is deregistered. // For example, you can use a global variable for this. // But you should NOT use a local variable inside a function. // DWORD WINAPI XGetFilePhysicalSortKey( IN HANDLE hFile ); VOID WINAPI XSetProcessHeap( IN HANDLE hHeap ); #define XCALCSIG_SIGNATURE_SIZE 20 typedef union { BYTE Signature[XCALCSIG_SIGNATURE_SIZE]; BYTE LiveSignature[XCALCSIG_LIVE_SIGNATURE_SIZE]; } XCALCSIG_SIGNATURE, *PXCALCSIG_SIGNATURE; #define XCALCSIG_FLAG_SAVE_GAME (0x00000000) #define XCALCSIG_FLAG_NON_ROAMABLE (0x00000001) #define XCALCSIG_FLAG_CONTENT (0x00000002) #define XCALCSIG_FLAG_DIGEST (0x00000004) #define XCALCSIG_FLAG_ONLINE (0x00000008) XBOXAPI HANDLE WINAPI XCalculateSignatureBegin( IN DWORD dwFlags ); XBOXAPI HANDLE WINAPI XCalculateSignatureBeginEx( IN DWORD dwFlags, IN DWORD dwAltTitleId ); XBOXAPI DWORD WINAPI XCalculateSignatureUpdate( IN HANDLE hCalcSig, IN CONST BYTE* pbData, IN ULONG cbData ); XBOXAPI DWORD WINAPI XCalculateSignatureEnd( IN HANDLE hCalcSig, OUT PXCALCSIG_SIGNATURE pSignature ); XBOXAPI ULONG WINAPI XAutoPowerDownTimeRemaining( VOID ); typedef VOID (*FLASH_PROGRESS_ROUTINE)(ULONG BytesWritten); XBOXAPI DWORD WINAPI XapiFlashKernelImage( IN PVOID ImageBuffer, IN SIZE_T ImageSize, IN BOOL IgnoreVersionChecking, IN BOOL ForceStockImage, IN FLASH_PROGRESS_ROUTINE ProgressRoutine OPTIONAL ); XBOXAPI BOOL WINAPI XapiReplaceRootDirectoryFile( IN HANDLE hVolume, IN LPCSTR szReplacedFileName, IN LPCSTR szReplacementFileName, IN BOOL fCleanupMode ); // XOVERLAPPED::InternalLow is a Win32 error code. If the operation is pending // the value is ERROR_IO_PENDING, else it is the result of the operation. #define XCONTENTTYPE_NONE 0x00000000 #define XCONTENTTYPE_PROFILE 0x00010000 #define XCONTENTTYPE_GAMERPICTURE 0x00020000 #define XCONTENTTYPE_THEMATICSKIN 0x00030000 #define XCONTENTTYPE_CACHE 0x00040000 #define XCONTENTTYPE_STORAGEDOWNLOAD 0x00050000 #define XCONTENTTYPE_XBOXSAVEDGAME 0x00060000 #define XCONTENTTYPE_XBOXDOWNLOAD 0x00070000 #define XCONTENTTYPE_GAMEDEMO 0x00080000 #define XCONTENTTYPE_VIDEO 0x00090000 #define XCONTENTTYPE_GAMETITLE 0x000A0000 #define XCONTENTTYPE_INSTALLER 0x000B0000 #define XCONTENTTYPE_GAMETRAILER 0x000C0000 #define XCONTENTTYPE_ARCADE 0x000D0000 #define XCONTENTTYPE_PRIVATEMASK 0xFFFF0000 #define XCONTENTTYPE_PUBLICMASK 0x0000FFFF #define XCONTENTTYPE_VALID (XCONTENTTYPE_PRIVATEMASK | XCONTENTTYPE_PUBLICMASK) #define XCONTENTTYPE_ANY XCONTENTTYPE_VALID #define _XCONTENTFLAG_CREATIONMASK_ 0x0000000F #define XCONTENTFLAG_DISALLOWSOURCEDEVICESELECTION 0x00000400 #define XCONTENTFLAG_EXECUTE 0x04000000 // Private enumeration scoping #define XCONTENTFLAG_OWNER 0x10000000 #define XCONTENTFLAG_TITLE 0x20000000 #define XCONTENTFLAG_TYPE 0x40000000 #define XCONTENTFLAG_ENUM_SCOPING_MASK (XCONTENTFLAG_ENUM_EXCLUDECOMMON | \ XCONTENTFLAG_OWNER | \ XCONTENTFLAG_TITLE | \ XCONTENTFLAG_TYPE) #define XCONTENTFLAGS_VALID (XCONTENTFLAG_NONE | \ XCONTENTFLAG_CREATENEW | \ XCONTENTFLAG_CREATEALWAYS | \ XCONTENTFLAG_OPENEXISTING | \ XCONTENTFLAG_OPENALWAYS | \ XCONTENTFLAG_TRUNCATEEXISTING | \ XCONTENTFLAG_NOPROFILE_TRANSFER | \ XCONTENTFLAG_STRONG_SIGNED | \ XCONTENTFLAG_NODEVICE_TRANSFER | \ XCONTENTFLAG_MANAGESTORAGE | \ XCONTENTFLAG_FORCE_SHOW_UI | \ XCONTENTFLAG_DISALLOWSOURCEDEVICESELECTION | \ XCONTENTFLAG_ENUM_EXCLUDECOMMON | \ XCONTENTFLAG_EXECUTE | \ XCONTENTFLAG_OWNER | \ XCONTENTFLAG_TITLE | \ XCONTENTFLAG_TYPE) #ifdef __cplusplus typedef struct _XCONTENT_DATA_INTERNAL : public XCONTENT_DATA { #else // __cplusplus typedef struct _XCONTENT_DATA_INTERNAL { XCONTENT_DATA; #endif // !__cplusplus XUID xuid; DWORD dwTitleId; } XCONTENT_DATA_INTERNAL, *PXCONTENT_DATA_INTERNAL; #define XCONTENTDEVICETYPE_NONE ((XCONTENTDEVICETYPE)0) #define XCONTENTDEVICETYPE_SYSTEMMU ((XCONTENTDEVICETYPE)3) #define XCONTENTDEVICETYPE_USBMASS ((XCONTENTDEVICETYPE)16) #define XCONTENTDEVICETYPE_MASK 0xF // // This flag is OR'd into a device type if the device is unformatted // #define XCONTENTDEVICEFLAG_UNFORMATTED ((XCONTENTDEVICETYPE)0x80000000) // // This flag can be supplied to XContentCreateDeviceEnumerator to enumerate // USB mass storage devices // #define XCONTENTDEVICEFLAG_USBMASS (0x40000000) typedef struct _XCREATECONTENTPARAM { DWORD dwUserIndex; CHAR szRootName[64]; union { XCONTENT_DATA cd; XCONTENT_DATA_INTERNAL cdi; }; DWORD dwContentFlags; PDWORD pdwDisposition; PDWORD pdwLicenseMask; DWORD dwFileCacheSize; ULARGE_INTEGER uliContentSize; PXOVERLAPPED pOverlapped; DWORD cbContentData; } XCREATECONTENTPARAM, *PXCREATECONTENTPARAM; typedef PVOID HXAMAPP; #define XENUMHEADERFLAG_NONE 0x00000000 #define XENUMHEADERFLAG_FOREGROUND_PRI 0x00000001 typedef struct _XENUMERATORHEADER { HXAMAPP hxamapp; DWORD dwMsgIDEnum; DWORD dwMsgIDCloseEnum; DWORD dwUserIndex; DWORD cItemsRequested; DWORD dwEnumFlags; } XENUMERATORHEADER, *PXENUMERATORHEADER; DWORD WINAPI XContentCreateDeviceEnumerator( IN DWORD dwContentTypes, IN DWORD dwFlags, IN DWORD cItem, OUT PDWORD pcbBuffer OPTIONAL, OUT PHANDLE phEnum ); DWORD WINAPI XContentFormatDevice( IN XCONTENTDEVICEID DeviceID, IN OUT PXOVERLAPPED pOverlapped OPTIONAL ); DWORD WINAPI XContentRenameDevice( IN XCONTENTDEVICEID DeviceID, IN LPCWSTR pwszName, IN DWORD cchName ); typedef struct _XENUMERATEPARAM { DWORD dwUserIndex; DWORD dwFlags; PVOID pvPrivateEnumStructure; PVOID pvBuffer; DWORD cbBuffer; DWORD cItemsRequested; PDWORD pcItemsReturned; PXOVERLAPPED pxoverlapped; } XENUMERATEPARAM; // Enumeration flags #define ENUMERATEFLAG_NONE 0x00000000 #define ENUMERATEFLAG_BACK 0x00000001 #define ENUMERATEFLAG_FOREGROUND 0x00000002 #define ENUMERATEFLAG_MATCHINGINSTANCE 0x00000004 #define ENUMERATEFLAG_INCLUDEPARTIALDOWNLOADS 0x00000008 #define ENUMERATEFLAG_INCLUDECORRUPTCONTENT 0x00000010 //----------------------------------------------------------------------------- // Private Game Instrumentation structures and functions //----------------------------------------------------------------------------- typedef struct { DWORD dwUserIndex; XUID xuid; DWORD dwContextId; DWORD dwContextValue; } XGI_USERSETCONTEXT_MSG, *PXGI_USERSETCONTEXT_MSG; typedef struct { DWORD dwUserIndex; XUID xuid; DWORD dwPropertyId; DWORD cbValue; CONST VOID* pvValue; } XGI_USERSETPROPERTY_MSG; // General enumererator structure for XGI title and achievement enumerations typedef struct _XENUMERATOR_XGI { DWORD dwTitleId; XUID xuid; DWORD dwUserIndex; DWORD dwDetailFlags; DWORD dwCurrentOffset; BOOL fServer; } XENUMERATOR_XGI, *PXENUMERATOR_XGI; typedef struct _XGI_CREATEENUM_MSG { DWORD dwTitleId; // A title in your family or 0 for the current title DWORD dwUserIndex; // User index of locally signed-in user whose "things" are enumerated XUID xuid; // XUID of remote user whose "things" are enumerated DWORD dwDetailFlags; // Get the descriptions, etc. (used for achievements) DWORD dwStartingIndex; // Number to start at PXENUMERATOR_XGI pxenum; } XGI_CREATEENUM_MSG, *PXGI_CREATEENUM_MSG; // Message passed to system app to write an achievement typedef struct { DWORD dwNumAchievements; // Number of structs in pAchievements CONST XUSER_ACHIEVEMENT* pAchievements; // Achievement/user tuple to set } XGI_WRITEACHIEVEMENT_MSG; //----------------------------------------------------------------------------- // Internal functions //----------------------------------------------------------------------------- DWORD XVerifySameFamily(DWORD dwTitleId); // // Internal only privileges // #define XPRIVILEGE_ADD_FRIEND 255 // on|off #define XPRIVILEGE_MULTIPLAYER_ENABLED_BY_TIER 253 // on|off #define XPRIVILEGE_VIDEO_MESSAGING_SEND 250 // on|off #define XPRIVILEGE_XBOX1_LIVE_ACCESS 242 // on|off #define X_PROPERTY_MODIFIER_MASK 0x0F000000 #define X_PROPERTY_MATCHTYPE_MASK 0x00F00000 #define X_PROPERTY_RESERVED_MASK 0x000F0000 // These must match the X_ATTRIBUTE_TYPE_MASK value defines #define X_PROPERTY_MODIFIER_PARAM 0x02000000 #define X_PROPERTY_MODIFIER_BUILTIN 0x03000000 #define X_PROPERTY_MODIFIER_CONSTANT 0x05000000 // These must match the X_ATTRIBUTE_DATATYPE_MASK value defines #define X_PROPERTY_MATCHTYPE_INTEGER 0x00000000 #define X_PROPERTY_MATCHTYPE_STRING 0x00100000 #define X_PROPERTY_MATCHTYPE_BLOB 0x00200000 #define X_PROPERTY_MATCHTYPE_NULL 0x00F00000 // Picture keys are in the format of XXXXXXXXXYYYYYYYYZZZZZZZZ // where // XXXXXXXX is the title id associated with the picture (in hex) // YYYYYYYY is the normal picture image id (in hex) // ZZZZZZZZ is the small picture image id (in hex) // #define XUSER_PICTURE_KEY_LEN ((sizeof(DWORD) * 2) * 3) // Add room for a terminating null #define XUSER_PICTURE_KEY_CHARS (XUSER_PICTURE_KEY_LEN + 1) // Stats APIs //----------------------------------------------------------------------------- // Private stats structures and functions //----------------------------------------------------------------------------- typedef struct _XGI_VIEWRESET_MSG { DWORD dwUserIndex; DWORD dwViewId; } XGI_VIEWRESET_MSG, *PXGI_VIEWRESET_MSG; typedef struct _XGI_STATSREAD_MSG { DWORD dwTitleId; DWORD dwNumXuids; CONST XUID* pXuids; DWORD dwNumStatsSpecs; CONST XUSER_STATS_SPEC* pSpecs; DWORD cbResults; PXUSER_STATS_READ_RESULTS pResults; } XGI_STATSREAD_MSG, *PXGI_STATSREAD_MSG; typedef struct _XGI_STATSENUM_MSG { DWORD dwTitleId; DWORD dwRankStart; DWORD dwNumRows; DWORD dwNumStatsSpecs; CONST XUSER_STATS_SPEC* pSpecs; DWORD cbBuffer; PHANDLE ph; // Handle to created enumerator } XGI_STATSENUM_MSG, *PXGI_STATSENUM_MSG; typedef enum _XGI_STATS_ENUMERATOR_TYPE { XGI_STATS_ENUM_BY_XUID, XGI_STATS_ENUM_BY_RANK, XGI_STATS_ENUM_BY_RANK_PER_SPEC, XGI_STATS_ENUM_BY_RATING } XGI_STATS_ENUMERATOR_TYPE; // Data held by each stats enumerator. typedef struct _XENUMERATOR_STATS { DWORD dwTitleId; XGI_STATS_ENUMERATOR_TYPE enumType; ULONGLONG qwPivot; PDWORD pStaringRanks; DWORD dwNumStatsSpecs; PXUSER_STATS_SPEC pSpecs; } XENUMERATOR_STATS, *PXENUMERATOR_STATS; typedef struct _XGI_CREATESTATSENUM_MSG { DWORD dwTitleId; PXENUMERATOR_STATS pStatsEnum; } XGI_CREATESTATSENUM_MSG, *PXGI_CREATESTATSENUM_MSG; // Signin UI API #define XSSUI_FLAGS_ADDUSER 0x00010000 #define XSSUI_FLAGS_COMPLETESIGNIN 0x00020000 #define XSSUI_FLAGS_SHOWONLYPARENTALLYCONTROLLED 0x00040000 #define XSSUI_FLAGS_ENABLE_GUEST 0x00080000 #define XSSUI_FLAGS_DISALLOWRELOAD 0x00100000 #define XSSUI_FLAGS_VALID (XSSUI_FLAGS_SHOWONLYONLINEENABLED | \ XSSUI_FLAGS_LOCALSIGNINONLY | \ XSSUI_FLAGS_ADDUSER | \ XSSUI_FLAGS_COMPLETESIGNIN | \ XSSUI_FLAGS_SHOWONLYPARENTALLYCONTROLLED | \ XSSUI_FLAGS_ENABLE_GUEST | \ XSSUI_FLAGS_DISALLOWRELOAD) XBOXAPI DWORD WINAPI XShowSigninUIp( IN DWORD dwUserIndex, IN DWORD cPanes, IN DWORD dwFlags ); typedef enum _XSHOWMARKETPLACEUI_PRIVATE_ENTRYPOINTS { XSHOWMARKETPLACEUI_PRIVATE_ENTRYPOINT_ADDPOINTS = XSHOWMARKETPLACEUI_ENTRYPOINT_MAX, XSHOWMARKETPLACEUI_PRIVATE_ENTRYPOINT_PREPAIDCODE, XSHOWMARKETPLACEUI_PRIVATE_ENTRYPOINT_FNC, XSHOWMARKETPLACEUI_PRIVATE_ENTRYPOINT_GAMERTAGPURCHASE, XSHOWMARKETPLACEUI_PRIVATE_ENTRYPOINT_SIGNUP_CREDITCARD, XSHOWMARKETPLACEUI_PRIVATE_ENTRYPOINT_SIGNUP_PARENTCREDITCARD, XSHOWMARKETPLACEUI_PRIVATE_ENTRYPOINT_FILTERED_CONTENTLIST, XSHOWMARKETPLACEUI_PRIVATE_ENTRYPOINT_MAX } XSHOWMARKETPLACEUI_PRIVATE_ENTRYPOINTS; #define XMB_ICONMASK 0x00000003 #define XMB_WAITANIMATION 0x00001000 #define XMB_LIVEPASSCODEMODE 0x00030000 #define XMB_MODEMASK 0x00030000 #define MAXACTIONTEXTLENGTH 30 #define MAXACTIONS 3 XBOXAPI VOID WINAPI XCustomGetActionSetting( IN DWORD dwActionIndex, OUT DWORD* pdwFlags, OUT LPWSTR szActionText, IN DWORD cchMaxText ); XBOXAPI VOID WINAPI XCustomBroadcastActionEvent( IN DWORD dwUserIndex, IN DWORD dwActionIndex, IN XUID xuid ); #ifndef HXUIBRUSH typedef struct _XUIBRUSH* HXUIBRUSH; #endif HRESULT WINAPI XCustomGetBannerImage( OUT HXUIBRUSH* phBrush ); #ifdef __cplusplus } #endif #pragma warning(pop) #endif // _XBOXP_