0

我有一个使用某些钩子函数的 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!");
}
4

0 回答 0