主程序调用wi.dll中的函数SetHook来安装全局WH_CBT钩子。全局WH_CBT钩子DLL只加载到一些进程
bool WI_API SetHook()
{
if (!g_hHook)
{
g_hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC) CBTProc, g_hInstDll, 0);
}
return g_hHook != NULL;
}
我推测在安装全局钩子之后,应该将wi.dll加载到每个进程的地址空间中。但是,wi.dll只能加载到某些进程。例如,如果我启动Skype,MS Word,我可以看到wi.dll也加载到这些进程中(使用Process Explorer),但是如果我运行Firefox,uTorrent,Adobe Reader,那么wi.dll不会加载到这些进程中。
我使用W7 64位主程序和wi.dll是32位,这里提到的所有程序都是32位程序。
任何想法为什么发生这种情况?
在此先感谢。