Merge branch 'master' of https://github.com/Cxbx-Reloaded/Cxbx-Reloaded into NV2A_WORK

This commit is contained in:
Luke Usher 2016-12-29 13:19:09 +00:00
commit e1b9923bad
11 changed files with 1293 additions and 181 deletions

View File

@ -269,7 +269,15 @@ XBSYSAPI EXPORTNUM(207) NTSTATUS NTAPI NtQueryDirectoryFile
); );
XBSYSAPI VOID *NtQueryDirectoryObject; XBSYSAPI VOID *NtQueryDirectoryObject;
XBSYSAPI VOID *NtQueryEvent;
// ******************************************************************
// * 0x00D1 - NtQueryEvent()
// ******************************************************************
XBSYSAPI EXPORTNUM(209) NTSTATUS NTAPI NtQueryEvent
(
IN HANDLE EventHandle,
OUT PEVENT_BASIC_INFORMATION EventInformation
);
// ****************************************************************** // ******************************************************************
// * NtQueryFullAttributesFile // * NtQueryFullAttributesFile
@ -298,7 +306,15 @@ XBSYSAPI EXPORTNUM(211) NTSTATUS NTAPI NtQueryInformationFile
XBSYSAPI VOID *NtQueryIoCompletion; XBSYSAPI VOID *NtQueryIoCompletion;
XBSYSAPI VOID *NtQueryMutant; XBSYSAPI VOID *NtQueryMutant;
XBSYSAPI VOID *NtQuerySemaphore;
// ******************************************************************
// * 0x00D6 - NtQuerySemaphore()
// ******************************************************************
XBSYSAPI EXPORTNUM(214) NTSTATUS NTAPI NtQuerySemaphore
(
IN HANDLE SemaphoreHandle,
OUT PSEMAPHORE_BASIC_INFORMATION SemaphoreInformation
);
// ****************************************************************** // ******************************************************************
// * 0x00D7 - NtQuerySymbolicLinkObject() // * 0x00D7 - NtQuerySymbolicLinkObject()

View File

@ -171,7 +171,7 @@ XBSYSAPI EXPORTNUM(277) VOID NTAPI RtlEnterCriticalSection
XBSYSAPI VOID *RtlEnterCriticalSectionAndRegion; XBSYSAPI VOID *RtlEnterCriticalSectionAndRegion;
// ****************************************************************** // ******************************************************************
// * RtlEnterCriticalSection // * 0x0117 - RtlEqualString()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(279) BOOLEAN NTAPI RtlEqualString XBSYSAPI EXPORTNUM(279) BOOLEAN NTAPI RtlEqualString
( (
@ -180,12 +180,64 @@ XBSYSAPI EXPORTNUM(279) BOOLEAN NTAPI RtlEqualString
IN BOOLEAN CaseSensitive IN BOOLEAN CaseSensitive
); );
XBSYSAPI VOID *RtlEqualUnicodeString; // ******************************************************************
XBSYSAPI VOID *RtlExtendedIntegerMultiply; // * 0x0118 - RtlEqualUnicodeString()
XBSYSAPI VOID *RtlExtendedLargeIntegerDivide; // ******************************************************************
XBSYSAPI VOID *RtlExtendedMagicDivide; XBSYSAPI EXPORTNUM(280) BOOLEAN NTAPI RtlEqualUnicodeString
XBSYSAPI VOID *RtlFillMemory; (
XBSYSAPI VOID *RtlFillMemoryUlong; IN PUNICODE_STRING String1,
IN PUNICODE_STRING String2,
IN BOOLEAN CaseSensitive
);
// ******************************************************************
// * 0x0119 - RtlExtendedIntegerMultiply()
// ******************************************************************
XBSYSAPI EXPORTNUM(281) LARGE_INTEGER NTAPI RtlExtendedIntegerMultiply
(
IN LARGE_INTEGER Multiplicand,
IN LONG Multiplier
);
// ******************************************************************
// * 0x011A - RtlExtendedLargeIntegerDivide()
// ******************************************************************
XBSYSAPI EXPORTNUM(282) LARGE_INTEGER NTAPI RtlExtendedLargeIntegerDivide
(
IN LARGE_INTEGER Dividend,
IN ULONG Divisor,
IN PULONG Remainder // OUT? OPTIONAL?
);
// ******************************************************************
// * 0x011B - RtlExtendedMagicDivide()
// ******************************************************************
XBSYSAPI EXPORTNUM(283) LARGE_INTEGER NTAPI RtlExtendedMagicDivide
(
IN LARGE_INTEGER Dividend,
IN LARGE_INTEGER MagicDivisor,
IN CCHAR ShiftCount
);
// ******************************************************************
// * 0x011C - RtlFillMemory()
// ******************************************************************
XBSYSAPI EXPORTNUM(284) VOID NTAPI RtlFillMemory
(
IN VOID UNALIGNED *Destination,
IN DWORD Length,
IN BYTE Fill
);
// ******************************************************************
// * 0x011D - RtlFillMemoryUlong()
// ******************************************************************
XBSYSAPI EXPORTNUM(285) VOID NTAPI RtlFillMemoryUlong
(
IN PVOID Destination,
IN SIZE_T Length,
IN ULONG Pattern
);
// ****************************************************************** // ******************************************************************
// * RtlFreeAnsiString // * RtlFreeAnsiString
@ -195,7 +247,14 @@ XBSYSAPI EXPORTNUM(286) VOID NTAPI RtlFreeAnsiString
IN OUT PANSI_STRING AnsiString IN OUT PANSI_STRING AnsiString
); );
XBSYSAPI VOID *RtlFreeUnicodeString; // ******************************************************************
// * 0x011F - RtlFreeUnicodeString()
// ******************************************************************
XBSYSAPI EXPORTNUM(287) VOID NTAPI RtlFreeUnicodeString
(
IN OUT PUNICODE_STRING UnicodeString
);
XBSYSAPI VOID *RtlGetCallersAddress; XBSYSAPI VOID *RtlGetCallersAddress;
// ****************************************************************** // ******************************************************************
@ -225,8 +284,26 @@ XBSYSAPI EXPORTNUM(291) VOID NTAPI RtlInitializeCriticalSection
IN PRTL_CRITICAL_SECTION CriticalSection IN PRTL_CRITICAL_SECTION CriticalSection
); );
XBSYSAPI VOID *RtlIntegerToChar; // ******************************************************************
XBSYSAPI VOID *RtlIntegerToUnicodeString; // * 0x0124 - RtlIntegerToChar()
// ******************************************************************
XBSYSAPI EXPORTNUM(292) NTSTATUS NTAPI RtlIntegerToChar
(
IN ULONG Value,
IN ULONG Base,
IN LONG OutputLength,
IN PSZ String
);
// ******************************************************************
// * 0x0125 - RtlIntegerToUnicodeString()
// ******************************************************************
XBSYSAPI EXPORTNUM(293) NTSTATUS NTAPI RtlIntegerToUnicodeString
(
IN ULONG Value,
IN ULONG Base,
IN PUNICODE_STRING String
);
// ****************************************************************** // ******************************************************************
// * RtlLeaveCriticalSection // * RtlLeaveCriticalSection
@ -243,10 +320,17 @@ XBSYSAPI VOID *RtlLeaveCriticalSectionAndRegion;
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(296) CHAR NTAPI RtlLowerChar(CHAR Character); XBSYSAPI EXPORTNUM(296) CHAR NTAPI RtlLowerChar(CHAR Character);
XBSYSAPI VOID *RtlMapGenericMask; // ******************************************************************
// * 0x0129 - RtlMapGenericMask()
// ******************************************************************
XBSYSAPI EXPORTNUM(297) VOID NTAPI RtlMapGenericMask
(
IN PACCESS_MASK AccessMask,
IN PGENERIC_MAPPING GenericMapping
);
// ****************************************************************** // ******************************************************************
// * RtlMoveMemory // * 0x012A - RtlMoveMemory()
// ****************************************************************** // ******************************************************************
// * // *
// * Move memory either forward or backward, aligned or unaligned, // * Move memory either forward or backward, aligned or unaligned,
@ -260,8 +344,27 @@ XBSYSAPI EXPORTNUM(298) VOID NTAPI RtlMoveMemory
IN SIZE_T Length IN SIZE_T Length
); );
XBSYSAPI VOID *RtlMultiByteToUnicodeN; // ******************************************************************
XBSYSAPI VOID *RtlMultiByteToUnicodeSize; // * 0x012B - RtlMultiByteToUnicodeN()
// ******************************************************************
XBSYSAPI EXPORTNUM(299) NTSTATUS NTAPI RtlMultiByteToUnicodeN
(
IN PWSTR UnicodeString,
IN ULONG MaxBytesInUnicodeString,
IN PULONG BytesInUnicodeString,
IN PCHAR MultiByteString,
IN ULONG BytesInMultiByteString
);
// ******************************************************************
// * 0x012C - RtlMultiByteToUnicodeSize()
// ******************************************************************
XBSYSAPI EXPORTNUM(300) NTSTATUS NTAPI RtlMultiByteToUnicodeSize
(
IN PULONG BytesInUnicodeString,
IN PCHAR MultiByteString,
IN ULONG BytesInMultiByteString
);
// ****************************************************************** // ******************************************************************
// * RtlNtStatusToDosError // * RtlNtStatusToDosError
@ -300,7 +403,13 @@ XBSYSAPI EXPORTNUM(306) BOOLEAN NTAPI RtlTryEnterCriticalSection
IN PRTL_CRITICAL_SECTION CriticalSection IN PRTL_CRITICAL_SECTION CriticalSection
); );
XBSYSAPI VOID *RtlUlongByteSwap; // ******************************************************************
// * 0x0133 - RtlUlongByteSwap()
// ******************************************************************
XBSYSAPI EXPORTNUM(307) ULONG FASTCALL RtlUlongByteSwap
(
IN ULONG Source
);
// ****************************************************************** // ******************************************************************
// * RtlUnicodeStringToAnsiString // * RtlUnicodeStringToAnsiString
@ -312,16 +421,95 @@ XBSYSAPI EXPORTNUM(308) NTSTATUS NTAPI RtlUnicodeStringToAnsiString
IN BOOLEAN AllocateDestinationString IN BOOLEAN AllocateDestinationString
); );
XBSYSAPI VOID *RtlUnicodeStringToInteger; // ******************************************************************
XBSYSAPI VOID *RtlUnicodeToMultiByteN; // * 0x0135 - RtlUnicodeStringToInteger()
XBSYSAPI VOID *RtlUnicodeToMultiByteSize; // ******************************************************************
XBSYSAPI EXPORTNUM(309) NTSTATUS NTAPI RtlUnicodeStringToInteger
(
IN PUNICODE_STRING String,
IN ULONG Base,
IN PULONG Value
);
// ******************************************************************
// * 0x0136 - RtlUnicodeToMultiByteN()
// ******************************************************************
XBSYSAPI EXPORTNUM(310) NTSTATUS NTAPI RtlUnicodeToMultiByteN
(
IN PCHAR MultiByteString,
IN ULONG MaxBytesInMultiByteString,
IN PULONG BytesInMultiByteString,
IN PWSTR UnicodeString,
IN ULONG BytesInUnicodeString
);
// ******************************************************************
// * 0x0137 - RtlUnicodeToMultiByteSize()
// ******************************************************************
XBSYSAPI EXPORTNUM(311) NTSTATUS NTAPI RtlUnicodeToMultiByteSize
(
IN PULONG BytesInMultiByteString,
IN PWSTR UnicodeString,
IN ULONG BytesInUnicodeString
);
XBSYSAPI VOID *RtlUnwind; XBSYSAPI VOID *RtlUnwind;
XBSYSAPI VOID *RtlUpcaseUnicodeChar;
XBSYSAPI VOID *RtlUpcaseUnicodeString; // ******************************************************************
XBSYSAPI VOID *RtlUpcaseUnicodeToMultiByteN; // * 0x0139 - RtlUpcaseUnicodeChar()
XBSYSAPI VOID *RtlUpperChar; // ******************************************************************
XBSYSAPI VOID *RtlUpperString; XBSYSAPI EXPORTNUM(313) WCHAR NTAPI RtlUpcaseUnicodeChar
XBSYSAPI VOID *RtlUshortByteSwap; (
IN WCHAR SourceCharacter
);
// ******************************************************************
// * 0x013A - RtlUpcaseUnicodeString()
// ******************************************************************
XBSYSAPI EXPORTNUM(314) NTSTATUS NTAPI RtlUpcaseUnicodeString
(
OUT PUNICODE_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString
);
// ******************************************************************
// * 0x013B - RtlUpcaseUnicodeToMultiByteN()
// ******************************************************************
XBSYSAPI EXPORTNUM(315) NTSTATUS NTAPI RtlUpcaseUnicodeToMultiByteN
(
IN OUT PCHAR MultiByteString,
IN ULONG MaxBytesInMultiByteString,
IN PULONG BytesInMultiByteString,
IN PWSTR UnicodeString,
IN ULONG BytesInUnicodeString
);
// ******************************************************************
// * 0x013C - RtlUpperChar()
// ******************************************************************
XBSYSAPI EXPORTNUM(316) CHAR NTAPI RtlUpperChar
(
CHAR Character
);
// ******************************************************************
// * 0x013D - RtlUpperString()
// ******************************************************************
XBSYSAPI EXPORTNUM(317) VOID NTAPI RtlUpperString
(
OUT PSTRING DestinationString,
IN PSTRING SourceString
);
// ******************************************************************
// * 0x013E - RtlUshortByteSwap()
// ******************************************************************
XBSYSAPI EXPORTNUM(318) USHORT FASTCALL RtlUshortByteSwap
(
IN USHORT Source
);
XBSYSAPI VOID *RtlWalkFrameChain; XBSYSAPI VOID *RtlWalkFrameChain;
// ****************************************************************** // ******************************************************************

View File

@ -104,6 +104,7 @@ typedef wchar_t WCHAR;
// * Pointer types // * Pointer types
// ****************************************************************** // ******************************************************************
typedef CHAR *PCHAR; typedef CHAR *PCHAR;
typedef char *PSZ;
typedef CHAR *PCSZ; typedef CHAR *PCSZ;
typedef BYTE *PBYTE; typedef BYTE *PBYTE;
typedef BOOLEAN *PBOOLEAN; typedef BOOLEAN *PBOOLEAN;
@ -129,6 +130,7 @@ typedef LONGLONG *PLONGLONG;
// ****************************************************************** // ******************************************************************
typedef CHAR *PCHAR, *LPCH, *PCH; typedef CHAR *PCHAR, *LPCH, *PCH;
typedef CONST CHAR *LPCCH, *PCCH; typedef CONST CHAR *LPCCH, *PCCH;
typedef WCHAR *LPWSTR, *PWSTR;
typedef /*_Null_terminated_*/ CONST WCHAR *LPCWSTR, *PCWSTR; typedef /*_Null_terminated_*/ CONST WCHAR *LPCWSTR, *PCWSTR;
@ -536,6 +538,18 @@ FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
// ******************************************************************
// * GENERIC_MAPPING
// ******************************************************************
typedef struct _GENERIC_MAPPING
{
ACCESS_MASK GenericRead;
ACCESS_MASK GenericWrite;
ACCESS_MASK GenericExecute;
ACCESS_MASK GenericAll;
}
GENERIC_MAPPING, *PGENERIC_MAPPING;
// ****************************************************************** // ******************************************************************
// * OBJECT_ATTRIBUTES // * OBJECT_ATTRIBUTES
// ****************************************************************** // ******************************************************************
@ -986,7 +1000,7 @@ typedef struct _MEMORY_BASIC_INFORMATION
MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION; MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
// ****************************************************************** // ******************************************************************
// * EVENT_TYPE // * EVENT_TYPE - same as Windows
// ****************************************************************** // ******************************************************************
typedef enum _EVENT_TYPE typedef enum _EVENT_TYPE
{ {
@ -1162,6 +1176,13 @@ typedef struct _KEVENT
//KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT; //KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT;
KEVENT, *PKEVENT, *PRKEVENT; // even with undefined RESTRICTED_POINTER, this doesn't compile KEVENT, *PKEVENT, *PRKEVENT; // even with undefined RESTRICTED_POINTER, this doesn't compile
// EVENT_BASIC_INFORMATION - same as Windows
typedef struct _EVENT_BASIC_INFORMATION {
EVENT_TYPE EventType;
LONG EventState;
} EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
// KSEMAPHORE
typedef struct _KSEMAPHORE typedef struct _KSEMAPHORE
{ {
DISPATCHER_HEADER Header; DISPATCHER_HEADER Header;
@ -1169,6 +1190,12 @@ typedef struct _KSEMAPHORE
} }
KSEMAPHORE, *PKSEMAPHORE, *RESTRICTED_POINTER PRKSEMAPHORE; KSEMAPHORE, *PKSEMAPHORE, *RESTRICTED_POINTER PRKSEMAPHORE;
// SEMAPHORE_BASIC_INFORMATION - same as Windows
typedef struct _SEMAPHORE_BASIC_INFORMATION {
LONG CurrentCount;
LONG MaximumCount;
} SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
typedef struct _ERWLOCK typedef struct _ERWLOCK
{ {
LONG LockCount; LONG LockCount;

View File

@ -933,6 +933,33 @@ XBSYSAPI EXPORTNUM(210) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtQueryFullAttributes
RETURN(ret); RETURN(ret);
} }
// ******************************************************************
// * 0x00D1 - NtQueryEvent()
// ******************************************************************
XBSYSAPI EXPORTNUM(209) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtQueryEvent
(
IN HANDLE EventHandle,
OUT PEVENT_BASIC_INFORMATION EventInformation
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(EventHandle)
LOG_FUNC_ARG_OUT(EventInformation)
LOG_FUNC_END;
NTSTATUS ret = NtDll::NtQueryEvent(
(NtDll::HANDLE)EventHandle,
/*EventInformationClass*/NtDll::EVENT_INFORMATION_CLASS::EventBasicInformation,
EventInformation,
sizeof(EVENT_BASIC_INFORMATION),
/*ReturnLength=*/nullptr);
if (ret != STATUS_SUCCESS)
EmuWarning("NtQueryEvent failed! (%s)", NtStatusToString(ret));
RETURN(ret);
}
// ****************************************************************** // ******************************************************************
// * 0x00D3 - NtQueryInformationFile() // * 0x00D3 - NtQueryInformationFile()
// ****************************************************************** // ******************************************************************
@ -1002,6 +1029,33 @@ XBSYSAPI EXPORTNUM(211) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtQueryInformationFil
RETURN(ret); RETURN(ret);
} }
// ******************************************************************
// * 0x00D6 - NtQuerySemaphore()
// ******************************************************************
XBSYSAPI EXPORTNUM(214) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtQuerySemaphore
(
IN HANDLE SemaphoreHandle,
OUT PSEMAPHORE_BASIC_INFORMATION SemaphoreInformation
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(SemaphoreHandle)
LOG_FUNC_ARG_OUT(SemaphoreInformation)
LOG_FUNC_END;
NTSTATUS ret = NtDll::NtQuerySemaphore(
(NtDll::HANDLE)SemaphoreHandle,
/*SemaphoreInformationClass*/NtDll::SEMAPHORE_INFORMATION_CLASS::SemaphoreBasicInformation,
SemaphoreInformation,
sizeof(SEMAPHORE_BASIC_INFORMATION),
/*ReturnLength=*/nullptr);
if (ret != STATUS_SUCCESS)
EmuWarning("NtQuerySemaphore failed! (%s)", NtStatusToString(ret));
RETURN(ret);
}
// ****************************************************************** // ******************************************************************
// * 0x00D7 - NtQuerySymbolicLinkObject() // * 0x00D7 - NtQuerySymbolicLinkObject()
// ****************************************************************** // ******************************************************************

View File

@ -313,7 +313,7 @@ XBSYSAPI EXPORTNUM(272) xboxkrnl::VOID NTAPI xboxkrnl::RtlCopyString
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG(DestinationString) LOG_FUNC_ARG_OUT(DestinationString)
LOG_FUNC_ARG(SourceString) LOG_FUNC_ARG(SourceString)
LOG_FUNC_END; LOG_FUNC_END;
@ -330,7 +330,7 @@ XBSYSAPI EXPORTNUM(273) xboxkrnl::VOID NTAPI xboxkrnl::RtlCopyUnicodeString
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG(DestinationString) LOG_FUNC_ARG_OUT(DestinationString)
LOG_FUNC_ARG(SourceString) LOG_FUNC_ARG(SourceString)
LOG_FUNC_END; LOG_FUNC_END;
@ -347,7 +347,7 @@ XBSYSAPI EXPORTNUM(274) xboxkrnl::BOOLEAN NTAPI xboxkrnl::RtlCreateUnicodeString
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG(DestinationString) LOG_FUNC_ARG_OUT(DestinationString)
LOG_FUNC_ARG(SourceString) LOG_FUNC_ARG(SourceString)
LOG_FUNC_END; LOG_FUNC_END;
@ -382,7 +382,7 @@ XBSYSAPI EXPORTNUM(276) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlDowncaseUnicodeStr
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG(DestinationString) LOG_FUNC_ARG_OUT(DestinationString)
LOG_FUNC_ARG(SourceString) LOG_FUNC_ARG(SourceString)
LOG_FUNC_ARG(AllocateDestinationString) LOG_FUNC_ARG(AllocateDestinationString)
LOG_FUNC_END; LOG_FUNC_END;
@ -455,6 +455,156 @@ XBSYSAPI EXPORTNUM(279) xboxkrnl::BOOLEAN NTAPI xboxkrnl::RtlEqualString
RETURN(bRet); RETURN(bRet);
} }
// ******************************************************************
// * 0x0118 - RtlEqualUnicodeString()
// ******************************************************************
XBSYSAPI EXPORTNUM(280) xboxkrnl::BOOLEAN NTAPI xboxkrnl::RtlEqualUnicodeString
(
IN PUNICODE_STRING String1,
IN PUNICODE_STRING String2,
IN BOOLEAN CaseSensitive
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(String1)
LOG_FUNC_ARG(String2)
LOG_FUNC_ARG(CaseSensitive)
LOG_FUNC_END;
BOOLEAN bRet = NtDll::RtlEqualUnicodeString((NtDll::PUNICODE_STRING)String1, (NtDll::PUNICODE_STRING)String2, (NtDll::BOOLEAN)CaseSensitive);
RETURN(bRet);
}
// ******************************************************************
// * 0x0119 - RtlExtendedIntegerMultiply()
// ******************************************************************
XBSYSAPI EXPORTNUM(281) xboxkrnl::LARGE_INTEGER NTAPI xboxkrnl::RtlExtendedIntegerMultiply
(
IN LARGE_INTEGER Multiplicand,
IN LONG Multiplier
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(Multiplicand)
LOG_FUNC_ARG(Multiplier)
LOG_FUNC_END;
LARGE_INTEGER ret;
// As long as there are no type casts for NtDll::LARGE_INTEGER to xboxkrnl::LARGE_INTEGER
// and back, just copy the only member manually :
// TODO : Simplify this by adding typecasts between NtDll and xboxkrnl versions of LARGE_INTEGER
NtDll::LARGE_INTEGER NtMultiplicand;
NtMultiplicand.QuadPart = Multiplicand.QuadPart;
ret.QuadPart = NtDll::RtlExtendedIntegerMultiply(NtMultiplicand, (NtDll::LONG)Multiplier).QuadPart;
RETURN(ret);
}
// ******************************************************************
// * 0x011A - RtlExtendedLargeIntegerDivide()
// ******************************************************************
XBSYSAPI EXPORTNUM(282) xboxkrnl::LARGE_INTEGER NTAPI xboxkrnl::RtlExtendedLargeIntegerDivide
(
IN LARGE_INTEGER Dividend,
IN ULONG Divisor,
IN PULONG Remainder // OUT? OPTIONAL?
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(Dividend)
LOG_FUNC_ARG(Divisor)
LOG_FUNC_ARG(Remainder)
LOG_FUNC_END;
LARGE_INTEGER ret;
// As long as there are no type casts for NtDll::LARGE_INTEGER to xboxkrnl::LARGE_INTEGER
// and back, just copy the only member manually :
// TODO : Simplify this by adding typecasts between NtDll and xboxkrnl versions of LARGE_INTEGER
NtDll::LARGE_INTEGER NtDividend;
NtDividend.QuadPart = Dividend.QuadPart;
ret.QuadPart = NtDll::RtlExtendedLargeIntegerDivide(NtDividend, (NtDll::ULONG)Divisor, (NtDll::PULONG)Remainder).QuadPart;
RETURN(ret);
}
// ******************************************************************
// * 0x011B - RtlExtendedMagicDivide()
// ******************************************************************
XBSYSAPI EXPORTNUM(283) xboxkrnl::LARGE_INTEGER NTAPI xboxkrnl::RtlExtendedMagicDivide
(
IN LARGE_INTEGER Dividend,
IN LARGE_INTEGER MagicDivisor,
IN CCHAR ShiftCount
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(Dividend)
LOG_FUNC_ARG(MagicDivisor)
LOG_FUNC_ARG(ShiftCount)
LOG_FUNC_END;
LARGE_INTEGER ret;
// As long as there are no type casts for NtDll::LARGE_INTEGER to xboxkrnl::LARGE_INTEGER
// and back, just copy the only member manually :
// TODO : Simplify this by adding typecasts between NtDll and xboxkrnl versions of LARGE_INTEGER
NtDll::LARGE_INTEGER NtDividend;
NtDividend.QuadPart = Dividend.QuadPart;
NtDll::LARGE_INTEGER NtMagicDivisor;
NtMagicDivisor.QuadPart = MagicDivisor.QuadPart;
ret.QuadPart = NtDll::RtlExtendedMagicDivide(NtDividend, NtMagicDivisor, (NtDll::CCHAR)ShiftCount).QuadPart;
RETURN(ret);
}
// Prevent errors compiling RtlFillMemory (TODO : How should we really do this?)
#undef RtlFillMemory
// ******************************************************************
// * 0x011C - RtlFillMemory()
// ******************************************************************
XBSYSAPI EXPORTNUM(284) xboxkrnl::VOID NTAPI xboxkrnl::RtlFillMemory
(
IN VOID UNALIGNED *Destination,
IN DWORD Length,
IN BYTE Fill
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(Destination)
LOG_FUNC_ARG(Length)
LOG_FUNC_ARG(Fill)
LOG_FUNC_END;
NtDll::RtlFillMemory(Destination, Length, Fill);
}
// ******************************************************************
// * 0x011D - RtlFillMemoryUlong()
// ******************************************************************
XBSYSAPI EXPORTNUM(285) xboxkrnl::VOID NTAPI xboxkrnl::RtlFillMemoryUlong
(
IN PVOID Destination,
IN SIZE_T Length,
IN ULONG Pattern
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(Destination)
LOG_FUNC_ARG(Length)
LOG_FUNC_ARG(Pattern)
LOG_FUNC_END;
NtDll::RtlFillMemoryUlong(Destination, Length, Pattern);
}
// ****************************************************************** // ******************************************************************
// * 0x011E - RtlFreeAnsiString() // * 0x011E - RtlFreeAnsiString()
// ****************************************************************** // ******************************************************************
@ -468,6 +618,19 @@ XBSYSAPI EXPORTNUM(286) xboxkrnl::VOID NTAPI xboxkrnl::RtlFreeAnsiString
NtDll::RtlFreeAnsiString((NtDll::PANSI_STRING)AnsiString); NtDll::RtlFreeAnsiString((NtDll::PANSI_STRING)AnsiString);
} }
// ******************************************************************
// * 0x011F - RtlFreeUnicodeString()
// ******************************************************************
XBSYSAPI EXPORTNUM(287) xboxkrnl::VOID NTAPI xboxkrnl::RtlFreeUnicodeString
(
IN OUT PUNICODE_STRING UnicodeString
)
{
LOG_FUNC_ONE_ARG(UnicodeString);
NtDll::RtlFreeUnicodeString((NtDll::PUNICODE_STRING)UnicodeString);
}
// ****************************************************************** // ******************************************************************
// * 0x0121 - RtlInitAnsiString() // * 0x0121 - RtlInitAnsiString()
// ****************************************************************** // ******************************************************************
@ -532,6 +695,50 @@ XBSYSAPI EXPORTNUM(291) xboxkrnl::VOID NTAPI xboxkrnl::RtlInitializeCriticalSect
//NtDll::RtlInitializeCriticalSection((NtDll::_RTL_CRITICAL_SECTION*)CriticalSection); //NtDll::RtlInitializeCriticalSection((NtDll::_RTL_CRITICAL_SECTION*)CriticalSection);
} }
// ******************************************************************
// * 0x0124 - RtlIntegerToChar()
// ******************************************************************
XBSYSAPI EXPORTNUM(292) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlIntegerToChar
(
IN ULONG Value,
IN ULONG Base,
IN LONG OutputLength,
IN PSZ String
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(Value)
LOG_FUNC_ARG(Base)
LOG_FUNC_ARG(OutputLength)
LOG_FUNC_ARG(String)
LOG_FUNC_END;
NTSTATUS result = NtDll::RtlIntegerToChar(Value, Base, OutputLength, String);
RETURN(result);
}
// ******************************************************************
// * 0x0125 - RtlIntegerToUnicodeString()
// ******************************************************************
XBSYSAPI EXPORTNUM(293) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlIntegerToUnicodeString
(
IN ULONG Value,
IN ULONG Base,
IN PUNICODE_STRING String
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(Value)
LOG_FUNC_ARG(Base)
LOG_FUNC_ARG_OUT(String)
LOG_FUNC_END;
NTSTATUS result = NtDll::RtlIntegerToUnicodeString(Value, Base, (NtDll::PUNICODE_STRING)String);
RETURN(result);
}
// ****************************************************************** // ******************************************************************
// * 0x0126 - RtlEnterCriticalSection() // * 0x0126 - RtlEnterCriticalSection()
// ****************************************************************** // ******************************************************************
@ -578,11 +785,28 @@ XBSYSAPI EXPORTNUM(296) xboxkrnl::CHAR NTAPI xboxkrnl::RtlLowerChar
RETURN(ret); RETURN(ret);
} }
// ******************************************************************
// * 0x0129 - RtlMapGenericMask()
// ******************************************************************
XBSYSAPI EXPORTNUM(297) xboxkrnl::VOID NTAPI xboxkrnl::RtlMapGenericMask
(
IN PACCESS_MASK AccessMask,
IN PGENERIC_MAPPING GenericMapping
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(AccessMask)
LOG_FUNC_ARG(GenericMapping)
LOG_FUNC_END;
NtDll::RtlMapGenericMask(AccessMask, (NtDll::PGENERIC_MAPPING)GenericMapping);
}
// Prevent errors compiling RtlMoveMemory (TODO : How should we really do this?) // Prevent errors compiling RtlMoveMemory (TODO : How should we really do this?)
#undef RtlMoveMemory #undef RtlMoveMemory
// ****************************************************************** // ******************************************************************
// * 0x012A - RtlMoveMemory // * 0x012A - RtlMoveMemory()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(298) xboxkrnl::VOID NTAPI xboxkrnl::RtlMoveMemory XBSYSAPI EXPORTNUM(298) xboxkrnl::VOID NTAPI xboxkrnl::RtlMoveMemory
( (
@ -600,6 +824,60 @@ XBSYSAPI EXPORTNUM(298) xboxkrnl::VOID NTAPI xboxkrnl::RtlMoveMemory
::memmove(Destination, Source, Length); ::memmove(Destination, Source, Length);
} }
// ******************************************************************
// * 0x012B - RtlMultiByteToUnicodeN()
// ******************************************************************
XBSYSAPI EXPORTNUM(299) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlMultiByteToUnicodeN
(
IN PWSTR UnicodeString,
IN ULONG MaxBytesInUnicodeString,
IN PULONG BytesInUnicodeString,
IN PCHAR MultiByteString,
IN ULONG BytesInMultiByteString
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(UnicodeString)
LOG_FUNC_ARG(MaxBytesInUnicodeString);
LOG_FUNC_ARG(BytesInUnicodeString);
LOG_FUNC_ARG(MultiByteString);
LOG_FUNC_ARG(BytesInMultiByteString)
LOG_FUNC_END;
NTSTATUS result = NtDll::RtlMultiByteToUnicodeN(
UnicodeString,
MaxBytesInUnicodeString,
BytesInUnicodeString,
MultiByteString,
BytesInMultiByteString);
RETURN(result);
}
// ******************************************************************
// * 0x012C - RtlMultiByteToUnicodeSize()
// ******************************************************************
XBSYSAPI EXPORTNUM(300) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlMultiByteToUnicodeSize
(
IN PULONG BytesInUnicodeString,
IN PCHAR MultiByteString,
IN ULONG BytesInMultiByteString
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(BytesInUnicodeString)
LOG_FUNC_ARG(MultiByteString);
LOG_FUNC_ARG(BytesInMultiByteString)
LOG_FUNC_END;
NTSTATUS result = NtDll::RtlMultiByteToUnicodeSize(
BytesInUnicodeString,
MultiByteString,
BytesInMultiByteString);
RETURN(result);
}
// ****************************************************************** // ******************************************************************
// * 0x012D - RtlNtStatusToDosError() // * 0x012D - RtlNtStatusToDosError()
// ****************************************************************** // ******************************************************************
@ -688,6 +966,21 @@ XBSYSAPI EXPORTNUM(306) xboxkrnl::BOOLEAN NTAPI xboxkrnl::RtlTryEnterCriticalSec
RETURN(bRet); RETURN(bRet);
} }
// ******************************************************************
// * 0x0133 - RtlUlongByteSwap()
// ******************************************************************
XBSYSAPI EXPORTNUM(307) xboxkrnl::ULONG FASTCALL xboxkrnl::RtlUlongByteSwap
(
IN ULONG Source
)
{
LOG_FUNC_ONE_ARG(Source);
ULONG ret = NtDll::RtlUlongByteSwap(Source);
RETURN(ret);
}
// ****************************************************************** // ******************************************************************
// * 0x0134 - RtlUnicodeStringToAnsiString() // * 0x0134 - RtlUnicodeStringToAnsiString()
// ****************************************************************** // ******************************************************************
@ -709,6 +1002,197 @@ XBSYSAPI EXPORTNUM(308) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlUnicodeStringToAns
RETURN(ret); RETURN(ret);
} }
// ******************************************************************
// * 0x0135 - RtlUnicodeStringToInteger()
// ******************************************************************
XBSYSAPI EXPORTNUM(309) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlUnicodeStringToInteger
(
IN PUNICODE_STRING String,
IN ULONG Base,
IN PULONG Value
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(String)
LOG_FUNC_ARG(Base)
LOG_FUNC_ARG(Value)
LOG_FUNC_END;
NTSTATUS ret = NtDll::RtlUnicodeStringToInteger((NtDll::PUNICODE_STRING)String, Base, Value);
RETURN(ret);
}
// ******************************************************************
// * 0x0136 - RtlUnicodeToMultiByteN()
// ******************************************************************
XBSYSAPI EXPORTNUM(310) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlUnicodeToMultiByteN
(
IN PCHAR MultiByteString,
IN ULONG MaxBytesInMultiByteString,
IN PULONG BytesInMultiByteString,
IN PWSTR UnicodeString,
IN ULONG BytesInUnicodeString
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(MultiByteString)
LOG_FUNC_ARG(MaxBytesInMultiByteString)
LOG_FUNC_ARG(BytesInMultiByteString)
LOG_FUNC_ARG(UnicodeString)
LOG_FUNC_ARG(BytesInUnicodeString)
LOG_FUNC_END;
NTSTATUS ret = NtDll::RtlUnicodeToMultiByteN(
MultiByteString,
MaxBytesInMultiByteString,
BytesInMultiByteString,
UnicodeString,
BytesInUnicodeString);
RETURN(ret);
}
// ******************************************************************
// * 0x0137 - RtlUnicodeToMultiByteSize()
// ******************************************************************
XBSYSAPI EXPORTNUM(311) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlUnicodeToMultiByteSize
(
IN PULONG BytesInMultiByteString,
IN PWSTR UnicodeString,
IN ULONG BytesInUnicodeString
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(BytesInMultiByteString)
LOG_FUNC_ARG(UnicodeString)
LOG_FUNC_ARG(BytesInUnicodeString)
LOG_FUNC_END;
NTSTATUS ret = NtDll::RtlUnicodeToMultiByteSize(
BytesInMultiByteString,
UnicodeString,
BytesInUnicodeString);
RETURN(ret);
}
// ******************************************************************
// * 0x0139 - RtlUpcaseUnicodeChar()
// ******************************************************************
XBSYSAPI EXPORTNUM(313) xboxkrnl::WCHAR NTAPI xboxkrnl::RtlUpcaseUnicodeChar
(
IN WCHAR SourceCharacter
)
{
LOG_FUNC_ONE_ARG(SourceCharacter);
WCHAR result = NtDll::RtlUpcaseUnicodeChar((NtDll::WCHAR)SourceCharacter);
RETURN(result);
}
// ******************************************************************
// * 0x013A - RtlUpcaseUnicodeString()
// ******************************************************************
XBSYSAPI EXPORTNUM(314) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlUpcaseUnicodeString
(
OUT PUNICODE_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(DestinationString)
LOG_FUNC_ARG(SourceString)
LOG_FUNC_ARG(AllocateDestinationString)
LOG_FUNC_END;
NTSTATUS result = NtDll::RtlUpcaseUnicodeString(
(NtDll::PUNICODE_STRING)DestinationString,
(NtDll::PUNICODE_STRING)SourceString,
AllocateDestinationString);
RETURN(result);
}
// ******************************************************************
// * 0x013B - RtlUpcaseUnicodeToMultiByteN()
// ******************************************************************
XBSYSAPI EXPORTNUM(315) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlUpcaseUnicodeToMultiByteN
(
IN OUT PCHAR MultiByteString,
IN ULONG MaxBytesInMultiByteString,
IN PULONG BytesInMultiByteString,
IN PWSTR UnicodeString,
IN ULONG BytesInUnicodeString
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(MultiByteString)
LOG_FUNC_ARG(MaxBytesInMultiByteString)
LOG_FUNC_ARG(BytesInMultiByteString)
LOG_FUNC_ARG(UnicodeString)
LOG_FUNC_ARG(BytesInUnicodeString)
LOG_FUNC_END;
NTSTATUS result = NtDll::RtlUpcaseUnicodeToMultiByteN(
MultiByteString,
MaxBytesInMultiByteString,
BytesInMultiByteString,
UnicodeString,
BytesInUnicodeString);
RETURN(result);
}
// ******************************************************************
// * 0x013C - RtlUpperChar()
// ******************************************************************
XBSYSAPI EXPORTNUM(316) xboxkrnl::CHAR NTAPI xboxkrnl::RtlUpperChar
(
CHAR Character
)
{
LOG_FUNC_ONE_ARG(Character);
CHAR ret = toupper(Character);
RETURN(ret);
}
// ******************************************************************
// * 0x013D - RtlUpperString()
// ******************************************************************
XBSYSAPI EXPORTNUM(317) xboxkrnl::VOID NTAPI xboxkrnl::RtlUpperString
(
OUT PSTRING DestinationString,
IN PSTRING SourceString
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(DestinationString)
LOG_FUNC_ARG(SourceString)
LOG_FUNC_END;
NtDll::RtlUpperString((NtDll::PSTRING)DestinationString, (NtDll::PSTRING)SourceString);
}
// ******************************************************************
// * 0x013E - RtlUshortByteSwap()
// ******************************************************************
XBSYSAPI EXPORTNUM(318) xboxkrnl::USHORT FASTCALL xboxkrnl::RtlUshortByteSwap
(
IN USHORT Source
)
{
LOG_FUNC_ONE_ARG(Source);
USHORT ret = NtDll::RtlUshortByteSwap(Source);
RETURN(ret);
}
// Prevent errors compiling RtlZeroMemory (TODO : How should we really do this?) // Prevent errors compiling RtlZeroMemory (TODO : How should we really do this?)
#undef RtlZeroMemory #undef RtlZeroMemory

View File

@ -82,8 +82,10 @@ IMPORT(NtFsControlFile);
IMPORT(NtOpenSymbolicLinkObject); IMPORT(NtOpenSymbolicLinkObject);
IMPORT(NtPulseEvent); IMPORT(NtPulseEvent);
IMPORT(NtQueryDirectoryFile); IMPORT(NtQueryDirectoryFile);
IMPORT(NtQueryEvent);
IMPORT(NtQueryFullAttributesFile); IMPORT(NtQueryFullAttributesFile);
IMPORT(NtQueryInformationFile); IMPORT(NtQueryInformationFile);
IMPORT(NtQuerySemaphore);
IMPORT(NtQueryTimer); IMPORT(NtQueryTimer);
IMPORT(NtQueryVirtualMemory); IMPORT(NtQueryVirtualMemory);
IMPORT(NtQueryVolumeInformationFile); IMPORT(NtQueryVolumeInformationFile);
@ -120,16 +122,37 @@ IMPORT(RtlDowncaseUnicodeChar);
IMPORT(RtlDowncaseUnicodeString); IMPORT(RtlDowncaseUnicodeString);
IMPORT(RtlEnterCriticalSection); IMPORT(RtlEnterCriticalSection);
IMPORT(RtlEqualString); IMPORT(RtlEqualString);
IMPORT(RtlEqualUnicodeString);
IMPORT(RtlExtendedIntegerMultiply);
IMPORT(RtlExtendedLargeIntegerDivide);
IMPORT(RtlExtendedMagicDivide);
IMPORT(RtlFillMemory);
IMPORT(RtlFillMemoryUlong);
IMPORT(RtlFreeAnsiString); IMPORT(RtlFreeAnsiString);
IMPORT(RtlFreeHeap); IMPORT(RtlFreeHeap);
IMPORT(RtlFreeUnicodeString);
IMPORT(RtlIntegerToChar);
IMPORT(RtlIntegerToUnicodeString);
IMPORT(RtlInitAnsiString); IMPORT(RtlInitAnsiString);
IMPORT(RtlInitializeCriticalSection); IMPORT(RtlInitializeCriticalSection);
IMPORT(RtlInitUnicodeString); IMPORT(RtlInitUnicodeString);
IMPORT(RtlLeaveCriticalSection); IMPORT(RtlLeaveCriticalSection);
IMPORT(RtlMapGenericMask);
IMPORT(RtlMultiByteToUnicodeN);
IMPORT(RtlMultiByteToUnicodeSize);
IMPORT(RtlNtStatusToDosError); IMPORT(RtlNtStatusToDosError);
IMPORT(RtlReAllocateHeap); IMPORT(RtlReAllocateHeap);
IMPORT(RtlSizeHeap); IMPORT(RtlSizeHeap);
IMPORT(RtlTimeFieldsToTime); IMPORT(RtlTimeFieldsToTime);
IMPORT(RtlTimeToTimeFields); IMPORT(RtlTimeToTimeFields);
IMPORT(RtlTryEnterCriticalSection); IMPORT(RtlTryEnterCriticalSection);
IMPORT(RtlUlongByteSwap);
IMPORT(RtlUnicodeStringToAnsiString); IMPORT(RtlUnicodeStringToAnsiString);
IMPORT(RtlUnicodeStringToInteger);
IMPORT(RtlUnicodeToMultiByteN);
IMPORT(RtlUnicodeToMultiByteSize);
IMPORT(RtlUpcaseUnicodeChar);
IMPORT(RtlUpcaseUnicodeString);
IMPORT(RtlUpcaseUnicodeToMultiByteN);
IMPORT(RtlUpperString);
IMPORT(RtlUshortByteSwap);

View File

@ -115,6 +115,7 @@ typedef CONST WCHAR *LPCWSTR, *PCWSTR;
// * NTSTATUS // * NTSTATUS
// ****************************************************************** // ******************************************************************
typedef long NTSTATUS; typedef long NTSTATUS;
typedef __int64 LONGLONG;
typedef unsigned __int64 ULONGLONG; typedef unsigned __int64 ULONGLONG;
#define NT_SUCCESS(Status) ((NTSTATUS) (Status) >= 0) #define NT_SUCCESS(Status) ((NTSTATUS) (Status) >= 0)
@ -210,10 +211,17 @@ MODE;
// ****************************************************************** // ******************************************************************
// * LARGE_INTEGER // * LARGE_INTEGER
// ****************************************************************** // ******************************************************************
typedef struct _LARGE_INTEGER typedef union _LARGE_INTEGER
{ {
DWORD LowPart; struct {
LONG HighPart; DWORD LowPart;
LONG HighPart;
};
struct {
DWORD LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart;
} }
LARGE_INTEGER, *PLARGE_INTEGER; LARGE_INTEGER, *PLARGE_INTEGER;
@ -419,6 +427,13 @@ typedef enum _MEMORY_INFORMATION_CLASS
} }
MEMORY_INFORMATION_CLASS; MEMORY_INFORMATION_CLASS;
// ******************************************************************
// * SEMAPHORE_INFORMATION_CLASS
// ******************************************************************
typedef enum _SEMAPHORE_INFORMATION_CLASS {
SemaphoreBasicInformation
} SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
// ****************************************************************** // ******************************************************************
// * EVENT_TYPE // * EVENT_TYPE
// ****************************************************************** // ******************************************************************
@ -429,6 +444,13 @@ typedef enum _EVENT_TYPE
} }
EVENT_TYPE; EVENT_TYPE;
// ******************************************************************
// * EVENT_INFORMATION_CLASS
// ******************************************************************
typedef enum _EVENT_INFORMATION_CLASS {
EventBasicInformation
} EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
// ****************************************************************** // ******************************************************************
// * TIMER_TYPE // * TIMER_TYPE
// ****************************************************************** // ******************************************************************
@ -758,6 +780,17 @@ KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
// This is only the top of the actual definition. For the complete version, // This is only the top of the actual definition. For the complete version,
// see http://processhacker.sourceforge.net/doc/ntexapi_8h_source.html // see http://processhacker.sourceforge.net/doc/ntexapi_8h_source.html
// ******************************************************************
// * GENERIC_MAPPING
// ******************************************************************
typedef struct _GENERIC_MAPPING
{
ACCESS_MASK GenericRead;
ACCESS_MASK GenericWrite;
ACCESS_MASK GenericExecute;
ACCESS_MASK GenericAll;
}
GENERIC_MAPPING, *PGENERIC_MAPPING;
// ****************************************************************** // ******************************************************************
// * KeDelayExecutionThread // * KeDelayExecutionThread
@ -831,10 +864,22 @@ typedef SIZE_T (NTAPI *FPTR_RtlSizeHeap)
IN PVOID lpMem IN PVOID lpMem
); );
// ******************************************************************
// * RtlMapGenericMask
// ******************************************************************
typedef VOID (NTAPI *FPTR_RtlMapGenericMask)
(
IN OUT PACCESS_MASK AccessMask,
IN PGENERIC_MAPPING GenericMapping
);
// ****************************************************************** // ******************************************************************
// * RtlNtStatusToDosError // * RtlNtStatusToDosError
// ****************************************************************** // ******************************************************************
typedef ULONG (NTAPI *FPTR_RtlNtStatusToDosError)(NTSTATUS Status); typedef ULONG (NTAPI *FPTR_RtlNtStatusToDosError)
(
IN NTSTATUS Status
);
// ****************************************************************** // ******************************************************************
// * RtlTimeToTimeFields // * RtlTimeToTimeFields
@ -862,6 +907,93 @@ typedef BOOL (NTAPI *FPTR_RtlTryEnterCriticalSection)
IN PRTL_CRITICAL_SECTION CriticalSection IN PRTL_CRITICAL_SECTION CriticalSection
); );
// ******************************************************************
// * RtlUlongByteSwap
// ******************************************************************
typedef ULONG (FASTCALL *FPTR_RtlUlongByteSwap)
(
IN ULONG Source
);
// ******************************************************************
// * RtlUnicodeStringToInteger
// ******************************************************************
typedef NTSTATUS (NTAPI *FPTR_RtlUnicodeStringToInteger)
(
IN PCUNICODE_STRING String,
IN ULONG Base OPTIONAL,
OUT PULONG Value
);
// ******************************************************************
// * RtlUnicodeToMultiByteN
// ******************************************************************
typedef NTSTATUS (NTAPI *FPTR_RtlUnicodeToMultiByteN)
(
OUT PCHAR MultiByteString,
IN ULONG MaxBytesInMultiByteString,
OUT PULONG BytesInMultiByteString OPTIONAL,
IN PCWCH UnicodeString,
IN ULONG BytesInUnicodeString
);
// ******************************************************************
// * RtlUnicodeToMultiByteSize
// ******************************************************************
typedef NTSTATUS (NTAPI *FPTR_RtlUnicodeToMultiByteSize)
(
OUT PULONG BytesInMultiByteString,
IN PWCH UnicodeString,
IN ULONG BytesInUnicodeString
);
// ******************************************************************
// * RtlUpcaseUnicodeChar
// ******************************************************************
typedef WCHAR (NTAPI *FPTR_RtlUpcaseUnicodeChar)
(
IN WCHAR SourceCharacter
);
// ******************************************************************
// * RtlUpcaseUnicodeString
// ******************************************************************
typedef NTSTATUS (NTAPI *FPTR_RtlUpcaseUnicodeString)
(
OUT PUNICODE_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString
);
// ******************************************************************
// * RtlUpcaseUnicodeToMultiByteN
// ******************************************************************
typedef NTSTATUS (NTAPI *FPTR_RtlUpcaseUnicodeToMultiByteN)
(
OUT PCHAR MultiByteString,
IN ULONG MaxBytesInMultiByteString,
OUT PULONG BytesInMultiByteString OPTIONAL,
IN PCWCH UnicodeString,
IN ULONG BytesInUnicodeString
);
// ******************************************************************
// * RtlUpperString
// ******************************************************************
typedef VOID (NTAPI *FPTR_RtlUpperString)
(
OUT PSTRING DestinationString,
IN const STRING *SourceString
);
// ******************************************************************
// * RtlUshortByteSwap
// ******************************************************************
typedef USHORT (FASTCALL *FPTR_RtlUshortByteSwap)
(
IN USHORT Source
);
// ****************************************************************** // ******************************************************************
// * RtlCompareMemory // * RtlCompareMemory
// ****************************************************************** // ******************************************************************
@ -1030,6 +1162,14 @@ typedef VOID (NTAPI *FPTR_RtlFreeAnsiString)
IN OUT PANSI_STRING AnsiString IN OUT PANSI_STRING AnsiString
); );
// ******************************************************************
// * RtlFreeUnicodeString
// ******************************************************************
typedef VOID(NTAPI *FPTR_RtlFreeUnicodeString)
(
IN OUT PUNICODE_STRING UnicodeString
);
// ****************************************************************** // ******************************************************************
// * RtlEqualString // * RtlEqualString
// ****************************************************************** // ******************************************************************
@ -1040,6 +1180,108 @@ typedef BOOLEAN (NTAPI *FPTR_RtlEqualString)
IN BOOLEAN CaseSensitive IN BOOLEAN CaseSensitive
); );
// ******************************************************************
// * RtlEqualUnicodeString
// ******************************************************************
typedef BOOLEAN (NTAPI *FPTR_RtlEqualUnicodeString)
(
IN PUNICODE_STRING String1,
IN PUNICODE_STRING String2,
IN BOOLEAN CaseSensitive
);
// ******************************************************************
// * RtlExtendedIntegerMultiply
// ******************************************************************
typedef LARGE_INTEGER (NTAPI *FPTR_RtlExtendedIntegerMultiply)
(
IN LARGE_INTEGER Multiplicand,
IN LONG Multiplier
);
// ******************************************************************
// * RtlExtendedLargeIntegerDivide
// ******************************************************************
typedef LARGE_INTEGER (NTAPI *FPTR_RtlExtendedLargeIntegerDivide)
(
IN LARGE_INTEGER Dividend,
IN ULONG Divisor,
OUT PULONG Remainder
);
// ******************************************************************
// * RtlExtendedMagicDivide
// ******************************************************************
typedef LARGE_INTEGER (NTAPI *FPTR_RtlExtendedMagicDivide)
(
IN LARGE_INTEGER Dividend,
IN LARGE_INTEGER MagicDivisor,
IN CCHAR ShiftCount
);
// ******************************************************************
// * RtlFillMemory
// ******************************************************************
typedef VOID (NTAPI *FPTR_RtlFillMemory)
(
OUT VOID UNALIGNED *Destination,
IN SIZE_T Length,
IN UCHAR Fill
);
// ******************************************************************
// * RtlFillMemoryUlong
// ******************************************************************
typedef VOID (NTAPI *FPTR_RtlFillMemoryUlong)
(
OUT PVOID Destination,
IN SIZE_T Length,
IN ULONG Pattern
);
// ******************************************************************
// * RtlIntegerToChar
// ******************************************************************
typedef NTSTATUS (NTAPI *FPTR_RtlIntegerToChar)
(
IN ULONG Value,
IN ULONG Base,
IN ULONG Length,
IN PCHAR Str
);
// ******************************************************************
// * RtlIntegerToUnicodeString
// ******************************************************************
typedef NTSTATUS (NTAPI *FPTR_RtlIntegerToUnicodeString)
(
IN ULONG Value,
IN ULONG Base OPTIONAL,
IN OUT PUNICODE_STRING String
);
// ******************************************************************
// * RtlMultiByteToUnicodeN
// ******************************************************************
typedef NTSTATUS (NTAPI *FPTR_RtlMultiByteToUnicodeN)
(
OUT PWCH UnicodeString,
IN ULONG MaxBytesInUnicodeString,
OUT PULONG BytesInUnicodeString OPTIONAL,
IN const CHAR *MultiByteString,
IN ULONG BytesInMultiByteString
);
// ******************************************************************
// * RtlMultiByteToUnicodeSize
// ******************************************************************
typedef NTSTATUS (NTAPI *FPTR_RtlMultiByteToUnicodeSize)
(
OUT PULONG BytesInUnicodeString,
IN const CHAR *MultiByteString,
IN ULONG BytesInMultiByteString
);
// ****************************************************************** // ******************************************************************
// * NtDelayExecution // * NtDelayExecution
// ****************************************************************** // ******************************************************************
@ -1180,6 +1422,18 @@ typedef NTSTATUS (NTAPI *FPTR_NtCreateEvent)
IN BOOLEAN InitialState IN BOOLEAN InitialState
); );
// ******************************************************************
// * NtQueryEvent
// ******************************************************************
typedef NTSTATUS (NTAPI *FPTR_NtQueryEvent)
(
IN HANDLE EventHandle,
IN EVENT_INFORMATION_CLASS EventInformationClass,
OUT PVOID EventInformation,
IN ULONG EventInformationLength,
OUT PULONG ReturnLength OPTIONAL
);
// ****************************************************************** // ******************************************************************
// * NtPulseEvent // * NtPulseEvent
// ****************************************************************** // ******************************************************************
@ -1221,6 +1475,18 @@ typedef NTSTATUS (NTAPI *FPTR_NtCreateSemaphore)
IN ULONG MaximumCount IN ULONG MaximumCount
); );
// ******************************************************************
// * NtQuerySemaphore
// ******************************************************************
typedef NTSTATUS(NTAPI *FPTR_NtQuerySemaphore)
(
IN HANDLE SemaphoreHandle,
IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
OUT PVOID SemaphoreInformation,
IN ULONG SemaphoreInformationLength,
OUT PULONG ReturnLength OPTIONAL
);
// ****************************************************************** // ******************************************************************
// * NtReleaseSemaphore // * NtReleaseSemaphore
// ****************************************************************** // ******************************************************************
@ -1625,8 +1891,10 @@ EXTERN(NtFsControlFile);
EXTERN(NtOpenSymbolicLinkObject); EXTERN(NtOpenSymbolicLinkObject);
EXTERN(NtPulseEvent); EXTERN(NtPulseEvent);
EXTERN(NtQueryDirectoryFile); EXTERN(NtQueryDirectoryFile);
EXTERN(NtQueryEvent);
EXTERN(NtQueryFullAttributesFile); EXTERN(NtQueryFullAttributesFile);
EXTERN(NtQueryInformationFile); EXTERN(NtQueryInformationFile);
EXTERN(NtQuerySemaphore);
EXTERN(NtQueryTimer); EXTERN(NtQueryTimer);
EXTERN(NtQueryVirtualMemory); EXTERN(NtQueryVirtualMemory);
EXTERN(NtQueryVolumeInformationFile); EXTERN(NtQueryVolumeInformationFile);
@ -1663,19 +1931,40 @@ EXTERN(RtlDowncaseUnicodeChar);
EXTERN(RtlDowncaseUnicodeString); EXTERN(RtlDowncaseUnicodeString);
EXTERN(RtlEnterCriticalSection); EXTERN(RtlEnterCriticalSection);
EXTERN(RtlEqualString); EXTERN(RtlEqualString);
EXTERN(RtlEqualUnicodeString);
EXTERN(RtlExtendedIntegerMultiply);
EXTERN(RtlExtendedLargeIntegerDivide);
EXTERN(RtlExtendedMagicDivide);
EXTERN(RtlFillMemory);
EXTERN(RtlFillMemoryUlong);
EXTERN(RtlFreeAnsiString); EXTERN(RtlFreeAnsiString);
EXTERN(RtlFreeHeap); EXTERN(RtlFreeHeap);
EXTERN(RtlFreeUnicodeString);
EXTERN(RtlIntegerToChar);
EXTERN(RtlIntegerToUnicodeString);
EXTERN(RtlInitAnsiString); EXTERN(RtlInitAnsiString);
EXTERN(RtlInitializeCriticalSection); EXTERN(RtlInitializeCriticalSection);
EXTERN(RtlInitUnicodeString); EXTERN(RtlInitUnicodeString);
EXTERN(RtlLeaveCriticalSection); EXTERN(RtlLeaveCriticalSection);
EXTERN(RtlMapGenericMask);
EXTERN(RtlMultiByteToUnicodeN);
EXTERN(RtlMultiByteToUnicodeSize);
EXTERN(RtlNtStatusToDosError); EXTERN(RtlNtStatusToDosError);
EXTERN(RtlReAllocateHeap); EXTERN(RtlReAllocateHeap);
EXTERN(RtlSizeHeap); EXTERN(RtlSizeHeap);
EXTERN(RtlTimeFieldsToTime); EXTERN(RtlTimeFieldsToTime);
EXTERN(RtlTimeToTimeFields); EXTERN(RtlTimeToTimeFields);
EXTERN(RtlTryEnterCriticalSection); EXTERN(RtlTryEnterCriticalSection);
EXTERN(RtlUlongByteSwap);
EXTERN(RtlUnicodeStringToAnsiString); EXTERN(RtlUnicodeStringToAnsiString);
EXTERN(RtlUnicodeStringToInteger);
EXTERN(RtlUnicodeToMultiByteN);
EXTERN(RtlUnicodeToMultiByteSize);
EXTERN(RtlUpcaseUnicodeChar);
EXTERN(RtlUpcaseUnicodeString);
EXTERN(RtlUpcaseUnicodeToMultiByteN);
EXTERN(RtlUpperString);
EXTERN(RtlUshortByteSwap);
#if defined(__cplusplus) #if defined(__cplusplus)
} }

View File

@ -39,8 +39,16 @@
extern "C" const char *szHLELastCompileTime = __TIMESTAMP__; extern "C" const char *szHLELastCompileTime = __TIMESTAMP__;
// Uncomment this line for experimental DSOUND LLE const char *Lib_D3D8 = "D3D8";
// #define DSOUND_LLE const char *Lib_D3D8LTCG = "D3D8LTCG";
const char *Lib_D3DX8 = "D3DX8";
const char *Lib_DSOUND = "DSOUND";
const char *Lib_XACTENG = "XACTENG";
const char *Lib_XAPILIB = "XAPILIB";
const char *Lib_XGRAPHC = "XGRAPHC";
const char *Lib_XNETS = "XNETS";
const char *Lib_XONLINE = "XONLINE"; // TODO : Typo for XONLINES?
const char *Lib_XONLINES = "XONLINES";
#include "Emu.h" #include "Emu.h"
#include "EmuXTL.h" #include "EmuXTL.h"
@ -95,261 +103,259 @@ HLEData HLEDataBase[] =
{ {
// Xapilib Version 1.0.3911 // Xapilib Version 1.0.3911
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 3911, 1, 0, 3911,
XAPI_1_0_3911, XAPI_1_0_3911,
XAPI_1_0_3911_SIZE XAPI_1_0_3911_SIZE
}, },
// Xapilib Version 1.0.4034 // Xapilib Version 1.0.4034
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 4034, 1, 0, 4034,
XAPI_1_0_4034, XAPI_1_0_4034,
XAPI_1_0_4034_SIZE XAPI_1_0_4034_SIZE
}, },
// Xapilib Version 1.0.4134 // Xapilib Version 1.0.4134
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 4134, 1, 0, 4134,
XAPI_1_0_4134, XAPI_1_0_4134,
XAPI_1_0_4134_SIZE XAPI_1_0_4134_SIZE
}, },
// Xapilib Version 1.0.4361 // Xapilib Version 1.0.4361
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 4361, 1, 0, 4361,
XAPI_1_0_4361, XAPI_1_0_4361,
XAPI_1_0_4361_SIZE XAPI_1_0_4361_SIZE
}, },
// Xapilib Version 1.0.4432 // Xapilib Version 1.0.4432
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 4432, 1, 0, 4432,
XAPI_1_0_4432, XAPI_1_0_4432,
XAPI_1_0_4432_SIZE XAPI_1_0_4432_SIZE
}, },
// Xapilib Version 1.0.4627 // Xapilib Version 1.0.4627
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 4627, 1, 0, 4627,
XAPI_1_0_4627, XAPI_1_0_4627,
XAPI_1_0_4627_SIZE XAPI_1_0_4627_SIZE
}, },
// Xapilib Version 1.0.5233 // Xapilib Version 1.0.5233
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 5233, 1, 0, 5233,
XAPI_1_0_5233, XAPI_1_0_5233,
XAPI_1_0_5233_SIZE XAPI_1_0_5233_SIZE
}, },
// Xapilib Version 1.0.5558 // Xapilib Version 1.0.5558
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 5558, 1, 0, 5558,
XAPI_1_0_5558, XAPI_1_0_5558,
XAPI_1_0_5558_SIZE XAPI_1_0_5558_SIZE
}, },
// Xapilib Version 1.0.5849 // Xapilib Version 1.0.5849
{ {
"XAPILIB", Lib_XAPILIB,
1, 0, 5849, 1, 0, 5849,
XAPI_1_0_5849, XAPI_1_0_5849,
XAPI_1_0_5849_SIZE XAPI_1_0_5849_SIZE
}, },
// D3D8 Version 1.0.3925 // D3D8 Version 1.0.3925
{ {
"D3D8", Lib_D3D8,
1, 0, 3925, 1, 0, 3925,
D3D8_1_0_3925, D3D8_1_0_3925,
D3D8_1_0_3925_SIZE D3D8_1_0_3925_SIZE
}, },
// D3D8 Version 1.0.4034 // D3D8 Version 1.0.4034
{ {
"D3D8", Lib_D3D8,
1, 0, 4034, 1, 0, 4034,
D3D8_1_0_4034, D3D8_1_0_4034,
D3D8_1_0_4034_SIZE D3D8_1_0_4034_SIZE
}, },
// D3D8 Version 1.0.4134 // D3D8 Version 1.0.4134
{ {
"D3D8", Lib_D3D8,
1, 0, 4134, 1, 0, 4134,
D3D8_1_0_4134, D3D8_1_0_4134,
D3D8_1_0_4134_SIZE D3D8_1_0_4134_SIZE
}, },
// D3D8 Version 1.0.4361 // D3D8 Version 1.0.4361
{ {
"D3D8", Lib_D3D8,
1, 0, 4361, 1, 0, 4361,
D3D8_1_0_4361, D3D8_1_0_4361,
D3D8_1_0_4361_SIZE D3D8_1_0_4361_SIZE
}, },
// D3D8 Version 1.0.4432 // D3D8 Version 1.0.4432
{ {
"D3D8", Lib_D3D8,
1, 0, 4432, 1, 0, 4432,
D3D8_1_0_4432, D3D8_1_0_4432,
D3D8_1_0_4432_SIZE D3D8_1_0_4432_SIZE
}, },
// D3D8 Version 1.0.4627 // D3D8 Version 1.0.4627
{ {
"D3D8", Lib_D3D8,
1, 0, 4627, 1, 0, 4627,
D3D8_1_0_4627, D3D8_1_0_4627,
D3D8_1_0_4627_SIZE D3D8_1_0_4627_SIZE
}, },
// D3D8 Version 1.0.5233 // D3D8 Version 1.0.5233
{ {
"D3D8", Lib_D3D8,
1, 0, 5233, 1, 0, 5233,
D3D8_1_0_5233, D3D8_1_0_5233,
D3D8_1_0_5233_SIZE D3D8_1_0_5233_SIZE
}, },
// D3D8 Version 1.0.5558 // D3D8 Version 1.0.5558
{ {
"D3D8", Lib_D3D8,
1, 0, 5558, 1, 0, 5558,
D3D8_1_0_5558, D3D8_1_0_5558,
D3D8_1_0_5558_SIZE D3D8_1_0_5558_SIZE
}, },
// D3D8 Version 1.0.5849 // D3D8 Version 1.0.5849
{ {
"D3D8", Lib_D3D8,
1, 0, 5849, 1, 0, 5849,
D3D8_1_0_5849, D3D8_1_0_5849,
D3D8_1_0_5849_SIZE D3D8_1_0_5849_SIZE
}, },
// D3D8LTCG Version 1.0.5849 // D3D8LTCG Version 1.0.5849
{ {
"D3D8LTCG", Lib_D3D8LTCG,
1, 0, 5849, 1, 0, 5849,
D3D8LTCG_1_0_5849, D3D8LTCG_1_0_5849,
D3D8LTCG_1_0_5849_SIZE D3D8LTCG_1_0_5849_SIZE
}, },
#ifndef DSOUND_LLE
// DSound Version 1.0.3936 // DSound Version 1.0.3936
{ {
"DSOUND", Lib_DSOUND,
1, 0, 3936, 1, 0, 3936,
DSound_1_0_3936, DSound_1_0_3936,
DSound_1_0_3936_SIZE DSound_1_0_3936_SIZE
}, },
// DSound Version 1.0.4134 // DSound Version 1.0.4134
{ {
"DSOUND", Lib_DSOUND,
1, 0, 4134, 1, 0, 4134,
DSound_1_0_4134, DSound_1_0_4134,
DSound_1_0_4134_SIZE DSound_1_0_4134_SIZE
}, },
// DSound Version 1.0.4361 // DSound Version 1.0.4361
{ {
"DSOUND", Lib_DSOUND,
1, 0, 4361, 1, 0, 4361,
DSound_1_0_4361, DSound_1_0_4361,
DSound_1_0_4361_SIZE DSound_1_0_4361_SIZE
}, },
// DSound Version 1.0.4432 // DSound Version 1.0.4432
{ {
"DSOUND", Lib_DSOUND,
1, 0, 4432, 1, 0, 4432,
DSound_1_0_4432, DSound_1_0_4432,
DSound_1_0_4432_SIZE DSound_1_0_4432_SIZE
}, },
// DSound Version 1.0.4627 // DSound Version 1.0.4627
{ {
"DSOUND", Lib_DSOUND,
1, 0, 4627, 1, 0, 4627,
DSound_1_0_4627, DSound_1_0_4627,
DSound_1_0_4627_SIZE DSound_1_0_4627_SIZE
}, },
// DSound Version 1.0.5233 // DSound Version 1.0.5233
{ {
"DSOUND", Lib_DSOUND,
1, 0, 5233, 1, 0, 5233,
DSound_1_0_5233, DSound_1_0_5233,
DSound_1_0_5233_SIZE DSound_1_0_5233_SIZE
}, },
// DSound Version 1.0.5558 // DSound Version 1.0.5558
{ {
"DSOUND", Lib_DSOUND,
1, 0, 5558, 1, 0, 5558,
DSound_1_0_5558, DSound_1_0_5558,
DSound_1_0_5558_SIZE DSound_1_0_5558_SIZE
}, },
// DSound Version 1.0.5849 // DSound Version 1.0.5849
{ {
"DSOUND", Lib_DSOUND,
1, 0, 5849, 1, 0, 5849,
DSound_1_0_5849, DSound_1_0_5849,
DSound_1_0_5849_SIZE DSound_1_0_5849_SIZE
}, },
#endif
// XG Version 1.0.3911 // XG Version 1.0.3911
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 3911, 1, 0, 3911,
XG_1_0_3911, XG_1_0_3911,
XG_1_0_3911_SIZE XG_1_0_3911_SIZE
}, },
// XG Version 1.0.4034 // XG Version 1.0.4034
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 4034, 1, 0, 4034,
XG_1_0_4034, XG_1_0_4034,
XG_1_0_4034_SIZE XG_1_0_4034_SIZE
}, },
// XG Version 1.0.4361 // XG Version 1.0.4361
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 4361, 1, 0, 4361,
XG_1_0_4361, XG_1_0_4361,
XG_1_0_4361_SIZE XG_1_0_4361_SIZE
}, },
// XG Version 1.0.4432 // XG Version 1.0.4432
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 4432, 1, 0, 4432,
XG_1_0_4432, XG_1_0_4432,
XG_1_0_4432_SIZE XG_1_0_4432_SIZE
}, },
// XG Version 1.0.4627 // XG Version 1.0.4627
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 4627, 1, 0, 4627,
XG_1_0_4627, XG_1_0_4627,
XG_1_0_4627_SIZE XG_1_0_4627_SIZE
}, },
// XG Version 1.0.5233 // XG Version 1.0.5233
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 5233, 1, 0, 5233,
XG_1_0_5233, XG_1_0_5233,
XG_1_0_5233_SIZE XG_1_0_5233_SIZE
}, },
// XG Version 1.0.5558 // XG Version 1.0.5558
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 5558, 1, 0, 5558,
XG_1_0_5558, XG_1_0_5558,
XG_1_0_5558_SIZE XG_1_0_5558_SIZE
}, },
// XG Version 1.0.5849 // XG Version 1.0.5849
{ {
"XGRAPHC", Lib_XGRAPHC,
1, 0, 5849, 1, 0, 5849,
XG_1_0_5849, XG_1_0_5849,
XG_1_0_5849_SIZE XG_1_0_5849_SIZE
}, },
// XNet Version 1.0.3911 // XNet Version 1.0.3911
{ {
"XNETS", Lib_XNETS,
1, 0, 3911, 1, 0, 3911,
XNet_1_0_3911, XNet_1_0_3911,
XNet_1_0_3911_SIZE XNet_1_0_3911_SIZE
}, },
// XOnline Version 1.0.4361 // XOnline Version 1.0.4361
{ {
"XONLINE", Lib_XONLINE, // TODO : Typo for XONLINES?
1, 0, 4361, 1, 0, 4361,
XOnline_1_0_4361, XOnline_1_0_4361,
XOnline_1_0_4361_SIZE XOnline_1_0_4361_SIZE
@ -357,35 +363,35 @@ HLEData HLEDataBase[] =
// XOnline(s) Version 1.0.4627 // XOnline(s) Version 1.0.4627
// TODO: Verify differences between XONLINE and XONLINES (if any) // TODO: Verify differences between XONLINE and XONLINES (if any)
{ {
"XONLINES", Lib_XONLINES,
1, 0, 4627, 1, 0, 4627,
XOnline_1_0_4627, XOnline_1_0_4627,
XOnline_1_0_4627_SIZE XOnline_1_0_4627_SIZE
}, },
// XOnline(s) Version 1.0.5233 // XOnline(s) Version 1.0.5233
{ {
"XONLINES", Lib_XONLINES,
1, 0, 5233, 1, 0, 5233,
XOnline_1_0_5233, XOnline_1_0_5233,
XOnline_1_0_5233_SIZE XOnline_1_0_5233_SIZE
}, },
// XOnline(s) Version 1.0.5558 // XOnline(s) Version 1.0.5558
{ {
"XONLINES", Lib_XONLINES,
1, 0, 5558, 1, 0, 5558,
XOnline_1_0_5558, XOnline_1_0_5558,
XOnline_1_0_5558_SIZE XOnline_1_0_5558_SIZE
}, },
// XOnline(s) Version 1.0.5849 // XOnline(s) Version 1.0.5849
{ {
"XONLINES", Lib_XONLINES,
1, 0, 5849, 1, 0, 5849,
XOnline_1_0_5849, XOnline_1_0_5849,
XOnline_1_0_5849_SIZE XOnline_1_0_5849_SIZE
}, },
// XactEng Version 1.0.4627 // XactEng Version 1.0.4627
{ {
"XACTENG", Lib_XACTENG,
1, 0, 4627, 1, 0, 4627,
XactEng_1_0_4627, XactEng_1_0_4627,
XactEng_1_0_4627_SIZE XactEng_1_0_4627_SIZE

View File

@ -82,12 +82,23 @@
// ****************************************************************** // ******************************************************************
extern "C" const char *szHLELastCompileTime; extern "C" const char *szHLELastCompileTime;
extern const char *Lib_D3D8;
extern const char *Lib_D3D8LTCG;
extern const char *Lib_D3DX8;
extern const char *Lib_DSOUND;
extern const char *Lib_XACTENG;
extern const char *Lib_XAPILIB;
extern const char *Lib_XGRAPHC;
extern const char *Lib_XNETS;
extern const char *Lib_XONLINE; // TODO : Typo for XONLINES?
extern const char *Lib_XONLINES;
// ****************************************************************** // ******************************************************************
// * HLEDataBase // * HLEDataBase
// ****************************************************************** // ******************************************************************
extern struct HLEData extern struct HLEData
{ {
char *Library; const char *Library;
uint16 MajorVersion; uint16 MajorVersion;
uint16 MinorVersion; uint16 MinorVersion;

View File

@ -162,7 +162,11 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
uint32 LastUnResolvedXRefs = UnResolvedXRefs+1; uint32 LastUnResolvedXRefs = UnResolvedXRefs+1;
uint32 OrigUnResolvedXRefs = UnResolvedXRefs; uint32 OrigUnResolvedXRefs = UnResolvedXRefs;
for(int p=0;UnResolvedXRefs < LastUnResolvedXRefs;p++) // Set these for experimental APU(sound) / GPU (graphics) LLE
bool bLLE_APU = false;
bool bLLE_GPU = false;
for(int p=0;UnResolvedXRefs < LastUnResolvedXRefs;p++)
{ {
DbgPrintf("HLE: Starting pass #%d...\n", p+1); DbgPrintf("HLE: Starting pass #%d...\n", p+1);
@ -216,27 +220,54 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
szOrigLibraryName[c] = pLibraryVersion[v].szName[c]; szOrigLibraryName[c] = pLibraryVersion[v].szName[c];
} }
// Test // TODO: HACK: D3DX8 is packed into D3D8 database
if(strcmp(szLibraryName, "XGRAPHC") == 0) if (strcmp(szLibraryName, Lib_D3DX8) == 0)
{ {
// if(BuildVersion == 4432) strcpy(szLibraryName, Lib_D3D8);
// BuildVersion = 4361;
if(BuildVersion == 3944)
BuildVersion = 3911;
if(OrigBuildVersion == 4531)
BuildVersion = 4361;
// Quick test (JSRF)
if(OrigBuildVersion == 4134)
BuildVersion = 4361;
// Quick test (Simpsons: RoadRage)
// if(BuildVersion == 4034)
// BuildVersion = 3911;
} }
// Several 3911 titles has different DSound builds. if(strcmp(szLibraryName, Lib_D3D8LTCG) == 0)
if(strcmp(szLibraryName, "DSOUND") == 0) {
// Skip scanning for D3D8LTCG symbols when LLE GPU is selected
if (bLLE_GPU)
continue;
// Test (do not release uncommented!)
/*strcpy(szLibraryName, Lib_D3D8);*/
}
if (strcmp(szLibraryName, Lib_D3D8) == 0)
{
// Skip scanning for D3D8 symbols when LLE GPU is selected
if (bLLE_GPU)
continue;
// Prevent scanning D3D8 again (since D3D8X is packed into it above)
if (bFoundD3D)
{
//DbgPrintf("Redundant\n");
continue;
}
bFoundD3D = true;
// Some 3911 titles have different D3D8 builds
if (BuildVersion <= 3948)
BuildVersion = 3925;
// Testing... don't release with this code in it!
// TODO: 5233 and 5558
// if(BuildVersion == 4134)
// BuildVersion = 4627;
}
else if(strcmp(szLibraryName, Lib_DSOUND) == 0)
{ {
if(BuildVersion < 4034) // Skip scanning for DSOUND symbols when LLE APU is selected
if (bLLE_APU)
continue;
// Several 3911 titles has different DSound builds.
if(BuildVersion < 4034)
{ {
BuildVersion = 3936; BuildVersion = 3936;
} }
@ -246,22 +277,9 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
BuildVersion == 4531 ) BuildVersion == 4531 )
BuildVersion = 4627; BuildVersion = 4627;
} }
else if(strcmp(szLibraryName, Lib_XAPILIB) == 0)
// Some 3911 titles have different D3D8 builds
if(strcmp(szLibraryName, "D3D8") == 0)
{
if(BuildVersion <= 3948)
BuildVersion = 3925;
// Testing... don't release with this code in it!
// TODO: 5233 and 5558
// if(BuildVersion == 4134)
// BuildVersion = 4627;
}
// Change a few XAPILIB versions to similar counterparts
if(strcmp(szLibraryName, "XAPILIB") == 0)
{ {
// Change a few XAPILIB versions to similar counterparts
if(BuildVersion == 3944) if(BuildVersion == 3944)
BuildVersion = 3911; BuildVersion = 3911;
if(BuildVersion == 3950) if(BuildVersion == 3950)
@ -269,33 +287,29 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
if(OrigBuildVersion == 4531) if(OrigBuildVersion == 4531)
BuildVersion = 4627; BuildVersion = 4627;
} }
else if (strcmp(szLibraryName, Lib_XGRAPHC) == 0)
// Test (do not release uncommented!)
/*if(strcmp(szLibraryName, "D3D8LTCG") == 0)
{ {
strcpy(szLibraryName, "D3D8"); // Skip scanning for XGRAPHC (XG) symbols when LLE GPU is selected
}*/ if (bLLE_GPU)
continue;
// TODO: HACK: These libraries are packed into one database // if(BuildVersion == 4432)
if(strcmp(szLibraryName, "D3DX8") == 0) // BuildVersion = 4361;
if (BuildVersion == 3944)
BuildVersion = 3911;
if (OrigBuildVersion == 4531)
BuildVersion = 4361;
// Quick test (JSRF)
if (OrigBuildVersion == 4134)
BuildVersion = 4361;
// Quick test (Simpsons: RoadRage)
// if(BuildVersion == 4034)
// BuildVersion = 3911;
}
if(bXRefFirstPass)
{ {
strcpy(szLibraryName, "D3D8"); if(strcmp(Lib_XAPILIB, szLibraryName) == 0 && MajorVersion == 1 && MinorVersion == 0 &&
}
if(strcmp(szLibraryName, "D3D8") == 0)
{
if(bFoundD3D)
{
//DbgPrintf("Redundant\n");
continue;
}
bFoundD3D = true;
}
if(bXRefFirstPass)
{
if(strcmp("XAPILIB", szLibraryName) == 0 && MajorVersion == 1 && MinorVersion == 0 &&
(BuildVersion == 3911 || BuildVersion == 4034 || BuildVersion == 4134 || BuildVersion == 4361 (BuildVersion == 3911 || BuildVersion == 4034 || BuildVersion == 4134 || BuildVersion == 4361
|| BuildVersion == 4432 || BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5558 || BuildVersion == 4432 || BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5558
|| BuildVersion == 5849)) || BuildVersion == 5849))
@ -303,7 +317,7 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
uint32 lower = pXbeHeader->dwBaseAddr; uint32 lower = pXbeHeader->dwBaseAddr;
uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage; uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
} }
else if(strcmp("D3D8", szLibraryName) == 0 /*&& strcmp("D3D8LTCG", szOrigLibraryName)*/ && else if(strcmp(Lib_D3D8, szLibraryName) == 0 /*&& strcmp(Lib_D3D8LTCG, szOrigLibraryName)*/ &&
MajorVersion == 1 && MinorVersion == 0 && MajorVersion == 1 && MinorVersion == 0 &&
(BuildVersion == 3925 || BuildVersion == 4134 || BuildVersion == 4361 || BuildVersion == 4432 (BuildVersion == 3925 || BuildVersion == 4134 || BuildVersion == 4361 || BuildVersion == 4432
|| BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5558 || BuildVersion == 5849)) || BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5558 || BuildVersion == 5849))
@ -315,7 +329,7 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
uint32 lower = pXbeHeader->dwBaseAddr; uint32 lower = pXbeHeader->dwBaseAddr;
uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage; uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
void *pFunc = 0; void *pFunc = nullptr;
if(BuildVersion == 3925) if(BuildVersion == 3925)
pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_3925, lower, upper); pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_3925, lower, upper);
@ -325,7 +339,7 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_5233, lower, upper); pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_5233, lower, upper);
// locate D3DDeferredRenderState // locate D3DDeferredRenderState
if(pFunc != 0) if(pFunc != nullptr)
{ {
// offset for stencil cull enable render state in the deferred render state buffer // offset for stencil cull enable render state in the deferred render state buffer
int patchOffset = 0; int patchOffset = 0;
@ -378,13 +392,13 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
} }
else else
{ {
XTL::EmuD3DDeferredRenderState = 0; XTL::EmuD3DDeferredRenderState = nullptr;
CxbxKrnlCleanup("EmuD3DDeferredRenderState was not found!"); CxbxKrnlCleanup("EmuD3DDeferredRenderState was not found!");
} }
// locate D3DDeferredTextureState // locate D3DDeferredTextureState
{ {
pFunc = 0; pFunc = nullptr;
if(BuildVersion == 3925) if(BuildVersion == 3925)
pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_3925, lower, upper); pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_3925, lower, upper);
@ -395,7 +409,7 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
else if(BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5558 || BuildVersion == 5849) else if(BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5558 || BuildVersion == 5849)
pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_4627, lower, upper); pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_4627, lower, upper);
if(pFunc != 0) if(pFunc != nullptr)
{ {
if(BuildVersion == 3925) // 0x18F180 if(BuildVersion == 3925) // 0x18F180
XTL::EmuD3DDeferredTextureState = (DWORD*)(*(DWORD*)((uint32)pFunc + 0x11) - 0x70); // TODO: Verify XTL::EmuD3DDeferredTextureState = (DWORD*)(*(DWORD*)((uint32)pFunc + 0x11) - 0x70); // TODO: Verify
@ -414,12 +428,12 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
} }
else else
{ {
XTL::EmuD3DDeferredTextureState = 0; XTL::EmuD3DDeferredTextureState = nullptr;
CxbxKrnlCleanup("EmuD3DDeferredTextureState was not found!"); CxbxKrnlCleanup("EmuD3DDeferredTextureState was not found!");
} }
} }
} }
//else if(strcmp("D3D8LTCG", szLibraryName) == 0 && MajorVersion == 1 && MinorVersion == 0 && //else if(strcmp(Lib_D3D8LTCG, szLibraryName) == 0 && MajorVersion == 1 && MinorVersion == 0 &&
// (BuildVersion == 5849)) // 5849 only so far... // (BuildVersion == 5849)) // 5849 only so far...
// { // {
// // Save D3D8 build version // // Save D3D8 build version
@ -429,13 +443,13 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
// uint32 lower = pXbeHeader->dwBaseAddr; // uint32 lower = pXbeHeader->dwBaseAddr;
// uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage; // uint32 upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
// void *pFunc = 0; // void *pFunc = nullptr;
// if(BuildVersion == 5849) // if(BuildVersion == 5849)
// pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_5849_LTCG, lower, upper); // pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetRenderState_CullMode_1_0_5849_LTCG, lower, upper);
// // locate D3DDeferredRenderState // // locate D3DDeferredRenderState
// if(pFunc != 0) // if(pFunc != nullptr)
// { // {
// // offset for stencil cull enable render state in the deferred render state buffer // // offset for stencil cull enable render state in the deferred render state buffer
// int patchOffset = 0; // int patchOffset = 0;
@ -464,18 +478,18 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
// } // }
// else // else
// { // {
// XTL::EmuD3DDeferredRenderState = 0; // XTL::EmuD3DDeferredRenderState = nullptr;
// CxbxKrnlCleanup("EmuD3DDeferredRenderState was not found!"); // CxbxKrnlCleanup("EmuD3DDeferredRenderState was not found!");
// } // }
// // locate D3DDeferredTextureState // // locate D3DDeferredTextureState
// { // {
// pFunc = 0; // pFunc = nullptr;
// if(BuildVersion == 3925) // if(BuildVersion == 3925)
// pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_5849_LTCG, lower, upper); // pFunc = EmuLocateFunction((OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_5849_LTCG, lower, upper);
// if(pFunc != 0) // if(pFunc != nullptr)
// { // {
// if(BuildVersion == 3925) // 0x18F180 // if(BuildVersion == 3925) // 0x18F180
// XTL::EmuD3DDeferredTextureState = (DWORD*)(*(DWORD*)((uint32)pFunc + 0x11) - 0x70); // TODO: Verify // XTL::EmuD3DDeferredTextureState = (DWORD*)(*(DWORD*)((uint32)pFunc + 0x11) - 0x70); // TODO: Verify
@ -494,7 +508,7 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
// } // }
// else // else
// { // {
// XTL::EmuD3DDeferredTextureState = 0; // XTL::EmuD3DDeferredTextureState = nullptr;
// CxbxKrnlCleanup("EmuD3DDeferredTextureState was not found!"); // CxbxKrnlCleanup("EmuD3DDeferredTextureState was not found!");
// } // }
// } // }
@ -745,7 +759,7 @@ static void EmuInstallWrappers(OOVPATable *OovpaTable, uint32 OovpaTableSize, Xb
{ {
OOVPA *Oovpa = OovpaTable[a].Oovpa; OOVPA *Oovpa = OovpaTable[a].Oovpa;
void *pFunc = NULL; void *pFunc = nullptr;
if(bCacheInp && (vCacheInpIter != vCacheInp.end())) if(bCacheInp && (vCacheInpIter != vCacheInp.end()))
{ {
@ -759,13 +773,13 @@ static void EmuInstallWrappers(OOVPATable *OovpaTable, uint32 OovpaTableSize, Xb
vCacheOut.push_back(pFunc); vCacheOut.push_back(pFunc);
} }
if(pFunc != 0) if(pFunc != nullptr)
{ {
#ifdef _DEBUG_TRACE #ifdef _DEBUG_TRACE
DbgPrintf("HLE: 0x%.08X -> %s\n", pFunc, OovpaTable[a].szFuncName); DbgPrintf("HLE: 0x%.08X -> %s\n", pFunc, OovpaTable[a].szFuncName);
#endif #endif
if(OovpaTable[a].lpRedirect == 0) if(OovpaTable[a].lpRedirect == nullptr)
{ {
// Insert breakpoint // Insert breakpoint
*(uint8_t*)pFunc = 0xCC; *(uint8_t*)pFunc = 0xCC;

View File

@ -274,12 +274,12 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[379] =
(uint32)FUNC(&xboxkrnl::NtQueueApcThread), // 0x00CE (206) (uint32)FUNC(&xboxkrnl::NtQueueApcThread), // 0x00CE (206)
(uint32)FUNC(&xboxkrnl::NtQueryDirectoryFile), // 0x00CF (207) (uint32)FUNC(&xboxkrnl::NtQueryDirectoryFile), // 0x00CF (207)
(uint32)PANIC(0x00D0), // 0x00D0 (208) NtQueryDirectoryObject (uint32)PANIC(0x00D0), // 0x00D0 (208) NtQueryDirectoryObject
(uint32)PANIC(0x00D1), // 0x00D1 (209) NtQueryEvent (uint32)FUNC(&xboxkrnl::NtQueryEvent), // 0x00D1 (209)
(uint32)FUNC(&xboxkrnl::NtQueryFullAttributesFile), // 0x00D2 (210) (uint32)FUNC(&xboxkrnl::NtQueryFullAttributesFile), // 0x00D2 (210)
(uint32)FUNC(&xboxkrnl::NtQueryInformationFile), // 0x00D3 (211) (uint32)FUNC(&xboxkrnl::NtQueryInformationFile), // 0x00D3 (211)
(uint32)PANIC(0x00D4), // 0x00D4 (212) NtQueryIoCompletion (uint32)PANIC(0x00D4), // 0x00D4 (212) NtQueryIoCompletion
(uint32)PANIC(0x00D5), // 0x00D5 (213) NtQueryMutant (uint32)PANIC(0x00D5), // 0x00D5 (213) NtQueryMutant
(uint32)PANIC(0x00D6), // 0x00D6 (214) NtQuerySemaphore (uint32)FUNC(&xboxkrnl::NtQuerySemaphore), // 0x00D6 (214)
(uint32)FUNC(&xboxkrnl::NtQuerySymbolicLinkObject), // 0x00D7 (215) (uint32)FUNC(&xboxkrnl::NtQuerySymbolicLinkObject), // 0x00D7 (215)
(uint32)FUNC(&xboxkrnl::NtQueryTimer), // 0x00D8 (216) (uint32)FUNC(&xboxkrnl::NtQueryTimer), // 0x00D8 (216)
(uint32)FUNC(&xboxkrnl::NtQueryVirtualMemory), // 0x00D9 (217) (uint32)FUNC(&xboxkrnl::NtQueryVirtualMemory), // 0x00D9 (217)
@ -345,45 +345,45 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[379] =
(uint32)FUNC(&xboxkrnl::RtlEnterCriticalSection), // 0x0115 (277) (uint32)FUNC(&xboxkrnl::RtlEnterCriticalSection), // 0x0115 (277)
(uint32)PANIC(0x0116), // 0x0116 (278) RtlEnterCriticalSectionAndRegion (uint32)PANIC(0x0116), // 0x0116 (278) RtlEnterCriticalSectionAndRegion
(uint32)FUNC(&xboxkrnl::RtlEqualString), // 0x0117 (279) (uint32)FUNC(&xboxkrnl::RtlEqualString), // 0x0117 (279)
(uint32)PANIC(0x0118), // 0x0118 (280) RtlEqualUnicodeString (uint32)FUNC(&xboxkrnl::RtlEqualUnicodeString), // 0x0118 (280)
(uint32)PANIC(0x0119), // 0x0119 (281) RtlExtendedIntegerMultiply (uint32)FUNC(&xboxkrnl::RtlExtendedIntegerMultiply), // 0x0119 (281)
(uint32)PANIC(0x011A), // 0x011A (282) RtlExtendedLargeIntegerDivide (uint32)FUNC(&xboxkrnl::RtlExtendedLargeIntegerDivide), // 0x011A (282)
(uint32)PANIC(0x011B), // 0x011B (283) RtlExtendedMagicDivide (uint32)FUNC(&xboxkrnl::RtlExtendedMagicDivide), // 0x011B (283)
(uint32)PANIC(0x011C), // 0x011C (284) RtlFillMemory (uint32)FUNC(&xboxkrnl::RtlFillMemory), // 0x011C (284)
(uint32)PANIC(0x011D), // 0x011D (285) RtlFillMemoryUlong (uint32)FUNC(&xboxkrnl::RtlFillMemoryUlong), // 0x011D (285)
(uint32)FUNC(&xboxkrnl::RtlFreeAnsiString), // 0x011E (286) (uint32)FUNC(&xboxkrnl::RtlFreeAnsiString), // 0x011E (286)
(uint32)PANIC(0x011F), // 0x011F (287) RtlFreeUnicodeString (uint32)FUNC(&xboxkrnl::RtlFreeUnicodeString), // 0x011F (287)
(uint32)PANIC(0x0120), // 0x0120 (288) RtlGetCallersAddress (uint32)PANIC(0x0120), // 0x0120 (288) RtlGetCallersAddress
(uint32)FUNC(&xboxkrnl::RtlInitAnsiString), // 0x0121 (289) (uint32)FUNC(&xboxkrnl::RtlInitAnsiString), // 0x0121 (289)
(uint32)FUNC(&xboxkrnl::RtlInitUnicodeString), // 0x0122 (290) (uint32)FUNC(&xboxkrnl::RtlInitUnicodeString), // 0x0122 (290)
(uint32)FUNC(&xboxkrnl::RtlInitializeCriticalSection), // 0x0123 (291) (uint32)FUNC(&xboxkrnl::RtlInitializeCriticalSection), // 0x0123 (291)
(uint32)PANIC(0x0124), // 0x0124 (292) RtlIntegerToChar (uint32)FUNC(&xboxkrnl::RtlIntegerToChar), // 0x0124 (292)
(uint32)PANIC(0x0125), // 0x0125 (293) RtlIntegerToUnicodeString (uint32)FUNC(&xboxkrnl::RtlIntegerToUnicodeString), // 0x0125 (293)
(uint32)FUNC(&xboxkrnl::RtlLeaveCriticalSection), // 0x0126 (294) (uint32)FUNC(&xboxkrnl::RtlLeaveCriticalSection), // 0x0126 (294)
(uint32)PANIC(0x0127), // 0x0127 (295) RtlLeaveCriticalSectionAndRegion (uint32)PANIC(0x0127), // 0x0127 (295) RtlLeaveCriticalSectionAndRegion
(uint32)FUNC(&xboxkrnl::RtlLowerChar), // 0x0128 (296) (uint32)FUNC(&xboxkrnl::RtlLowerChar), // 0x0128 (296)
(uint32)PANIC(0x0129), // 0x0129 (297) RtlMapGenericMask (uint32)FUNC(&xboxkrnl::RtlMapGenericMask), // 0x0129 (297)
(uint32)FUNC(&xboxkrnl::RtlMoveMemory), // 0x012A (298) (uint32)FUNC(&xboxkrnl::RtlMoveMemory), // 0x012A (298)
(uint32)PANIC(0x012B), // 0x012B (299) RtlMultiByteToUnicodeN (uint32)FUNC(&xboxkrnl::RtlMultiByteToUnicodeN), // 0x012B (299)
(uint32)PANIC(0x012C), // 0x012C (300) RtlMultiByteToUnicodeSize (uint32)FUNC(&xboxkrnl::RtlMultiByteToUnicodeSize), // 0x012C (300)
(uint32)FUNC(&xboxkrnl::RtlNtStatusToDosError), // 0x012D (301) (uint32)FUNC(&xboxkrnl::RtlNtStatusToDosError), // 0x012D (301)
(uint32)PANIC(0x012E), // 0x012E (302) RtlRaiseException (uint32)PANIC(0x012E), // 0x012E (302) RtlRaiseException
(uint32)PANIC(0x012F), // 0x012F (303) RtlRaiseStatus (uint32)PANIC(0x012F), // 0x012F (303) RtlRaiseStatus
(uint32)FUNC(&xboxkrnl::RtlTimeFieldsToTime), // 0x0130 (304) (uint32)FUNC(&xboxkrnl::RtlTimeFieldsToTime), // 0x0130 (304)
(uint32)FUNC(&xboxkrnl::RtlTimeToTimeFields), // 0x0131 (305) (uint32)FUNC(&xboxkrnl::RtlTimeToTimeFields), // 0x0131 (305)
(uint32)FUNC(&xboxkrnl::RtlTryEnterCriticalSection), // 0x0132 (306) (uint32)FUNC(&xboxkrnl::RtlTryEnterCriticalSection), // 0x0132 (306)
(uint32)PANIC(0x0133), // 0x0133 (307) RtlUlongByteSwap (uint32)FUNC(&xboxkrnl::RtlUlongByteSwap), // 0x0133 (307)
(uint32)FUNC(&xboxkrnl::RtlUnicodeStringToAnsiString), // 0x0134 (308) (uint32)FUNC(&xboxkrnl::RtlUnicodeStringToAnsiString), // 0x0134 (308)
(uint32)PANIC(0x0135), // 0x0135 (309) RtlUnicodeStringToInteger (uint32)FUNC(&xboxkrnl::RtlUnicodeStringToInteger), // 0x0135 (309)
(uint32)PANIC(0x0136), // 0x0136 (310) RtlUnicodeToMultiByteN (uint32)FUNC(&xboxkrnl::RtlUnicodeToMultiByteN), // 0x0136 (310)
(uint32)PANIC(0x0137), // 0x0137 (311) RtlUnicodeToMultiByteSize (uint32)FUNC(&xboxkrnl::RtlUnicodeToMultiByteSize), // 0x0137 (311)
(uint32)PANIC(0x0138), // 0x0138 (312) RtlUnwind (uint32)PANIC(0x0138), // 0x0138 (312) RtlUnwind
(uint32)PANIC(0x0139), // 0x0139 (313) RtlUpcaseUnicodeChar (uint32)FUNC(&xboxkrnl::RtlUpcaseUnicodeChar), // 0x0139 (313)
(uint32)PANIC(0x013A), // 0x013A (314) RtlUpcaseUnicodeString (uint32)FUNC(&xboxkrnl::RtlUpcaseUnicodeString), // 0x013A (314)
(uint32)PANIC(0x013B), // 0x013B (315) RtlUpcaseUnicodeToMultiByteN (uint32)FUNC(&xboxkrnl::RtlUpcaseUnicodeToMultiByteN), // 0x013B (315)
(uint32)PANIC(0x013C), // 0x013C (316) RtlUpperChar (uint32)FUNC(&xboxkrnl::RtlUpperChar), // 0x013C (316)
(uint32)PANIC(0x013D), // 0x013D (317) RtlUpperString (uint32)FUNC(&xboxkrnl::RtlUpperString), // 0x013D (317)
(uint32)PANIC(0x013E), // 0x013E (318) RtlUshortByteSwap (uint32)FUNC(&xboxkrnl::RtlUshortByteSwap), // 0x013E (318)
(uint32)PANIC(0x013F), // 0x013F (319) RtlWalkFrameChain (uint32)PANIC(0x013F), // 0x013F (319) RtlWalkFrameChain
(uint32)FUNC(&xboxkrnl::RtlZeroMemory), // 0x0140 (320) (uint32)FUNC(&xboxkrnl::RtlZeroMemory), // 0x0140 (320)
(uint32)VARIABLE(&xboxkrnl::XboxEEPROMKey), // 0x0141 (321) (uint32)VARIABLE(&xboxkrnl::XboxEEPROMKey), // 0x0141 (321)