Initial commit

This commit is contained in:
Xoro-1337
2025-11-06 15:36:24 -05:00
parent a738b93280
commit b24c1ddcbc
45 changed files with 65790 additions and 0 deletions

1402
xbdm/imp/xboxp.h Normal file
View File

@@ -0,0 +1,1402 @@
//
// 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 <pshpack1.h>
typedef struct _XDCS_DVD_CODE_INFORMATION
{
WORD bcdVersion;
DWORD dwCodeLength;
} XDCS_DVD_CODE_INFORMATION, *PXDCS_DVD_CODE_INFORMATION;
#include <poppack.h>
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_