Что означает код HRESULT 0x80004002 (E_NOINTERFACE)?

 
Предыдущий Следующий
E_NOTIMPL E_POINTER

E_NOINTERFACE

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

E_NOINTERFACE (0x80004002) — Запрошенный интерфейс не поддерживается.

Контекст результата 0x80004002 — подсистема «COM/WinRT» и область «контракт вызываемого interface, аргументы и state объекта». Условие «запрошенный интерфейс не поддерживается» указывает на тему «nointerface», а не на общий отказ всего компонента.

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

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

Чтобы локализовать 0x80004002, соберите IID и method, thread/apartment, argument values, object state и исходный HRESULT; отдельно запишите HRESULT, IUnknown::QueryInterface, IID, CLSID, ID. Затем для 0x80004002 сравните исправный и неуспешный запуск в части «nointerface», меняя одно условие за раз.

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

Закройте диагностику после двух проверок: исходный сценарий проходит без результата 0x80004002, а заведомо неверный вход отклоняется на ожидаемой границе.

Документация для результата 0x80004002: COM error codes · COM processes, threads, and apartments · COM security defaults.


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