mirror of
https://github.com/XWine1/SlimEra.git
synced 2026-07-24 12:32:28 -07:00
198 lines
5.1 KiB
C
198 lines
5.1 KiB
C
#ifndef _XBOX_ERA_
|
|
#define _XBOX_ERA_
|
|
|
|
#include <Windows.h>
|
|
|
|
#define MEM_GRAPHICS 0x10000000
|
|
#define MEM_TITLE 0x40000000
|
|
|
|
typedef enum _CONSOLE_TYPE
|
|
{
|
|
CONSOLE_TYPE_UNKNOWN,
|
|
CONSOLE_TYPE_XBOX_ONE,
|
|
CONSOLE_TYPE_XBOX_ONE_S,
|
|
CONSOLE_TYPE_XBOX_ONE_X,
|
|
CONSOLE_TYPE_XBOX_ONE_X_DEVKIT,
|
|
} CONSOLE_TYPE, *PCONSOLE_TYPE, *LPCONSOLE_TYPE;
|
|
|
|
EXTERN_C CONSOLE_TYPE WINAPI GetConsoleType();
|
|
|
|
typedef struct _SYSTEMOSVERSIONINFO
|
|
{
|
|
BYTE MajorVersion;
|
|
BYTE MinorVersion;
|
|
WORD BuildNumber;
|
|
WORD Revision;
|
|
} SYSTEMOSVERSIONINFO, *PSYSTEMOSVERSIONINFO, *LPSYSTEMOSVERSIONINFO;
|
|
|
|
EXTERN_C VOID WINAPI GetSystemOSVersion(
|
|
_Out_ LPSYSTEMOSVERSIONINFO lpVersionInformation);
|
|
|
|
typedef struct _PROCESSOR_SCHEDULING_STATISTICS
|
|
{
|
|
ULONGLONG RunningTime;
|
|
ULONGLONG IdleTime;
|
|
ULONGLONG GlobalTime;
|
|
} PROCESSOR_SCHEDULING_STATISTICS, *PPROCESSOR_SCHEDULING_STATISTICS, *LPPROCESSOR_SCHEDULING_STATISTICS;
|
|
|
|
EXTERN_C VOID WINAPI QueryProcessorSchedulingStatistics(
|
|
_Out_ PPROCESSOR_SCHEDULING_STATISTICS lpStatistics);
|
|
|
|
EXTERN_C BOOL WINAPI SetThreadpoolAffinityMask(
|
|
_Inout_ PTP_POOL Pool,
|
|
_In_ DWORD_PTR dwThreadAffinityMask);
|
|
|
|
EXTERN_C BOOL WINAPI SetThreadName(
|
|
_In_ HANDLE hThread,
|
|
_In_ PCWSTR lpThreadName);
|
|
|
|
EXTERN_C BOOL WINAPI GetThreadName(
|
|
_In_ HANDLE hThread,
|
|
_Out_ PWSTR lpThreadName,
|
|
_In_ SIZE_T dwBufferLength,
|
|
_Out_ PSIZE_T pdwReturnLength);
|
|
|
|
typedef struct _TITLEMEMORYSTATUS
|
|
{
|
|
DWORD dwLength;
|
|
DWORD dwReserved;
|
|
ULONGLONG ullTotalMem;
|
|
ULONGLONG ullAvailMem;
|
|
ULONGLONG ullLegacyUsed;
|
|
ULONGLONG ullLegacyPeak;
|
|
ULONGLONG ullLegacyAvail;
|
|
ULONGLONG ullTitleUsed;
|
|
ULONGLONG ullTitleAvail;
|
|
ULONGLONG ullLegacyPageTableUsed;
|
|
ULONGLONG ullTitlePageTableUsed;
|
|
} TITLEMEMORYSTATUS, *PTITLEMEMORYSTATUS, *LPTITLEMEMORYSTATUS;
|
|
|
|
EXTERN_C BOOL WINAPI TitleMemoryStatus(
|
|
_Inout_ LPTITLEMEMORYSTATUS lpBuffer);
|
|
|
|
EXTERN_C BOOL WINAPI JobTitleMemoryStatus(
|
|
_Inout_ LPTITLEMEMORYSTATUS lpBuffer);
|
|
|
|
typedef struct _TOOLINGMEMORYSTATUS
|
|
{
|
|
DWORD dwLength;
|
|
DWORD dwReserved;
|
|
ULONGLONG ullTotalMem;
|
|
ULONGLONG ullAvailMem;
|
|
ULONGLONG ulPeakUsage;
|
|
ULONGLONG ullPageTableUsage;
|
|
} TOOLINGMEMORYSTATUS, *PTOOLINGMEMORYSTATUS, *LPTOOLINGMEMORYSTATUS;
|
|
|
|
EXTERN_C BOOL WINAPI ToolingMemoryStatus(
|
|
_Inout_ LPTOOLINGMEMORYSTATUS lpBuffer);
|
|
|
|
EXTERN_C BOOL WINAPI AllocateTitlePhysicalPages(
|
|
_In_ HANDLE hProcess,
|
|
_In_ DWORD flAllocationType,
|
|
_Inout_ PULONG_PTR NumberOfPages,
|
|
_Out_ PULONG_PTR PageArray);
|
|
|
|
EXTERN_C BOOL WINAPI FreeTitlePhysicalPages(
|
|
_In_ HANDLE hProcess,
|
|
_In_ ULONG_PTR NumberOfPages,
|
|
_In_ PULONG_PTR PageArray);
|
|
|
|
EXTERN_C PVOID WINAPI MapTitlePhysicalPages(
|
|
_In_opt_ PVOID VirtualAddress,
|
|
_In_ ULONG_PTR NumberOfPages,
|
|
_In_ DWORD flAllocationType,
|
|
_In_ DWORD flProtect,
|
|
_In_ PULONG_PTR PageArray);
|
|
|
|
// This is not a standard ERA function, it is provided for convenience
|
|
// to aid in the implementation of the Direct3D D3DMapEsramMemory API.
|
|
EXTERN_C HRESULT WINAPI MapTitleEsramPages(
|
|
_In_ PVOID VirtualAddress,
|
|
_In_ UINT NumberOfPages,
|
|
_In_ DWORD flAllocationType,
|
|
_In_opt_ UINT const *PageArray);
|
|
|
|
typedef union _XALLOC_ATTRIBUTES
|
|
{
|
|
ULONGLONG dwAttributes;
|
|
|
|
struct
|
|
{
|
|
ULONGLONG dwObjectType : 14;
|
|
ULONGLONG dwPageSize : 2;
|
|
ULONGLONG dwAllocatorId : 8;
|
|
ULONGLONG dwAlignment : 5;
|
|
ULONGLONG dwMemoryType : 4;
|
|
ULONGLONG reserved : 31;
|
|
} s;
|
|
} XALLOC_ATTRIBUTES, *PXALLOC_ATTRIBUTES, *LPXALLOC_ATTRIBUTES;
|
|
|
|
typedef enum _XALLOC_PAGESIZE
|
|
{
|
|
XALLOC_PAGESIZE_4KB,
|
|
XALLOC_PAGESIZE_64KB,
|
|
XALLOC_PAGESIZE_4MB,
|
|
} XALLOC_PAGESIZE, *PXALLOC_PAGESIZE;
|
|
|
|
typedef enum _XALLOC_MEMTYPE
|
|
{
|
|
XALLOC_MEMTYPE_HEAP,
|
|
XALLOC_MEMTYPE_GRAPHICS_1,
|
|
XALLOC_MEMTYPE_GRAPHICS_2,
|
|
XALLOC_MEMTYPE_GRAPHICS_3,
|
|
XALLOC_MEMTYPE_GRAPHICS_4,
|
|
XALLOC_MEMTYPE_GRAPHICS_5,
|
|
XALLOC_MEMTYPE_GRAPHICS_6,
|
|
XALLOC_MEMTYPE_PHYSICAL_1,
|
|
XALLOC_MEMTYPE_PHYSICAL_2,
|
|
XALLOC_MEMTYPE_PHYSICAL_3,
|
|
} XALLOC_MEMTYPE, *PXALLOC_MEMTYPE;
|
|
|
|
EXTERN_C PVOID WINAPI XMemAllocDefault(
|
|
_In_ SIZE_T dwSize,
|
|
_In_ ULONGLONG dwAttributes);
|
|
|
|
EXTERN_C void WINAPI XMemFreeDefault(
|
|
_In_ PVOID lpAddress,
|
|
_In_ ULONGLONG dwAttributes);
|
|
|
|
EXTERN_C PVOID WINAPI XMemAlloc(
|
|
_In_ SIZE_T dwSize,
|
|
_In_ ULONGLONG dwAttributes);
|
|
|
|
EXTERN_C void WINAPI XMemFree(
|
|
_In_ PVOID lpAddress,
|
|
_In_ ULONGLONG dwAttributes);
|
|
|
|
typedef PVOID WINAPI XMEMALLOC_ROUTINE(
|
|
_In_ SIZE_T dwSize,
|
|
_In_ ULONGLONG dwAttributes);
|
|
|
|
typedef XMEMALLOC_ROUTINE *PXMEMALLOC_ROUTINE, *LPXMEMALLOC_ROUTINE;
|
|
|
|
typedef void WINAPI XMEMFREE_ROUTINE(
|
|
_In_ PVOID lpAddress,
|
|
_In_ ULONGLONG dwAttributes);
|
|
|
|
typedef XMEMFREE_ROUTINE *PXMEMFREE_ROUTINE, *LPXMEMFREE_ROUTINE;
|
|
|
|
EXTERN_C void WINAPI XMemSetAllocationHooks(
|
|
_In_opt_ PXMEMALLOC_ROUTINE pAllocRoutine,
|
|
_In_opt_ PXMEMFREE_ROUTINE pFreeRoutine);
|
|
|
|
EXTERN_C void WINAPI XMemCheckDefaultHeaps();
|
|
|
|
// XMemSetAllocationHysteresis
|
|
|
|
// XMemGetAllocationHysteresis
|
|
|
|
// XMemPreallocateFreeSpace
|
|
|
|
// XMemGetAllocationStatistics
|
|
|
|
// XMemGetAuxiliaryTitleMemory
|
|
|
|
// XMemReleaseAuxiliaryTitleMemory
|
|
|
|
#endif /* _XBOX_ERA_ */
|