Что означает код HRESULT 0x80070006 (E_HANDLE)?

 
Также может означать:
КонстантаТипОС
HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE)Ошибка WindowsWindows
Предыдущий Следующий
E_ACCESSDENIED E_OUTOFMEMORY

E_HANDLE

Что означает E_HANDLE

E_HANDLE (0x80070006) — Недопустимый дескриптор.

Код 0x80070006 относится не ко всему компоненту «COM/WinRT», а к операции в области «контракт вызываемого interface, аргументы и state объекта». Сообщение «недопустимый дескриптор» позволяет начать с темы «дескриптор».

Что проверить и как подтвердить исправление

Сначала сопоставьте первый отказ с фактическими параметрами операции. Для 0x80070006 в условии «недопустимый дескриптор» воспроизведите отказ на минимальном объекте и меняйте только одно условие за запуск, чтобы отделить неверный вход от состояния системы.

Диагностика 0x80070006 должна включать IID и method, thread/apartment, argument values, object state и исходный HRESULT; отдельно запишите IDs, HRESULT. Для темы «дескриптор» при 0x80070006 важны значения именно на первом отказе, а не после обработки ошибки верхним уровнем.

Коррекция для 0x80070006 должна быть предметной: приведите аргументы и жизненный цикл объекта к контракту метода; неизменённый вызов после contract failure повторять не следует. Для 0x80070006 и сообщения «недопустимый дескриптор» общий сброс допустим лишь как контроль, но не как доказательство причины.

Считайте исправление подтверждённым только после устойчивого повтора исходного сценария без результата 0x80070006 и без обхода штатных проверок.

Документация для результата 0x80070006: Microsoft Open Specifications: HRESULT values · COM clients and servers · CoGetClassObject.


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