mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-25 01:57:47 +01:00
make sure quarts and msvfw are hooked
This commit is contained in:
parent
6eaac8642d
commit
7d0eeb7810
@ -1,7 +1,6 @@
|
|||||||
#ifndef HOOK_H
|
#ifndef HOOK_H
|
||||||
#define HOOK_H
|
#define HOOK_H
|
||||||
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
|
|
||||||
@ -71,6 +70,7 @@ typedef HMODULE(WINAPI* LOADLIBRARYEXWPROC)(LPCWSTR, HANDLE, DWORD);
|
|||||||
typedef FARPROC(WINAPI* GETPROCADDRESSPROC)(HMODULE, LPCSTR);
|
typedef FARPROC(WINAPI* GETPROCADDRESSPROC)(HMODULE, LPCSTR);
|
||||||
typedef BOOL(WINAPI* GETDISKFREESPACEAPROC)(LPCSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD);
|
typedef BOOL(WINAPI* GETDISKFREESPACEAPROC)(LPCSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD);
|
||||||
typedef HRESULT(WINAPI* COCREATEINSTANCEPROC)(REFCLSID, LPUNKNOWN, DWORD, REFIID, LPVOID*);
|
typedef HRESULT(WINAPI* COCREATEINSTANCEPROC)(REFCLSID, LPUNKNOWN, DWORD, REFIID, LPVOID*);
|
||||||
|
typedef MCIERROR(WINAPI* MCISENDCOMMANDAPROC)(MCIDEVICEID, UINT, DWORD_PTR, DWORD_PTR);
|
||||||
typedef LPTOP_LEVEL_EXCEPTION_FILTER(WINAPI* SETUNHANDLEDEXCEPTIONFILTERPROC)(LPTOP_LEVEL_EXCEPTION_FILTER);
|
typedef LPTOP_LEVEL_EXCEPTION_FILTER(WINAPI* SETUNHANDLEDEXCEPTIONFILTERPROC)(LPTOP_LEVEL_EXCEPTION_FILTER);
|
||||||
|
|
||||||
extern GETCURSORPOSPROC real_GetCursorPos;
|
extern GETCURSORPOSPROC real_GetCursorPos;
|
||||||
@ -119,6 +119,7 @@ extern LOADLIBRARYEXWPROC real_LoadLibraryExW;
|
|||||||
extern GETPROCADDRESSPROC real_GetProcAddress;
|
extern GETPROCADDRESSPROC real_GetProcAddress;
|
||||||
extern GETDISKFREESPACEAPROC real_GetDiskFreeSpaceA;
|
extern GETDISKFREESPACEAPROC real_GetDiskFreeSpaceA;
|
||||||
extern COCREATEINSTANCEPROC real_CoCreateInstance;
|
extern COCREATEINSTANCEPROC real_CoCreateInstance;
|
||||||
|
extern MCISENDCOMMANDAPROC real_mciSendCommandA;
|
||||||
extern SETUNHANDLEDEXCEPTIONFILTERPROC real_SetUnhandledExceptionFilter;
|
extern SETUNHANDLEDEXCEPTIONFILTERPROC real_SetUnhandledExceptionFilter;
|
||||||
|
|
||||||
extern BOOL g_hook_active;
|
extern BOOL g_hook_active;
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#ifndef WINAPI_HOOKS_H
|
#ifndef WINAPI_HOOKS_H
|
||||||
#define WINAPI_HOOKS_H
|
#define WINAPI_HOOKS_H
|
||||||
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
|
|
||||||
@ -79,6 +78,8 @@ HWND WINAPI fake_CreateWindowExA(
|
|||||||
HRESULT WINAPI fake_CoCreateInstance(
|
HRESULT WINAPI fake_CoCreateInstance(
|
||||||
REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID* ppv);
|
REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID* ppv);
|
||||||
|
|
||||||
|
MCIERROR WINAPI fake_mciSendCommandA(MCIDEVICEID IDDevice, UINT uMsg, DWORD_PTR fdwCommand, DWORD_PTR dwParam);
|
||||||
|
|
||||||
LPTOP_LEVEL_EXCEPTION_FILTER WINAPI fake_SetUnhandledExceptionFilter(
|
LPTOP_LEVEL_EXCEPTION_FILTER WINAPI fake_SetUnhandledExceptionFilter(
|
||||||
LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter);
|
LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter);
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#include <windows.h>
|
||||||
#include <initguid.h>
|
#include <initguid.h>
|
||||||
#include "IDirectDraw.h"
|
#include "IDirectDraw.h"
|
||||||
#include "IDirect3D.h"
|
#include "IDirect3D.h"
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
#define WIN32_LEAN_AND_MEAN
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "directinput.h"
|
#include "directinput.h"
|
||||||
@ -63,6 +62,7 @@ LOADLIBRARYEXWPROC real_LoadLibraryExW = LoadLibraryExW;
|
|||||||
GETPROCADDRESSPROC real_GetProcAddress = GetProcAddress;
|
GETPROCADDRESSPROC real_GetProcAddress = GetProcAddress;
|
||||||
GETDISKFREESPACEAPROC real_GetDiskFreeSpaceA = GetDiskFreeSpaceA;
|
GETDISKFREESPACEAPROC real_GetDiskFreeSpaceA = GetDiskFreeSpaceA;
|
||||||
COCREATEINSTANCEPROC real_CoCreateInstance = CoCreateInstance;
|
COCREATEINSTANCEPROC real_CoCreateInstance = CoCreateInstance;
|
||||||
|
MCISENDCOMMANDAPROC real_mciSendCommandA = mciSendCommandA;
|
||||||
SETUNHANDLEDEXCEPTIONFILTERPROC real_SetUnhandledExceptionFilter = SetUnhandledExceptionFilter;
|
SETUNHANDLEDEXCEPTIONFILTERPROC real_SetUnhandledExceptionFilter = SetUnhandledExceptionFilter;
|
||||||
|
|
||||||
HOOKLIST g_hook_hooklist[] =
|
HOOKLIST g_hook_hooklist[] =
|
||||||
@ -112,6 +112,13 @@ HOOKLIST g_hook_hooklist[] =
|
|||||||
{ "", NULL, NULL, 0 }
|
{ "", NULL, NULL, 0 }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"winmm.dll",
|
||||||
|
{
|
||||||
|
{ "mciSendCommandA", (PROC)fake_mciSendCommandA, (PROC*)&real_mciSendCommandA, HOOK_SKIP_2 },
|
||||||
|
{ "", NULL, NULL, 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"dinput.dll",
|
"dinput.dll",
|
||||||
{
|
{
|
||||||
|
@ -1656,6 +1656,23 @@ HRESULT WINAPI fake_CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MCIERROR WINAPI fake_mciSendCommandA(MCIDEVICEID IDDevice, UINT uMsg, DWORD_PTR fdwCommand, DWORD_PTR dwParam)
|
||||||
|
{
|
||||||
|
/* These dlls must be hooked for cutscene uscaling and windowed mode */
|
||||||
|
HMODULE quartz_dll = GetModuleHandleA("quartz");
|
||||||
|
HMODULE msvfw32_dll = GetModuleHandleA("msvfw32");
|
||||||
|
|
||||||
|
MCIERROR result = real_mciSendCommandA(IDDevice, uMsg, fdwCommand, dwParam);
|
||||||
|
|
||||||
|
if ((!quartz_dll && GetModuleHandleA("quartz")) ||
|
||||||
|
(!msvfw32_dll && GetModuleHandleA("msvfw32")))
|
||||||
|
{
|
||||||
|
hook_init(FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
LPTOP_LEVEL_EXCEPTION_FILTER WINAPI fake_SetUnhandledExceptionFilter(
|
LPTOP_LEVEL_EXCEPTION_FILTER WINAPI fake_SetUnhandledExceptionFilter(
|
||||||
LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter)
|
LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user