win: fbc: 32bit compat code

This commit is contained in:
Vladislav Yarmak 2019-12-03 13:27:46 +02:00
parent 9a30795f98
commit b3d1311397
3 changed files with 31 additions and 15 deletions

View File

@ -1,37 +1,43 @@
IFDEF RAX
ptrsz equ <qword>
ELSE
.486
.model flat, c
ptrsz equ <dword>
ENDIF
.data .data
extern ORIG_NvFBC_Create : ptrsz, ORIG_NvFBC_Enable : ptrsz,
extern ORIG_NvFBC_Create : qword, ORIG_NvFBC_Enable : qword, ORIG_NvFBC_GetSDKVersion : ptrsz, ORIG_NvFBC_GetStatus : ptrsz,
ORIG_NvFBC_GetSDKVersion : qword, ORIG_NvFBC_GetStatus : qword, ORIG_NvFBC_GetStatusEx : ptrsz, ORIG_NvFBC_SetGlobalFlags : ptrsz,
ORIG_NvFBC_GetStatusEx : qword, ORIG_NvFBC_SetGlobalFlags : qword, ORIG_NvOptimusEnablement : ptrsz
ORIG_NvOptimusEnablement : qword
.code .code
PROXY_NvFBC_Create proc PROXY_NvFBC_Create proc
jmp qword ptr [ORIG_NvFBC_Create] jmp ptrsz ptr [ORIG_NvFBC_Create]
PROXY_NvFBC_Create endp PROXY_NvFBC_Create endp
PROXY_NvFBC_Enable proc PROXY_NvFBC_Enable proc
jmp qword ptr [ORIG_NvFBC_Enable] jmp ptrsz ptr [ORIG_NvFBC_Enable]
PROXY_NvFBC_Enable endp PROXY_NvFBC_Enable endp
PROXY_NvFBC_GetSDKVersion proc PROXY_NvFBC_GetSDKVersion proc
jmp qword ptr [ORIG_NvFBC_GetSDKVersion] jmp ptrsz ptr [ORIG_NvFBC_GetSDKVersion]
PROXY_NvFBC_GetSDKVersion endp PROXY_NvFBC_GetSDKVersion endp
PROXY_NvFBC_GetStatus proc PROXY_NvFBC_GetStatus proc
jmp qword ptr [ORIG_NvFBC_GetStatus] jmp ptrsz ptr [ORIG_NvFBC_GetStatus]
PROXY_NvFBC_GetStatus endp PROXY_NvFBC_GetStatus endp
PROXY_NvFBC_GetStatusEx proc PROXY_NvFBC_GetStatusEx proc
jmp qword ptr [ORIG_NvFBC_GetStatusEx] jmp ptrsz ptr [ORIG_NvFBC_GetStatusEx]
PROXY_NvFBC_GetStatusEx endp PROXY_NvFBC_GetStatusEx endp
PROXY_NvFBC_SetGlobalFlags proc PROXY_NvFBC_SetGlobalFlags proc
jmp qword ptr [ORIG_NvFBC_SetGlobalFlags] jmp ptrsz ptr [ORIG_NvFBC_SetGlobalFlags]
PROXY_NvFBC_SetGlobalFlags endp PROXY_NvFBC_SetGlobalFlags endp
PROXY_NvOptimusEnablement proc PROXY_NvOptimusEnablement proc
jmp qword ptr [ORIG_NvOptimusEnablement] jmp ptrsz ptr [ORIG_NvOptimusEnablement]
PROXY_NvOptimusEnablement endp PROXY_NvOptimusEnablement endp
end end

View File

@ -30,14 +30,14 @@
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
@ -97,6 +97,8 @@
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC> <EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>nvfbcwrp.def</ModuleDefinitionFile>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@ -137,6 +139,8 @@
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC> <EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>nvfbcwrp.def</ModuleDefinitionFile>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

View File

@ -2,6 +2,12 @@
#include "nvfbcdefs.h" #include "nvfbcdefs.h"
#include <windows.h> #include <windows.h>
#ifdef _WIN64
#define LIBNAME ".\\NvFBC64_.dll"
#else
#define LIBNAME ".\\NvFBC_.dll"
#endif
HINSTANCE hLThis = 0; HINSTANCE hLThis = 0;
extern "C" { extern "C" {
FARPROC ORIG_NvFBC_Create, ORIG_NvFBC_Enable, ORIG_NvFBC_GetSDKVersion, 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) if (reason == DLL_PROCESS_ATTACH)
{ {
//hLThis = hInst; //hLThis = hInst;
hL = LoadLibrary(".\\NvFBC64_.dll"); hL = LoadLibrary(LIBNAME);
if (!hL) return false; if (!hL) return false;
ORIG_NvFBC_Create = GetProcAddress(hL, "NvFBC_Create"); ORIG_NvFBC_Create = GetProcAddress(hL, "NvFBC_Create");
if (!ORIG_NvFBC_Create) return false; if (!ORIG_NvFBC_Create) return false;