QueryOptionalDelayLoadedAPI 的替代方法是什么来判断延迟加载 DLL 中的函数是否可在 Windows 7 中运行?

问题描述 投票:0回答:1

我正在编写一个 C++ Windows 桌面应用程序,它使用延迟加载的 DLL,以支持具有不同可用功能的不同版本的 DLL。

如果我的目标是 Windows 10 及更高版本,我可以使用函数

QueryOptionalDelayLoadedAPI
来判断某个函数是否可用。不幸的是,我还需要以 Windows 7 为目标,而
QueryOptionalDelayLoadedAPI
在那里不可用。

我可以使用什么方法来检测在 Windows 7 中可用的延迟加载函数?

编辑:为了清楚起见,我需要检查该函数是否可用而不尝试调用它。

c++ windows winapi dll delay-load
1个回答
0
投票

在没有实际调用该函数的情况下,在这种情况下唯一的选择是通过

LoadLibrary/Ex()
将 DLL 加载到内存中,然后使用
GetProcAddress()
获取指向所需函数的指针。如果任一失败,则该功能不可用。如果两者都成功,您将拥有一个指针,您可以根据需要使用该指针调用该函数。

这本质上是延迟加载机制在内部执行的所有操作(除了通知挂钩之外)。

© www.soinside.com 2019 - 2024. All rights reserved.