| Предыдущий | Следующий |
| STATUS_PAGEFILE_QUOTA | STATUS_BAD_INITIAL_STACK |
STATUS_INVALID_HANDLE
Дескриптор объекта недействителен в текущем контексте дескрипторов
Дескриптор Windows разрешается через таблицу дескрипторов процесса и имеет смысл только в контексте, где он был получен, либо куда был явно дублирован или унаследован. STATUS_INVALID_HANDLE поэтому может указывать на устаревший закрытый дескриптор, значение из другого процесса, неинициализированное поле или псевдодескриптор, переданный API, который его не принимает.
Запишите необработанное значение дескриптора, идентификатор процесса, ожидаемый API тип объекта и точку передачи владения. Повторное использование значений дескрипторов усложняет отложенные ошибки: после CloseHandleто же числовое значение позднее может обозначать другой объект. Не проверяйте дескриптор одним лишь сравнением с NULL ; сохраняйте события его жизненного цикла и дублирования.
Что проверить
- Отслеживайте создание, дублирование, наследование и закрытие дескриптора.
- Убедитесь, что API принимает фактический тип объекта и используемую форму псевдодескриптора.
- Перед повтором исследуйте использование после закрытия и межпроцессную передачу дескриптора.
Ссылки
- Microsoft: CloseHandle
- System Informer PHNT: нативный API Object Manager
- Открытые спецификации Microsoft: значения NTSTATUS
Нужно найти другой код? Найти другой код состояния или ошибки.