| Предыдущий | Следующий |
| ERROR_INVALID_FILTER_PROC | ERROR_GLOBAL_ONLY_HOOK |
ERROR_HOOK_NEEDS_HMOD
Область действия перехватчика требует дескриптор модуля
Для SetWindowsHookExразмещение функции обратного вызова зависит от целевого потока и процесса. Если перехватчик связан со всеми потоками рабочего стола или с потоком, созданным другим процессом, функция обратного вызова должна находиться в DLL, а hmod должен указывать эту DLL.
Передача NULL в hmod допустима только для документированного случая внутри того же процесса, когда процедура перехватчика находится в коде текущего процесса. Расширение ранее локального для потока перехватчика до глобальной области без изменения упаковки часто приводит к этой ошибке.
Что проверить
- Сопоставьте
dwThreadIdс процессом, которому принадлежит целевой поток. - Для глобальных и межпроцессных перехватчиков поместите функцию обратного вызова в DLL и передайте дескриптор её модуля.
- На 64-разрядной Windows учитывайте требования к 32- и 64-разрядным DLL перехватчиков.
- Не подставляйте дескриптор экземпляра приложения, если он не содержит код функции обратного вызова.
Сама функция обратного вызова может быть корректной; ошибка состоит в том, что USER32 не может связать нелокальный код перехватчика с требуемым содержащим модулем.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
