From b3d131139709e878f8a901f13fd7be38dec5119e Mon Sep 17 00:00:00 2001 From: Vladislav Yarmak Date: Tue, 3 Dec 2019 13:27:46 +0200 Subject: [PATCH] win: fbc: 32bit compat code --- win/nvfbcwrp/nvfbcbody.asm | 30 ++++++++++++++++++------------ win/nvfbcwrp/nvfbcwrp.vcxproj | 8 ++++++-- win/nvfbcwrp/nvfbcwrp_main.cpp | 8 +++++++- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/win/nvfbcwrp/nvfbcbody.asm b/win/nvfbcwrp/nvfbcbody.asm index 69f0c47..3a20d91 100644 --- a/win/nvfbcwrp/nvfbcbody.asm +++ b/win/nvfbcwrp/nvfbcbody.asm @@ -1,37 +1,43 @@ +IFDEF RAX +ptrsz equ +ELSE +.486 +.model flat, c +ptrsz equ +ENDIF .data - -extern ORIG_NvFBC_Create : qword, ORIG_NvFBC_Enable : qword, - ORIG_NvFBC_GetSDKVersion : qword, ORIG_NvFBC_GetStatus : qword, - ORIG_NvFBC_GetStatusEx : qword, ORIG_NvFBC_SetGlobalFlags : qword, - ORIG_NvOptimusEnablement : qword +extern ORIG_NvFBC_Create : ptrsz, ORIG_NvFBC_Enable : ptrsz, + ORIG_NvFBC_GetSDKVersion : ptrsz, ORIG_NvFBC_GetStatus : ptrsz, + ORIG_NvFBC_GetStatusEx : ptrsz, ORIG_NvFBC_SetGlobalFlags : ptrsz, + ORIG_NvOptimusEnablement : ptrsz .code PROXY_NvFBC_Create proc -jmp qword ptr [ORIG_NvFBC_Create] +jmp ptrsz ptr [ORIG_NvFBC_Create] PROXY_NvFBC_Create endp PROXY_NvFBC_Enable proc -jmp qword ptr [ORIG_NvFBC_Enable] +jmp ptrsz ptr [ORIG_NvFBC_Enable] PROXY_NvFBC_Enable endp PROXY_NvFBC_GetSDKVersion proc -jmp qword ptr [ORIG_NvFBC_GetSDKVersion] +jmp ptrsz ptr [ORIG_NvFBC_GetSDKVersion] PROXY_NvFBC_GetSDKVersion endp PROXY_NvFBC_GetStatus proc -jmp qword ptr [ORIG_NvFBC_GetStatus] +jmp ptrsz ptr [ORIG_NvFBC_GetStatus] PROXY_NvFBC_GetStatus endp PROXY_NvFBC_GetStatusEx proc -jmp qword ptr [ORIG_NvFBC_GetStatusEx] +jmp ptrsz ptr [ORIG_NvFBC_GetStatusEx] PROXY_NvFBC_GetStatusEx endp PROXY_NvFBC_SetGlobalFlags proc -jmp qword ptr [ORIG_NvFBC_SetGlobalFlags] +jmp ptrsz ptr [ORIG_NvFBC_SetGlobalFlags] PROXY_NvFBC_SetGlobalFlags endp PROXY_NvOptimusEnablement proc -jmp qword ptr [ORIG_NvOptimusEnablement] +jmp ptrsz ptr [ORIG_NvOptimusEnablement] PROXY_NvOptimusEnablement endp end \ No newline at end of file diff --git a/win/nvfbcwrp/nvfbcwrp.vcxproj b/win/nvfbcwrp/nvfbcwrp.vcxproj index b3dd0da..1137212 100644 --- a/win/nvfbcwrp/nvfbcwrp.vcxproj +++ b/win/nvfbcwrp/nvfbcwrp.vcxproj @@ -30,14 +30,14 @@ DynamicLibrary true v142 - Unicode + MultiByte DynamicLibrary false v142 true - Unicode + MultiByte DynamicLibrary @@ -97,6 +97,8 @@ Windows true false + nvfbcwrp.def + false @@ -137,6 +139,8 @@ true true false + nvfbcwrp.def + false diff --git a/win/nvfbcwrp/nvfbcwrp_main.cpp b/win/nvfbcwrp/nvfbcwrp_main.cpp index 7e495f1..672f259 100644 --- a/win/nvfbcwrp/nvfbcwrp_main.cpp +++ b/win/nvfbcwrp/nvfbcwrp_main.cpp @@ -2,6 +2,12 @@ #include "nvfbcdefs.h" #include +#ifdef _WIN64 +#define LIBNAME ".\\NvFBC64_.dll" +#else +#define LIBNAME ".\\NvFBC_.dll" +#endif + HINSTANCE hLThis = 0; extern "C" { FARPROC ORIG_NvFBC_Create, ORIG_NvFBC_Enable, ORIG_NvFBC_GetSDKVersion, @@ -16,7 +22,7 @@ BOOL WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID) if (reason == DLL_PROCESS_ATTACH) { //hLThis = hInst; - hL = LoadLibrary(".\\NvFBC64_.dll"); + hL = LoadLibrary(LIBNAME); if (!hL) return false; ORIG_NvFBC_Create = GetProcAddress(hL, "NvFBC_Create"); if (!ORIG_NvFBC_Create) return false;