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