Phase 3: x86 (32-bit) game support via injector helper
Drive a nested Win32 sub-build (CMake ExternalProject, re-entrant via COOP_X86_HELPER_BUILD) from the normal x64 build to produce coop_hook_x86.dll and a 32-bit coop_inject_x86.exe, staged next to the x64 binaries. The host detects a WOW64 target with IsWow64Process2 and spawns the helper to load the x86 DLL, since a 64-bit process can't cleanly inject a 32-bit one. The shared-memory IPC is fixed-width / bitness-stable, so the x64 host and x86 hook interoperate. Validated end-to-end against Slaps and Beans (32-bit D3D11): all 15 hooks installed, heartbeat advancing, the Present hook engaged (shared a 1920x1080 backbuffer -- the real-game video-hook proof Phantom Brave's D3D9 couldn't give), and status/audio/video/log IPC all crossed the x64<->x86 boundary. coop_audio_probe now also delegates to the helper for WOW64 targets. All 5 tests pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
5
tools/inject_helper/CMakeLists.txt
Normal file
5
tools/inject_helper/CMakeLists.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
# 32-bit injector helper. Built only in the x86 sub-build (COOP_X86_HELPER_BUILD);
|
||||
# the x64 host spawns it to inject the x86 hook DLL into 32-bit (WOW64) games.
|
||||
add_executable(coop_inject_x86 main.cpp)
|
||||
|
||||
set_target_properties(coop_inject_x86 PROPERTIES OUTPUT_NAME "coop_inject_x86")
|
||||
Reference in New Issue
Block a user