gpt4 book ai didi

c++ - 在 XP 中也加载的 DLL 中使用新的 Vista 线程池 API(XP 中未使用线程池代码)

转载 作者:可可西里 更新时间:2023-11-01 11:09:18 25 4
gpt4 key购买 nike

我们正在生成一个同时针对 Windows 7 和 XP 的 DLL。我们希望我们的 DLL 在 Windows 7 系统上加载时使用较新的 Vista 线程池 API,而不是在 XP 系统上加载时。

现在,我们尝试编译带有操作系统运行时检测的 DLL,以确保 Vista API 永远不会在 XP 系统上使用,但我们仍然无法在 Windows XP 系统上注册我们的 DLL,因为缺少 kernel32 中的依赖项.dll...

除了构建两个单独版本的 DLL 之外,还有其他解决方法吗?

提前致谢

最佳答案

为什么不使用LoadLibrary 动态加载kernel32.dll,然后使用GetProcAddress 来确定您需要的Vista Thread Pool API 函数是否可用?如果是,那很好,如果它们没有回退到旧的 API 函数。

例如(未经测试)

typedef PTP_WAIT (WINAPI *FnCreateThreadpoolWait) (PTP_WAIT_CALLBACK,PVOID,
PTP_CALLBACK_ENVIRON);
HMODULE hLibrary;
FnCreateThreadpoolWait pFn;

hLibrary = ::LoadLibrary ("kernel32.dll");
pFn = (FnCreateThreadpoolWait) ::GetProcAddress (hLibrary,"CreateThreadpoolWait");
if (pFn == NULL) // Vista API not available
.....

关于c++ - 在 XP 中也加载的 DLL 中使用新的 Vista 线程池 API(XP 中未使用线程池代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com