在 XP 中也加载的 DLL 中使用新的 Vista 线程池 API(XP 中未使用线程池代码)
我们正在生成一个针对 Windows 7 和 XP 的 DLL。我们希望我们的 DLL 在 Windows 7 系统上加载时使用较新的 Vista 线程池 API,而不是在 XP 系统上加载时。
现在,我们尝试通过操作系统的运行时检测来编译 DLL,以确保 Vista API 永远不会在 XP 系统上使用,但由于 kernel32.dll 中缺少依赖项,我们仍然无法在 Windows XP 系统上注册我们的 DLL。 ..
除了构建两个单独版本的 DLL 之外,还有其他方法可以解决这个问题吗?
提前致谢
We are producing a DLL that is targeted at both Windows 7 and XP. We want our DLL to use the newer Vista Thread Pool API when the DLL is loaded on a Windows 7 system and not when it is loaded on an XP system.
Right now, we tried compiling the DLL with runtime detection of the OS to make sure the Vista API is never used on an XP system, but we still cannot register our DLL on a Windows XP system because of a missing dependency in kernel32.dll...
Is there a way around this other than building two separate versions of the DLL?
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么不使用LoadLibrary动态加载kernel32.dll,然后使用GetProcAddress来确定您需要的Vista线程池API函数是否可用?如果是,那就好,如果它们不回退到旧的 API 函数。
例如(未经测试)
Why don't you dynamically load kernel32.dll using LoadLibrary and then use GetProcAddress to determine if the Vista Thread Pool API functions you need are available? If they are, fine, if they are not fall back to the older API functions.
E.g. (untested)