diff --git a/lib/xboxkrnl/ntstatus.h b/lib/xboxkrnl/ntstatus.h index f18802e08..306ab304b 100644 --- a/lib/xboxkrnl/ntstatus.h +++ b/lib/xboxkrnl/ntstatus.h @@ -32,6 +32,7 @@ #define STATUS_IN_PAGE_ERROR ((DWORD)0xC0000006L) #define STATUS_INVALID_HANDLE ((DWORD)0xC0000008L) #define STATUS_INVALID_PARAMETER ((DWORD)0xC000000DL) +#define STATUS_INVALID_DEVICE_REQUEST ((DWORD)0xC0000010L) #define STATUS_END_OF_FILE ((DWORD)0xC0000011L) #define STATUS_NO_MEMORY ((DWORD)0xC0000017L) #define STATUS_ILLEGAL_INSTRUCTION ((DWORD)0xC000001DL) @@ -45,8 +46,10 @@ #define STATUS_OBJECT_NAME_NOT_FOUND ((DWORD)0xC0000034L) #define STATUS_OBJECT_NAME_COLLISION ((DWORD)0xC0000035L) #define STATUS_OBJECT_PATH_NOT_FOUND ((DWORD)0xC000003AL) +#define STATUS_SHARING_VIOLATION ((DWORD)0xC0000043L) #define STATUS_MUTANT_NOT_OWNED ((DWORD)0xC0000046L) #define STATUS_SEMAPHORE_LIMIT_EXCEEDED ((DWORD)0xC0000047L) +#define STATUS_SUSPEND_COUNT_EXCEEDED ((DWORD)0xC000004AL) #define STATUS_ARRAY_BOUNDS_EXCEEDED ((DWORD)0xC000008CL) #define STATUS_FLOAT_DENORMAL_OPERAND ((DWORD)0xC000008DL) #define STATUS_FLOAT_DIVIDE_BY_ZERO ((DWORD)0xC000008EL) @@ -75,6 +78,7 @@ #define STATUS_INVALID_PARAMETER_11 ((DWORD)0xC00000F9L) #define STATUS_INVALID_PARAMETER_12 ((DWORD)0xC00000FAL) #define STATUS_STACK_OVERFLOW ((DWORD)0xC00000FDL) +#define STATUS_CANCELLED ((DWORD)0xC0000120L) #define STATUS_CONTROL_C_EXIT ((DWORD)0xC000013AL) #define STATUS_TOO_MANY_SECRETS ((DWORD)0xC0000156L) #define STATUS_HANDLE_NOT_CLOSABLE ((DWORD)0xC0000235L) diff --git a/lib/xboxkrnl/xboxdef.h b/lib/xboxkrnl/xboxdef.h index 095b503ef..46b2533a3 100644 --- a/lib/xboxkrnl/xboxdef.h +++ b/lib/xboxkrnl/xboxdef.h @@ -48,6 +48,8 @@ typedef ULONGLONG QUAD; typedef ULONG ULONG_PTR; typedef LONG LONG_PTR; +typedef __builtin_va_list VA_LIST; + typedef ULONG_PTR DWORD_PTR; typedef struct _FLOATING_SAVE_AREA diff --git a/lib/xboxkrnl/xboxkrnl.exe.def b/lib/xboxkrnl/xboxkrnl.exe.def index cce520347..a607e6a4f 100644 --- a/lib/xboxkrnl/xboxkrnl.exe.def +++ b/lib/xboxkrnl/xboxkrnl.exe.def @@ -23,7 +23,7 @@ EXPORTS ExEventObjectType @ 16 NONAME DATA ExFreePool@4 @ 17 NONAME ExInitializeReadWriteLock@4 @ 18 NONAME - ExInterlockedAddLargeInteger@16 @ 19 NONAME + ExInterlockedAddLargeInteger@12 @ 19 NONAME @ExInterlockedAddLargeStatistic@8 @ 20 NONAME @ExInterlockedCompareExchange64@12 @ 21 NONAME ExMutantObjectType @ 22 NONAME DATA diff --git a/lib/xboxkrnl/xboxkrnl.h b/lib/xboxkrnl/xboxkrnl.h index 6ac83b721..a288dc2a5 100644 --- a/lib/xboxkrnl/xboxkrnl.h +++ b/lib/xboxkrnl/xboxkrnl.h @@ -71,6 +71,8 @@ typedef UCHAR KIRQL, *PKIRQL; #define PASSIVE_LEVEL 0 #define APC_LEVEL 1 #define DISPATCH_LEVEL 2 +#define PROFILE_LEVEL 27 +#define HIGH_LEVEL 31 typedef ULONG PFN_COUNT; typedef ULONG PFN_NUMBER, *PPFN_NUMBER; @@ -719,6 +721,17 @@ typedef struct _LAUNCH_DATA_PAGE #define LDT_LAUNCH_DASHBOARD_REASON_FORCE_ACCOUNT_NAME_CHANGE 11 #define LDT_LAUNCH_DASHBOARD_REASON_FORCE_BILLING_CHANGE 12 +typedef enum _KOBJECTS { + EventNotificationObject = 0, + EventSynchronizationObject = 1, + MutantObject = 2, + QueueObject = 4, + SemaphoreObject = 5, + ThreadObject = 6, + TimerNotificationObject = 8, + TimerSynchronizationObject = 9, +} KOBJECTS; + typedef struct _DISPATCHER_HEADER { UCHAR Type; @@ -1082,6 +1095,8 @@ typedef struct _SINGLE_LIST_ENTRY struct _SINGLE_LIST_ENTRY *Next; /**< Pointer to the next (or first, if this is a header) entry in the singly linked list (NULL if there is none) */ } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY; +typedef SINGLE_LIST_ENTRY SLIST_ENTRY, *PSLIST_ENTRY; + /** * Serves as a header for a singly linked list. Initialized by ExInitializeSListHead */ @@ -1237,12 +1252,21 @@ typedef NTSTATUS (NTAPI *PDRIVER_DISPATCH) ( IN struct _IRP *Irp ); +#define IRP_MJ_CREATE 0x00 +#define IRP_MJ_CLOSE 0x01 +#define IRP_MJ_READ 0x02 +#define IRP_MJ_WRITE 0x03 +#define IRP_MJ_FLUSH_BUFFERS 0x06 +#define IRP_MJ_DEVICE_CONTROL 0x0A +#define IRP_MJ_INTERNAL_DEVICE_CONTROL 0x0B +#define IRP_MJ_MAXIMUM_FUNCTION 0x0D + typedef struct _DRIVER_OBJECT { PDRIVER_STARTIO DriverStartIo; PDRIVER_DELETEDEVICE DriverDeleteDevice; PDRIVER_DISMOUNTVOLUME DriverDismountVolume; - PDRIVER_DISPATCH MajorFunction[0x0E]; + PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1]; } DRIVER_OBJECT, *PDRIVER_OBJECT; typedef struct _DEVICE_OBJECT @@ -1853,19 +1877,19 @@ XBAPI ULONG NTAPI RtlWalkFrameChain IN ULONG Flags ); -XBAPI VOID CDECL RtlVsprintf +XBAPI INT CDECL RtlVsprintf ( CHAR *, CONST CHAR*, - ... + VA_LIST ); -XBAPI VOID CDECL RtlVsnprintf +XBAPI INT CDECL RtlVsnprintf ( CHAR *, SIZE_T, CONST CHAR*, - ... + VA_LIST ); XBAPI VOID NTAPI RtlUpperString @@ -1937,7 +1961,7 @@ XBAPI NTSTATUS NTAPI RtlUnicodeToMultiByteN ULONG BytesInUnicodeString ); -XBAPI NTSTATUS XBAPI RtlUnicodeStringToInteger +XBAPI NTSTATUS NTAPI RtlUnicodeStringToInteger ( PUNICODE_STRING String, ULONG Base, @@ -1985,14 +2009,14 @@ XBAPI BOOLEAN NTAPI RtlTimeFieldsToTime OUT PLARGE_INTEGER Time ); -XBAPI VOID CDECL RtlSprintf +XBAPI INT CDECL RtlSprintf ( CHAR *, CONST CHAR *, ... ); -XBAPI VOID CDECL RtlSnprintf +XBAPI INT CDECL RtlSnprintf ( CHAR *, SIZE_T, @@ -2972,6 +2996,8 @@ XBAPI NTSTATUS NTAPI NtFlushBuffersFile OUT PIO_STATUS_BLOCK IoStatusBlock ); +#define DUPLICATE_CLOSE_SOURCE 0x00000001 + XBAPI NTSTATUS NTAPI NtDuplicateObject ( IN HANDLE SourceHandle, @@ -3050,7 +3076,7 @@ XBAPI NTSTATUS NTAPI NtDeviceIoControlFile ); -XBAPI BOOLEAN NTAPI NtDeleteFile +XBAPI NTSTATUS NTAPI NtDeleteFile ( IN POBJECT_ATTRIBUTES ObjectAttributes ); @@ -3637,7 +3663,7 @@ XBAPI PLIST_ENTRY NTAPI KeRemoveQueue XBAPI BOOLEAN NTAPI KeRemoveEntryDeviceQueue ( IN PKDEVICE_QUEUE DeviceQueue, - IN PKDEVICE_QUEUE DeviceQueueEntry + IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry ); XBAPI PKDEVICE_QUEUE_ENTRY NTAPI KeRemoveDeviceQueue @@ -3703,7 +3729,7 @@ XBAPI VOID NTAPI KeLeaveCriticalRegion (void); * Checks whether the code is executed in a DPC context * @return TRUE if the code is running in a DPC context, FALSE otherwise **/ -XBAPI BOOLEAN NTAPI KeIsExecutingDpc (void); +XBAPI ULONG NTAPI KeIsExecutingDpc (void); XBAPI volatile KSYSTEM_TIME KeInterruptTime; @@ -4216,6 +4242,16 @@ XBAPI PFN_COUNT NTAPI FscGetCacheSize (void); XBAPI OBJECT_TYPE ExTimerObjectType; XBAPI OBJECT_TYPE ExSemaphoreObjectType; +/* Registry value types */ +#define REG_NONE 0 +#define REG_SZ 1 +#define REG_EXPAND_SZ 2 +#define REG_BINARY 3 +#define REG_DWORD 4 +#define REG_DWORD_LITTLE_ENDIAN 4 +#define REG_DWORD_BIG_ENDIAN 5 +#define REG_MULTI_SZ 7 + /* Offsets for ExSaveNonVolatileSetting / ExQueryNonVolatileSetting */ #define XC_TIMEZONE_BIAS 0x0000 #define XC_TZ_STD_NAME 0x0001