Что означает код ошибки Windows 1428 (ERROR_HOOK_NEEDS_HMOD)?

 
Предыдущий Следующий
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 не может связать нелокальный код перехватчика с требуемым содержащим модулем.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.