| Предыдущий | Следующий |
| CLASS_E_NOAGGREGATION | CLASS_E_NOTLICENSED |
CLASS_E_CLASSNOTAVAILABLE
Разбор CLASS_E_CLASSNOTAVAILABLE: данные для диагностики
CLASS_E_CLASSNOTAVAILABLE имеет значение 0x80040111 (-2147221231 в знаковом 32-битном представлении). Фабрика классов не может предоставить запрошенный класс.
Старший бит HRESULT делает значение ошибкой. Эта константа объявлена в winerror.h и относится к области «COM/DCOM: активация, регистрация и безопасность».
Контекст подсистемы
Код относится к инфраструктуре COM: активации класса, регистрации CLSID/IID, запуску сервера, RPC-каналу, модели апартаментов или проверке безопасности. Диагностика должна начинаться с первого вызова CoCreateInstance/CoGetClassObject либо операции маршалинга, а не с последующей ошибки приложения.
Диагностические данные
- На границе сбоя нужно зафиксировать модель апартамента и историю CoInitializeEx в текущем потоке.
- Для сравнения с исправным случаем нужно зафиксировать личность клиента и сервера, уровень олицетворения и authentication blanket.
Проверка по шагам
- Определить точный COM-вызов и сохранить исходный HRESULT до преобразования исключением; повторите шаг на исправном контрольном примере.
- Проверить регистрацию класса и интерфейса в представлении реестра нужной разрядности; сохраните первый hresult и точное время результата.
- Проверить запуск сервера вручную под той же учётной записью и с тем же окружением; отдельно отметьте изменение состояния объекта.
- Сопоставить разрешения DCOM с реальными SID клиента и серверной идентичности; все остальные условия оставьте неизменными.
- После исправления повторить активацию из исходного апартамента и проверить корректное освобождение объектов; не удаляйте исходные данные до завершения сравнения.
Корректирующие действия
Корректирующее действие для него должно устранять условие «Фабрика классов не может предоставить запрошенный класс» на уровне CLSID.
Документация
Нужно найти другой код? Найти другой код состояния или ошибки.