带功能指针的TypeDef:功能不存在

时间:2016-12-03 06:03:39

标签: c++ function typedef stdcall

问题是在没有请求的功能的旧机器上运行代码。要检查它,请使用LoadLibraryGetProcAddress作为演示here,但GetProcAddress在使用之前需要TypeDef中的函数地址。登记/> 例如,将这两个用于XP SP2 32位:

typedef BOOL (__stdcall *LPFN_Wow64RevertWow64FsRedirection) (PVOID OldValue);
typedef BOOL (__stdcall *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
...

...
LPFN_Wow64RevertWow64FsRedirection wowRevert = NULL;
LPFN_Wow64DisableWow64FsRedirection wowDisable = NULL;
HINSTANCE hLib;
if(GetProcAddresses( &hLib, "kernel32.dll", 2, &wowRevert,_ 
"Wow64RevertWow64FsRedirection", &wowDisable, Wow64DisableWow64FsRedirection" ))
{...

代码崩溃在这里:

  

程序入口点Wow64RevertWow64FsRedirection无法在动态链接库Kernel32.dll中找到

使用非WINAPI typedef实现我们自己的自定义Wow64RevertWow64FsRedirection很容易,但是当kernel32.dll中的函数存在时,如何用基类型替换它们?

0 个答案:

没有答案