Add support for RtlFreeAnsiString (Kernel API 0x11E / 286)

This commit is contained in:
Echelon9 2015-03-29 21:28:50 +11:00
parent 96676564ca
commit 0f36366310
5 changed files with 43 additions and 2 deletions

View File

@ -111,7 +111,15 @@ XBSYSAPI VOID *RtlExtendedLargeIntegerDivide;
XBSYSAPI VOID *RtlExtendedMagicDivide;
XBSYSAPI VOID *RtlFillMemory;
XBSYSAPI VOID *RtlFillMemoryUlong;
XBSYSAPI VOID *RtlFreeAnsiString;
// ******************************************************************
// * RtlFreeAnsiString
// ******************************************************************
XBSYSAPI EXPORTNUM(286) VOID NTAPI RtlFreeAnsiString
(
IN OUT PANSI_STRING AnsiString
);
XBSYSAPI VOID *RtlFreeUnicodeString;
XBSYSAPI VOID *RtlGetCallersAddress;

View File

@ -4302,6 +4302,29 @@ XBSYSAPI EXPORTNUM(279) xboxkrnl::BOOLEAN NTAPI xboxkrnl::RtlEqualString
return bRet;
}
// ******************************************************************
// * 0x011E - RtlFreeAnsiString
// ******************************************************************
XBSYSAPI EXPORTNUM(286) VOID NTAPI xboxkrnl::RtlFreeAnsiString
(
IN OUT PANSI_STRING AnsiString
)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuKrnl (0x%X): RtlFreeAnsiString\n"
"(\n"
" AnsiString : 0x%.08X\n"
");\n",
GetCurrentThreadId(), AnsiString);
NtDll::RtlFreeAnsiString((NtDll::PANSI_STRING)AnsiString);
EmuSwapFS(); // Xbox FS
return;
}
// ******************************************************************
// * 0x0121 - RtlInitAnsiString
// ******************************************************************

View File

@ -53,6 +53,7 @@ NtDll::FPTR_RtlInitAnsiString NtDll::RtlInitAnsiString =
NtDll::FPTR_RtlInitUnicodeString NtDll::RtlInitUnicodeString = (NtDll::FPTR_RtlInitUnicodeString)GetProcAddress(hNtDll, "RtlInitUnicodeString");
NtDll::FPTR_RtlAnsiStringToUnicodeString NtDll::RtlAnsiStringToUnicodeString = (NtDll::FPTR_RtlAnsiStringToUnicodeString)GetProcAddress(hNtDll, "RtlAnsiStringToUnicodeString");
NtDll::FPTR_RtlUnicodeStringToAnsiString NtDll::RtlUnicodeStringToAnsiString = (NtDll::FPTR_RtlUnicodeStringToAnsiString)GetProcAddress(hNtDll, "RtlUnicodeStringToAnsiString");
NtDll::FPTR_RtlFreeAnsiString NtDll::RtlFreeAnsiString = (NtDll::FPTR_RtlFreeAnsiString)GetProcAddress(hNtDll, "RtlFreeAnsiString");
NtDll::FPTR_RtlNtStatusToDosError NtDll::RtlNtStatusToDosError = (NtDll::FPTR_RtlNtStatusToDosError)GetProcAddress(hNtDll, "RtlNtStatusToDosError");
NtDll::FPTR_RtlTimeFieldsToTime NtDll::RtlTimeFieldsToTime = (NtDll::FPTR_RtlTimeFieldsToTime)GetProcAddress(hNtDll, "RtlTimeFieldsToTime");
NtDll::FPTR_RtlTimeToTimeFields NtDll::RtlTimeToTimeFields = (NtDll::FPTR_RtlTimeToTimeFields)GetProcAddress(hNtDll, "RtlTimeToTimeFields");

View File

@ -663,6 +663,14 @@ typedef NTSTATUS (NTAPI *FPTR_RtlUnicodeStringToAnsiString)
IN BOOLEAN AllocateDestinationString
);
// ******************************************************************
// * RtlFreeAnsiString
// ******************************************************************
typedef VOID (NTAPI *FPTR_RtlFreeAnsiString)
(
IN OUT PANSI_STRING AnsiString
);
// ******************************************************************
// * RtlEqualString
// ******************************************************************
@ -1077,6 +1085,7 @@ extern FPTR_RtlInitAnsiString RtlInitAnsiString;
extern FPTR_RtlInitUnicodeString RtlInitUnicodeString;
extern FPTR_RtlAnsiStringToUnicodeString RtlAnsiStringToUnicodeString;
extern FPTR_RtlUnicodeStringToAnsiString RtlUnicodeStringToAnsiString;
extern FPTR_RtlFreeAnsiString RtlFreeAnsiString;
extern FPTR_RtlNtStatusToDosError RtlNtStatusToDosError;
extern FPTR_RtlTimeFieldsToTime RtlTimeFieldsToTime;
extern FPTR_RtlTimeToTimeFields RtlTimeToTimeFields;

View File

@ -343,7 +343,7 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[367] =
(uint32)PANIC(0x011B), // 0x011B (283) RtlExtendedMagicDivide
(uint32)PANIC(0x011C), // 0x011C (284) RtlFillMemory
(uint32)PANIC(0x011D), // 0x011D (285) RtlFillMemoryUlong
(uint32)PANIC(0x011E), // 0x011E (286) RtlFreeAnsiString
(uint32)xboxkrnl::RtlFreeAnsiString, // 0x011E (286)
(uint32)PANIC(0x011F), // 0x011F (287) RtlFreeUnicodeString
(uint32)PANIC(0x0120), // 0x0120 (288) RtlGetCallersAddress
(uint32)&xboxkrnl::RtlInitAnsiString, // 0x0121 (289)