fra*_*mon 1 c++ windows dll winapi threadpool
我们正在生产一个针对Windows 7和XP的DLL.我们希望我们的DLL在Windows 7系统上加载DLL时使用较新的Vista线程池API,而不是在XP系统上加载时.
现在,我们尝试使用操作系统的运行时检测来编译DLL,以确保从未在XP系统上使用Vista API,但由于缺少kernel32.dll中的依赖性,我们仍然无法在Windows XP系统上注册我们的DLL. ..
除了构建DLL的两个单独版本之外,还有其他方法吗?
提前致谢
为什么不使用LoadLibrary动态加载kernel32.dll,然后使用GetProcAddress确定您需要的Vista线程池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
.....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
444 次 |
| 最近记录: |