| Предыдущий | Следующий |
| 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 , недопустимо.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
