Моя программа вызывает SetWindowsHookEx
для внедрения моей DLL в один целевой процесс. Моя DLL содержит хук WH_GETMESSAGE
и WH_CALLWNDPROC
:
hGetMessageProcHook = SetWindowsHookEx(WH_GETMESSAGE,
MyGetMsgProc,
hMyDLLModule,
dwTargetThreadId);
hCallWndProcHook = SetWindowsHookEx(WH_CALLWNDPROC,
MyCallWndProc,
hMyDLLModule,
dwTargetThreadId);
Я никогда не звоню UnhookWindowsHookEx
. Windows автоматически выгружает мою DLL после завершения моей программы (чисто или нет), когда целевое приложение в следующий раз отправляет сообщение Windows. Оба крючка работают хорошо.
Но на одной машине под управлением Windows Server 2016 Process Explorer показывает, что моя DLL иногда выгружается без предупреждения, конечно, мой хук больше не работает. Я никогда не видел этого раньше. Это какая-то защита в Windows Server?