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