Что означает код HRESULT 0x80040110 (CLASS_E_NOAGGREGATION)?

 
Предыдущий Следующий
DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED CLASS_E_CLASSNOTAVAILABLE

CLASS_E_NOAGGREGATION

CLASS_E_NOAGGREGATION: значение HRESULT и практическая диагностика

HRESULT CLASS_E_NOAGGREGATION соответствует значению 0x80040110. Его штатное описание: «Класс не поддерживает агрегирование либо объект класса является удалённым.»

Старший бит HRESULT делает значение ошибкой. Эта константа объявлена в winerror.h и относится к области «COM/DCOM: активация, регистрация и безопасность».

Почему важен контекст вызова

Код относится к инфраструктуре COM: активации класса, регистрации CLSID/IID, запуску сервера, RPC-каналу, модели апартаментов или проверке безопасности. Диагностика должна начинаться с первого вызова CoCreateInstance/CoGetClassObject либо операции маршалинга, а не с последующей ошибки приложения.

Само имя кода не доказывает первопричину.

Минимальный набор свидетельств

  • Для воспроизводимого отчёта нужно зафиксировать личность клиента и сервера, уровень олицетворения и authentication blanket.
  • В первичном журнале нужно зафиксировать модель апартамента и историю CoInitializeEx в текущем потоке.

Как локализовать причину

  1. Определить точный COM-вызов и сохранить исходный HRESULT до преобразования исключением; не удаляйте исходные данные до завершения сравнения.
  2. Проверить регистрацию класса и интерфейса в представлении реестра нужной разрядности; повторите шаг на исправном контрольном примере.
  3. Проверить запуск сервера вручную под той же учётной записью и с тем же окружением; сохраните первый hresult и точное время результата.
  4. Сопоставить разрешения DCOM с реальными SID клиента и серверной идентичности; отдельно отметьте изменение состояния объекта.
  5. После исправления повторить активацию из исходного апартамента и проверить корректное освобождение объектов; все остальные условия оставьте неизменными.

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

Корректирующее действие для него должно устранять условие «Класс не поддерживает агрегирование либо объект класса является удалённым» на уровне CLSID.

Полезные материалы


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