我有一个使用某些钩子函数的DLL,它在Windows 7和XP上运行正常。但是在Windows 8上,当我使用IE 10或其他程序时,我会崩溃。
错误模块名称:myDll.DLL_unloaded
你能告诉我为什么会发生这种情况以及如何解决这个问题吗?
顺便说一句,如果我运行一个程序,例如IE,具有管理员权限或在Windows 7或XP兼容模式下,它不会崩溃。
以下是我的代码的一部分:
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!");
}