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

 
Предыдущий Следующий
ERROR_INVALID_ACCEL_HANDLE ERROR_INVALID_DWP_HANDLE

ERROR_INVALID_HOOK_HANDLE

Недопустимый HHOOK

Значение HHOOK возвращается функцией SetWindowsHookEx для одного установленного экземпляра перехватчика. Это не номер типа перехватчика, идентификатор потока, адрес обратного вызова или дескриптор модуля.

Очистка перехватчиков достаточно асинхронна, чтобы выявлять ошибки устаревших дескрипторов в общем коде. Один компонент может снять перехватчик при завершении, пока другой путь пытается удалить или иначе использовать тот же объект. Важные подозрения — двойное снятие и сохранение результата неудачного вызова SetWindowsHookEx .

Что проверить

  • Проверьте, что SetWindowsHookEx вернул ненулевой дескриптор, и сохраните исходную ошибку, если это не так.
  • Сериализуйте установку и удаление перехватчика, чтобы очистку выполнял один владелец.
  • Очищайте сохранённый дескриптор только после определения того, как параллельные вызывающие стороны увидят удаление.
  • Не смешивайте рабочие процессы idHook, dwThreadId, hmod, и возвращённый HHOOK в отдельных типизированных полях.

ERROR_HOOK_NOT_INSTALLED описывает состояние установки; этот код означает, что значение дескриптора, переданное как HHOOK , недопустимо.

Ссылки


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