我有一个使用某些钩子函数的 DLL,它在 Windows 7 和 XP 上运行良好。但是在 Windows 8 上,当我关闭 IE 10 或其他程序时,我会崩溃。
错误模块名称:myDll.DLL_unloaded
你能告诉我为什么会发生这种情况以及如何解决它吗?
顺便说一句,如果我以管理员权限或在 Windows 7 或 XP 兼容模式下运行程序,例如 IE,它不会崩溃。
这是我的代码的一部分:
if (checkWorking())
{
addString2File("C:\\dll.txt", "core online");
// TRACE("core online!");
HHOOK hHook = ::SetWindowsHookEx(WH_CALLWNDPROC, WindowHook, g_hModule, NULL);
::PostMessage(HWND_BROADCAST, WM_NULL, 0, 0);
tools::security::SecurityAllAccess sa;
HANDLE hSleepEvent = ::CreateEvent(sa, TRUE, FALSE, g_tszTermEventName);
tools::security::GrantLowIntegrityAccess(SE_KERNEL_OBJECT, hSleepEvent);
tools::endsession::WaitEndSession(hSleepEvent);
::UnhookWindowsHookEx(hHook);
}
else
{
TRACE("wrong start!");
}