Shared implementation of VerifyBaseAddr()

This commit is contained in:
PatrickvL 2019-02-07 15:39:06 +01:00 committed by RadWolfie
parent 3be54d4569
commit cd62ac9cc1
5 changed files with 16 additions and 13 deletions

View File

@ -263,6 +263,7 @@ file (GLOB CXBXR_SOURCE_EMU
"${CXBXR_KRNL_CPP}"
"${CXBXR_ROOT_DIR}/HighPerformanceGraphicsEnabler.c"
"${CXBXR_ROOT_DIR}/src/common/AddressRanges.cpp"
"${CXBXR_ROOT_DIR}/src/common/VerifyAddressRanges.cpp"
"${CXBXR_ROOT_DIR}/src/common/util/gloffscreen/glextensions.cpp"
"${CXBXR_ROOT_DIR}/src/common/util/gloffscreen/gloffscreen_common.cpp"
"${CXBXR_ROOT_DIR}/src/common/util/gloffscreen/gloffscreen_wgl.cpp"

View File

@ -35,6 +35,15 @@
// ******************************************************************
#include "AddressRanges.h"
#include "core\kernel\init\CxbxKrnl.h" // For CXBX_BASE_ADDR
bool VerifyBaseAddr()
{
/*! CXBX_BASE_ADDR is defined as 0x00010000, which is the base address of
the CxbxLoader.exe host executable.
Set in CxbxLoader.exe Project options, Linker, Advanced, Base Address */
return ((UINT_PTR)GetModuleHandle(nullptr) == CXBX_BASE_ADDR);
}
// This array keeps track of which ranges have successfully been reserved.
struct {

View File

@ -35,6 +35,8 @@
// ******************************************************************
#pragma once
extern bool VerifyBaseAddr();
// TODO : extern ReservedRanges[];
extern int ReservedRangeCount;

View File

@ -35,8 +35,7 @@
// CxbxEmulator.cpp : Defines the exported functions for the DLL application.
#include "Cxbx.h" // For FUNC_EXPORTS
#include "VerifyAddressRanges.h"
#include "core\kernel\init\CxbxKrnl.h" // For CXBX_BASE_ADDR
#include "VerifyAddressRanges.h" // For VerifyBaseAddr() and VerifyAddressRanges()
//#include "CxbxKrnl/Emu.h"
#include "EmuShared.h"
//#include <commctrl.h>
@ -132,10 +131,7 @@ DWORD WINAPI Emulate(int system)
FUNC_EXPORTS
/*! Verify our host executable, CxbxLoader.exe, is loaded to base address 0x00010000 */
if ((UINT_PTR)GetModuleHandle(nullptr) != CXBX_BASE_ADDR) {
/*! CXBX_BASE_ADDR is defined as 0x00010000, which is the base address of
the CxbxLoader.exe host executable.
Set in CxbxLoader.exe Project options, Linker, Advanced, Base Address */
if (!VerifyBaseAddr()) {
MessageBox(NULL, "CxbxLoader.exe was not loaded to base address 0x00010000 (which is a requirement for Xbox emulation)", "Cxbx-Reloaded", MB_OK);
return EXIT_FAILURE;
}

View File

@ -28,6 +28,7 @@
#include "WndMain.h"
#include "AddressRanges.h" // For VerifyWow64()
#include "VerifyAddressRanges.h" // For VerifyBaseAddr()
#include "core\kernel\init\CxbxKrnl.h"
#include "core\kernel\support\Emu.h"
#include "EmuShared.h"
@ -52,18 +53,12 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
return EXIT_FAILURE;
}
#ifndef CXBX_LOADER
/*! verify Cxbx.exe is loaded to base address 0x00010000 */
if ((UINT_PTR)GetModuleHandle(nullptr) != CXBX_BASE_ADDR)
{
/*! CXBX_BASE_ADDR is defined as 0x00010000, which is the base address of
the Cxbx.exe host executable.
Set in Cxbx Project options, Linker, Advanced, Base Address */
if (!VerifyBaseAddr()) {
MessageBox(NULL, "Cxbx.exe is not loaded to base address 0x00010000 (which is a requirement for Xbox emulation)", "Cxbx-Reloaded",
MB_OK | MB_ICONERROR);
return EXIT_FAILURE;
}
#endif
bool bRet, bKernel;
HWND hWnd = nullptr;