diff --git a/Cargo.lock b/Cargo.lock index b947250..516839f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2454,6 +2454,7 @@ dependencies = [ "mint_lib", "patternsleuth", "postcard", + "proxy_dll", "repak", "retour", "serde", @@ -3287,6 +3288,12 @@ dependencies = [ "url", ] +[[package]] +name = "msvc_def" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceed45db162aa13e647de49ecdde6ca4e8e7a0ebb2cd964414bed01879074862" + [[package]] name = "naga" version = "22.1.0" @@ -4158,6 +4165,28 @@ version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" +[[package]] +name = "proxy_dll" +version = "0.1.0" +source = "git+https://github.com/trumank/proxy_dll.git#ad0cee8b74597ee1819d0d2eeb516b812035bbeb" +dependencies = [ + "msvc_def", + "proxy_dll_proc", + "windows-sys 0.59.0", +] + +[[package]] +name = "proxy_dll_proc" +version = "0.1.0" +source = "git+https://github.com/trumank/proxy_dll.git#ad0cee8b74597ee1819d0d2eeb516b812035bbeb" +dependencies = [ + "msvc_def", + "proc-macro2", + "quote", + "syn 2.0.86", + "windows-sys 0.59.0", +] + [[package]] name = "pulldown-cmark" version = "0.12.2" @@ -4233,14 +4262,14 @@ dependencies = [ "once_cell", "socket2 0.5.5", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] diff --git a/hook/Cargo.toml b/hook/Cargo.toml index 37d759e..99e29af 100644 --- a/hook/Cargo.toml +++ b/hook/Cargo.toml @@ -33,3 +33,4 @@ bitflags = "2.6.0" widestring = "1.1.0" tokio = { workspace = true, features = ["full"] } tracing-appender = "0.2.3" +proxy_dll = { git = "https://github.com/trumank/proxy_dll.git", version = "0.1.0" } diff --git a/hook/src/lib.rs b/hook/src/lib.rs index 8375409..cd7d6d2 100644 --- a/hook/src/lib.rs +++ b/hook/src/lib.rs @@ -8,48 +8,13 @@ use fs_err as fs; use hooks::{FnLoadGameFromMemory, FnSaveGameToMemory}; use mint_lib::mod_info::Meta; use tracing::{info, warn}; -use windows::Win32::{ - Foundation::HMODULE, - System::{ - SystemServices::*, - Threading::{GetCurrentThread, QueueUserAPC}, - }, -}; - -// x3daudio1_7.dll -#[no_mangle] -#[allow(non_snake_case, unused_variables)] -extern "system" fn X3DAudioCalculate() {} -#[no_mangle] -#[allow(non_snake_case, unused_variables)] -extern "system" fn X3DAudioInitialize() {} - -// d3d9.dll -#[no_mangle] -#[allow(non_snake_case, unused_variables)] -extern "system" fn D3DPERF_EndEvent() {} -#[no_mangle] -#[allow(non_snake_case, unused_variables)] -extern "system" fn D3DPERF_BeginEvent() {} - -#[no_mangle] -#[allow(non_snake_case, unused_variables)] -extern "system" fn DllMain(dll_module: HMODULE, call_reason: u32, _: *mut ()) -> bool { - unsafe { - match call_reason { - DLL_PROCESS_ATTACH => { - QueueUserAPC(Some(init), GetCurrentThread(), 0); - } - DLL_PROCESS_DETACH => (), - _ => (), - } - true - } -} +proxy_dll::proxy_dll!([x3daudio1_7, d3d9], init); -unsafe extern "system" fn init(_: usize) { - patch().ok(); +fn init() { + unsafe { + patch().ok(); + } } static mut GLOBALS: Option = None;