Merge pull request #826 from ergo720/Memory.bin
Fix an issue with memory.bin in wine
This commit is contained in:
commit
2c5f355608
|
@ -1,620 +0,0 @@
|
|||
// This is an open source non-commercial project. Dear PVS-Studio, please check it.
|
||||
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
|
||||
// ******************************************************************
|
||||
// *
|
||||
// * .,-::::: .,:: .::::::::. .,:: .:
|
||||
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
|
||||
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
|
||||
// * $$$ Y$$$P $$""""Y$$ Y$$$P
|
||||
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
|
||||
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
|
||||
// *
|
||||
// * Cxbx->Win32->CxbxKrnl->EmuKrnl.cpp
|
||||
// *
|
||||
// * This file is part of the Cxbx project.
|
||||
// *
|
||||
// * Cxbx and Cxbe are free software; you can redistribute them
|
||||
// * and/or modify them under the terms of the GNU General Public
|
||||
// * License as published by the Free Software Foundation; either
|
||||
// * version 2 of the license, or (at your option) any later version.
|
||||
// *
|
||||
// * This program is distributed in the hope that it will be useful,
|
||||
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// * GNU General Public License for more details.
|
||||
// *
|
||||
// * You should have recieved a copy of the GNU General Public License
|
||||
// * along with this program; see the file COPYING.
|
||||
// * If not, write to the Free Software Foundation, Inc.,
|
||||
// * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA.
|
||||
// *
|
||||
// * (c) 2002-2003 Aaron Robinson <caustik@caustik.com>
|
||||
// *
|
||||
// * All rights reserved
|
||||
// *
|
||||
// ******************************************************************
|
||||
#define _CXBXKRNL_INTERNAL
|
||||
#define _XBOXKRNL_DEFEXTRN_
|
||||
|
||||
#define LOG_PREFIX "KRNL"
|
||||
|
||||
// prevent name collisions
|
||||
namespace xboxkrnl
|
||||
{
|
||||
#include <xboxkrnl/xboxkrnl.h>
|
||||
};
|
||||
|
||||
#include <cstdio>
|
||||
#include <cctype>
|
||||
#include <clocale>
|
||||
//#include <process.h>
|
||||
|
||||
#include "Logging.h"
|
||||
#include "EmuKrnlLogging.h"
|
||||
#include "CxbxKrnl.h"
|
||||
#include "EmuXTL.h"
|
||||
|
||||
// prevent name collisions
|
||||
namespace NtDll
|
||||
{
|
||||
#include "EmuNtDll.h"
|
||||
};
|
||||
|
||||
// See also :
|
||||
// https://github.com/reactos/reactos/blob/40a16a9cf1cdfca399e9154b42d32c30b63480f5/reactos/drivers/filesystems/udfs/Include/env_spec_w32.h
|
||||
void InitializeListHead(xboxkrnl::PLIST_ENTRY pListHead)
|
||||
{
|
||||
pListHead->Flink = pListHead->Blink = pListHead;
|
||||
}
|
||||
|
||||
bool IsListEmpty(xboxkrnl::PLIST_ENTRY pListHead)
|
||||
{
|
||||
return (pListHead->Flink == pListHead);
|
||||
}
|
||||
|
||||
void InsertHeadList(xboxkrnl::PLIST_ENTRY pListHead, xboxkrnl::PLIST_ENTRY pEntry)
|
||||
{
|
||||
xboxkrnl::PLIST_ENTRY _EX_ListHead = pListHead;
|
||||
xboxkrnl::PLIST_ENTRY _EX_Flink = _EX_ListHead->Flink;
|
||||
|
||||
pEntry->Flink = _EX_Flink;
|
||||
pEntry->Blink = _EX_ListHead;
|
||||
_EX_Flink->Blink = pEntry;
|
||||
_EX_ListHead->Flink = pEntry;
|
||||
}
|
||||
|
||||
void InsertTailList(xboxkrnl::PLIST_ENTRY pListHead, xboxkrnl::PLIST_ENTRY pEntry)
|
||||
{
|
||||
xboxkrnl::PLIST_ENTRY _EX_ListHead = pListHead;
|
||||
xboxkrnl::PLIST_ENTRY _EX_Blink = _EX_ListHead->Blink;
|
||||
|
||||
pEntry->Flink = _EX_ListHead;
|
||||
pEntry->Blink = _EX_Blink;
|
||||
_EX_Blink->Flink = pEntry;
|
||||
_EX_ListHead->Blink = pEntry;
|
||||
}
|
||||
|
||||
//#define RemoveEntryList(e) do { PLIST_ENTRY f = (e)->Flink, b = (e)->Blink; f->Blink = b; b->Flink = f; (e)->Flink = (e)->Blink = NULL; } while (0)
|
||||
|
||||
void RemoveEntryList(xboxkrnl::PLIST_ENTRY pEntry)
|
||||
{
|
||||
xboxkrnl::PLIST_ENTRY _EX_Flink = pEntry->Flink;
|
||||
xboxkrnl::PLIST_ENTRY _EX_Blink = pEntry->Blink;
|
||||
|
||||
if (_EX_Flink != nullptr) {
|
||||
_EX_Blink->Flink = _EX_Flink;
|
||||
}
|
||||
|
||||
if (_EX_Flink != nullptr) {
|
||||
_EX_Flink->Blink = _EX_Blink;
|
||||
}
|
||||
}
|
||||
|
||||
xboxkrnl::PLIST_ENTRY RemoveHeadList(xboxkrnl::PLIST_ENTRY pListHead)
|
||||
{
|
||||
xboxkrnl::PLIST_ENTRY Result = pListHead->Flink;
|
||||
|
||||
RemoveEntryList(pListHead->Flink);
|
||||
return Result;
|
||||
}
|
||||
|
||||
xboxkrnl::PLIST_ENTRY RemoveTailList(xboxkrnl::PLIST_ENTRY pListHead)
|
||||
{
|
||||
xboxkrnl::PLIST_ENTRY Result = pListHead->Blink;
|
||||
|
||||
RemoveEntryList(pListHead->Blink);
|
||||
return Result;
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * Declaring this in a header causes errors with xboxkrnl
|
||||
// * namespace, so we must declare it within any file that uses it
|
||||
// ******************************************************************
|
||||
xboxkrnl::KPCR* KeGetPcr();
|
||||
|
||||
// ******************************************************************
|
||||
// * KiLockDispatcherDatabase()
|
||||
// ******************************************************************
|
||||
// * Not exported in kernel thunk table
|
||||
// * NOTE: This is a macro on the Xbox, however we implement it
|
||||
// * as a function because a macro doesn't compile this: *(&OldIrql)
|
||||
// ******************************************************************
|
||||
void xboxkrnl::KiLockDispatcherDatabase
|
||||
(
|
||||
OUT KIRQL* OldIrql
|
||||
)
|
||||
{
|
||||
LOG_FUNC_ONE_ARG_OUT(OldIrql);
|
||||
|
||||
*(OldIrql) = KeRaiseIrqlToDpcLevel();
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0033 - InterlockedCompareExchange()
|
||||
// ******************************************************************
|
||||
// Source:ReactOS
|
||||
XBSYSAPI EXPORTNUM(51) xboxkrnl::LONG FASTCALL xboxkrnl::KRNL(InterlockedCompareExchange)
|
||||
(
|
||||
IN OUT PLONG VOLATILE Destination,
|
||||
IN LONG Exchange,
|
||||
IN LONG Comparand
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(Destination)
|
||||
LOG_FUNC_ARG(Exchange)
|
||||
LOG_FUNC_ARG(Comparand)
|
||||
LOG_FUNC_END;
|
||||
|
||||
LONG res = InterlockedCompareExchange((NtDll::PLONG)Destination, (NtDll::LONG)Exchange, (NtDll::LONG)Comparand);
|
||||
|
||||
RETURN(res);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0034 - InterlockedDecrement()
|
||||
// ******************************************************************
|
||||
// Source:ReactOS
|
||||
XBSYSAPI EXPORTNUM(52) xboxkrnl::LONG FASTCALL xboxkrnl::KRNL(InterlockedDecrement)
|
||||
(
|
||||
IN OUT PLONG Addend
|
||||
)
|
||||
{
|
||||
LOG_FUNC_ONE_ARG(Addend);
|
||||
|
||||
LONG res = InterlockedDecrement((NtDll::PLONG)Addend);
|
||||
|
||||
RETURN(res);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0035 - InterlockedIncrement()
|
||||
// ******************************************************************
|
||||
// Source:ReactOS
|
||||
XBSYSAPI EXPORTNUM(53) xboxkrnl::LONG FASTCALL xboxkrnl::KRNL(InterlockedIncrement)
|
||||
(
|
||||
IN OUT PLONG Addend
|
||||
)
|
||||
{
|
||||
LOG_FUNC_ONE_ARG(Addend);
|
||||
|
||||
LONG res = InterlockedIncrement((NtDll::PLONG)Addend);
|
||||
|
||||
RETURN(res);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0036 - InterlockedExchange()
|
||||
// ******************************************************************
|
||||
// Source:ReactOS
|
||||
XBSYSAPI EXPORTNUM(54) xboxkrnl::LONG FASTCALL xboxkrnl::KRNL(InterlockedExchange)
|
||||
(
|
||||
IN PLONG VOLATILE Destination,
|
||||
IN LONG Value
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(Destination)
|
||||
LOG_FUNC_ARG(Value)
|
||||
LOG_FUNC_END;
|
||||
|
||||
LONG res = InterlockedExchange((NtDll::PLONG)Destination, (NtDll::LONG)Value);
|
||||
|
||||
RETURN(res);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0037 - InterlockedExchangeAdd()
|
||||
// ******************************************************************
|
||||
// Source:ReactOS
|
||||
XBSYSAPI EXPORTNUM(55) xboxkrnl::LONG FASTCALL xboxkrnl::KRNL(InterlockedExchangeAdd)
|
||||
(
|
||||
IN PLONG VOLATILE Addend,
|
||||
IN LONG Value
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(Addend)
|
||||
LOG_FUNC_ARG(Value)
|
||||
LOG_FUNC_END;
|
||||
|
||||
LONG res = InterlockedExchangeAdd((NtDll::PLONG)Addend, (NtDll::LONG)Value);
|
||||
|
||||
RETURN(res);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0038 - InterlockedFlushSList()
|
||||
// ******************************************************************
|
||||
// Source:ReactOS
|
||||
// Dxbx Note : The Xbox1 SINGLE_LIST strucures are the same as in WinNT
|
||||
XBSYSAPI EXPORTNUM(56) xboxkrnl::PSINGLE_LIST_ENTRY FASTCALL xboxkrnl::KRNL(InterlockedFlushSList)
|
||||
(
|
||||
IN xboxkrnl::PSLIST_HEADER ListHead
|
||||
)
|
||||
{
|
||||
LOG_FUNC_ONE_ARG(ListHead);
|
||||
|
||||
PSINGLE_LIST_ENTRY res = (PSINGLE_LIST_ENTRY)InterlockedFlushSList((::PSLIST_HEADER)ListHead);
|
||||
|
||||
RETURN(res);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0039 - InterlockedPopEntrySList()
|
||||
// ******************************************************************
|
||||
// Source:ReactOS
|
||||
XBSYSAPI EXPORTNUM(57) xboxkrnl::PSLIST_ENTRY FASTCALL xboxkrnl::KRNL(InterlockedPopEntrySList)
|
||||
(
|
||||
IN PSLIST_HEADER ListHead
|
||||
)
|
||||
{
|
||||
LOG_FUNC_ONE_ARG(ListHead);
|
||||
|
||||
PSLIST_ENTRY res = (PSLIST_ENTRY)InterlockedPopEntrySList((::PSLIST_HEADER)ListHead);
|
||||
|
||||
RETURN(res);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x003A - InterlockedPushEntrySList()
|
||||
// ******************************************************************
|
||||
// Source:ReactOS
|
||||
XBSYSAPI EXPORTNUM(58) xboxkrnl::PSLIST_ENTRY FASTCALL xboxkrnl::KRNL(InterlockedPushEntrySList)
|
||||
(
|
||||
IN PSLIST_HEADER ListHead,
|
||||
IN PSLIST_ENTRY ListEntry
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(ListHead)
|
||||
LOG_FUNC_ARG(ListEntry)
|
||||
LOG_FUNC_END;
|
||||
|
||||
PSLIST_ENTRY res = (PSLIST_ENTRY)InterlockedPushEntrySList((::PSLIST_HEADER)ListHead, (::PSLIST_ENTRY)ListEntry);
|
||||
|
||||
RETURN(res);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00A0 - KfRaiseIrql()
|
||||
// ******************************************************************
|
||||
// Raises the hardware priority (irq level)
|
||||
// NewIrql = Irq level to raise to
|
||||
// RETURN VALUE previous irq level
|
||||
XBSYSAPI EXPORTNUM(160) xboxkrnl::KIRQL FASTCALL xboxkrnl::KfRaiseIrql
|
||||
(
|
||||
IN KIRQL NewIrql
|
||||
)
|
||||
{
|
||||
LOG_FUNC_ONE_ARG(NewIrql);
|
||||
|
||||
// Inlined KeGetCurrentIrql() :
|
||||
PKPCR Pcr = KeGetPcr();
|
||||
KIRQL OldIrql = (KIRQL)Pcr->Irql;
|
||||
|
||||
if (NewIrql < OldIrql) {
|
||||
KeBugCheck(0x00000009); // IRQL_NOT_GREATER_OR_EQUAL
|
||||
}
|
||||
|
||||
Pcr->Irql = NewIrql;
|
||||
|
||||
LOG_INCOMPLETE();
|
||||
|
||||
RETURN(OldIrql);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00A1 - KfLowerIrql()
|
||||
// ******************************************************************
|
||||
// Restores the irq level on the current processor
|
||||
// ARGUMENTS NewIrql = Irql to lower to
|
||||
XBSYSAPI EXPORTNUM(161) xboxkrnl::VOID FASTCALL xboxkrnl::KfLowerIrql
|
||||
(
|
||||
IN KIRQL NewIrql
|
||||
)
|
||||
{
|
||||
LOG_FUNC_ONE_ARG(NewIrql);
|
||||
|
||||
KPCR* Pcr = KeGetPcr();
|
||||
|
||||
if (NewIrql > Pcr->Irql) {
|
||||
KeBugCheck(0x0000000A); // IRQL_NOT_LESS_OR_EQUAL
|
||||
}
|
||||
|
||||
Pcr->Irql = NewIrql;
|
||||
|
||||
// TODO: Dispatch pending interrupts
|
||||
LOG_INCOMPLETE();
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00A2 - KiBugCheckData
|
||||
// ******************************************************************
|
||||
// Source:ReactOS
|
||||
XBSYSAPI EXPORTNUM(162) xboxkrnl::ULONG_PTR xboxkrnl::KiBugCheckData[5] = { NULL, NULL, NULL, NULL, NULL };
|
||||
|
||||
extern xboxkrnl::KPRCB *KeGetCurrentPrcb();
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00A3 - KiUnlockDispatcherDatabase()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(163) xboxkrnl::VOID FASTCALL xboxkrnl::KiUnlockDispatcherDatabase
|
||||
(
|
||||
IN KIRQL OldIrql
|
||||
)
|
||||
{
|
||||
LOG_FUNC_ONE_ARG(OldIrql);
|
||||
|
||||
if (!(KeGetCurrentPrcb()->DpcRoutineActive)) // Avoid KeIsExecutingDpc(), as that logs
|
||||
HalRequestSoftwareInterrupt(DISPATCH_LEVEL);
|
||||
|
||||
LOG_INCOMPLETE(); // TODO : Thread-switch?
|
||||
|
||||
KfLowerIrql(OldIrql);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00FC - PhyGetLinkState()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(252) xboxkrnl::DWORD NTAPI xboxkrnl::PhyGetLinkState
|
||||
(
|
||||
IN ULONG Mode
|
||||
)
|
||||
{
|
||||
LOG_FUNC_ONE_ARG(Mode);
|
||||
|
||||
LOG_UNIMPLEMENTED();
|
||||
|
||||
return 0; // Was XNET_ETHERNET_LINK_ACTIVE | XNET_ETHERNET_LINK_100MBPS | XNET_ETHERNET_LINK_FULL_DUPLEX;
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00FD - PhyInitialize()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(253) xboxkrnl::NTSTATUS NTAPI xboxkrnl::PhyInitialize
|
||||
(
|
||||
IN ULONG forceReset,
|
||||
IN PVOID Parameter2
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(forceReset)
|
||||
LOG_FUNC_ARG(Parameter2)
|
||||
LOG_FUNC_END;
|
||||
|
||||
LOG_UNIMPLEMENTED();
|
||||
|
||||
RETURN(S_OK);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0165 - IdexChannelObject
|
||||
// ******************************************************************
|
||||
// TODO : Determine size, structure & filling behind IdexChannelObject
|
||||
XBSYSAPI EXPORTNUM(357) xboxkrnl::BYTE xboxkrnl::IdexChannelObject[0x100] = { };
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0169 - RtlSnprintf()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(361) xboxkrnl::INT CDECL xboxkrnl::RtlSnprintf
|
||||
(
|
||||
IN char *string,
|
||||
IN size_t count,
|
||||
IN const char *format,
|
||||
...
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(string)
|
||||
LOG_FUNC_ARG(count)
|
||||
LOG_FUNC_ARG(format)
|
||||
LOG_FUNC_END;
|
||||
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
INT Result = snprintf(string, count, format, ap);
|
||||
va_end(ap);
|
||||
|
||||
RETURN(Result);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x016A - RtlSprintf()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(362) xboxkrnl::INT CDECL xboxkrnl::RtlSprintf
|
||||
(
|
||||
IN char *string,
|
||||
IN const char *format,
|
||||
...
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(string)
|
||||
LOG_FUNC_ARG(format)
|
||||
LOG_FUNC_END;
|
||||
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
INT Result = sprintf(string, format, ap);
|
||||
va_end(ap);
|
||||
|
||||
RETURN(Result);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x016B - RtlVsnprintf()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(363) xboxkrnl::INT CDECL xboxkrnl::RtlVsnprintf
|
||||
(
|
||||
IN char *string,
|
||||
IN size_t count,
|
||||
IN const char *format,
|
||||
...
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(string)
|
||||
LOG_FUNC_ARG(count)
|
||||
LOG_FUNC_ARG(format)
|
||||
LOG_FUNC_END;
|
||||
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
INT Result = vsnprintf(string, count, format, ap);
|
||||
va_end(ap);
|
||||
|
||||
RETURN(Result);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x016C - RtlVsprintf()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(364) xboxkrnl::INT CDECL xboxkrnl::RtlVsprintf
|
||||
(
|
||||
IN char *string,
|
||||
IN const char *format,
|
||||
...
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(string)
|
||||
LOG_FUNC_ARG(format)
|
||||
LOG_FUNC_END;
|
||||
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
INT Result = vsprintf(string, format, ap);
|
||||
va_end(ap);
|
||||
|
||||
RETURN(Result);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x016F - UnknownAPI367()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(367) xboxkrnl::NTSTATUS NTAPI xboxkrnl::UnknownAPI367
|
||||
(
|
||||
// UNKNOWN ARGUMENTS
|
||||
)
|
||||
{
|
||||
LOG_FUNC();
|
||||
|
||||
LOG_UNIMPLEMENTED();
|
||||
|
||||
RETURN(S_OK);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0170 - UnknownAPI368()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(368) xboxkrnl::NTSTATUS NTAPI xboxkrnl::UnknownAPI368
|
||||
(
|
||||
// UNKNOWN ARGUMENTS
|
||||
)
|
||||
{
|
||||
LOG_FUNC();
|
||||
|
||||
LOG_UNIMPLEMENTED();
|
||||
|
||||
RETURN(S_OK);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0171 - UnknownAPI369()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(369) xboxkrnl::NTSTATUS NTAPI xboxkrnl::UnknownAPI369
|
||||
(
|
||||
// UNKNOWN ARGUMENTS
|
||||
)
|
||||
{
|
||||
LOG_FUNC();
|
||||
|
||||
LOG_UNIMPLEMENTED();
|
||||
|
||||
RETURN(S_OK);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0172 - XProfpControl()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(370) xboxkrnl::NTSTATUS NTAPI xboxkrnl::XProfpControl // PROFILING
|
||||
(
|
||||
ULONG Action,
|
||||
ULONG Param
|
||||
)
|
||||
{
|
||||
LOG_FUNC_BEGIN
|
||||
LOG_FUNC_ARG(Action)
|
||||
LOG_FUNC_ARG(Param)
|
||||
LOG_FUNC_END;
|
||||
|
||||
LOG_UNIMPLEMENTED();
|
||||
|
||||
RETURN(S_OK);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0173 - XProfpGetData()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(371) xboxkrnl::NTSTATUS NTAPI xboxkrnl::XProfpGetData // PROFILING
|
||||
(
|
||||
// NO ARGUMENTS
|
||||
)
|
||||
{
|
||||
LOG_FUNC();
|
||||
|
||||
LOG_UNIMPLEMENTED();
|
||||
|
||||
RETURN(S_OK);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0174 - IrtClientInitFast()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(372) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IrtClientInitFast // PROFILING
|
||||
(
|
||||
// UNKNOWN ARGUMENTS
|
||||
)
|
||||
{
|
||||
LOG_FUNC();
|
||||
|
||||
LOG_UNIMPLEMENTED();
|
||||
|
||||
RETURN(S_OK);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0175 - IrtSweep()
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(373) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IrtSweep // PROFILING
|
||||
(
|
||||
// UNKNOWN ARGUMENTS
|
||||
)
|
||||
{
|
||||
LOG_FUNC();
|
||||
|
||||
LOG_UNIMPLEMENTED();
|
||||
|
||||
RETURN(S_OK);
|
||||
}
|
|
@ -303,6 +303,10 @@ void *CxbxRestoreContiguousMemory(char *szFilePath_memory_bin)
|
|||
}
|
||||
}
|
||||
|
||||
// Make sure memory.bin is at least 128 MB in size
|
||||
SetFilePointer(hFile, CHIHIRO_MEMORY_SIZE, nullptr, FILE_BEGIN);
|
||||
SetEndOfFile(hFile);
|
||||
|
||||
HANDLE hFileMapping = CreateFileMapping(
|
||||
hFile,
|
||||
/* lpFileMappingAttributes */nullptr,
|
||||
|
|
Loading…
Reference in New Issue