| Предыдущий | Следующий |
| CO_E_SERVER_NOT_PAUSED | CO_E_CLRNOTAVAILABLE |
CO_E_CLASS_DISABLED
Точная граница результата
Если возвращён CO_E_CLASS_DISABLED, непосредственно известно следующее: Компонент или содержащее его приложение отключено. Для COM/DCOM это сужает расследование до COM runtime.
Что сохранить до retry
- запишите CLSID/IID, apartment, caller identity, server process и первый HRESULT исходного COM-вызова. Для условия «Компонент или содержащее его приложение отключено» это позволяет восстановить исходный объект и не спутать его с последующим состоянием.
- снимите в трассировку технические маркеры
HRESULTс теми значениями, которые были видны до очистки/rollback; они привязывают «Компонент или содержащее его приложение отключено» к реальному вызову. - сохраните момент первого результата и один исправный запуск, сохранив одинаковыми входные данные; различие должно появиться именно на стадии COM runtime.
Проверка гипотезы
проверьте одной переменной локализовать первый COM API, после которого состояние отличается от исправного контрольного запуска. Изменяйте только предпосылку, связанную с «Компонент или содержащее его приложение отключено», а регистрацию, identity, входной объект и окружение по возможности оставляйте прежними.
не сводить разные стадии активации, marshaling и lifetime к общему сообщению о сбое COM; для результата «Компонент или содержащее его приложение отключено» широкая переустановка, очистка каталога или ослабление безопасности не считается доказательством причины.
Для соседних результатов REGDB_E_CLASSNOTREG сравнивайте первую различающуюся операцию. Исправление подтверждено только тогда, когда исходная граница проходит при прежних входах и следующий ожидаемый шаг получает корректное состояние.
Технические ссылки
- Microsoft: COM error codes
- Microsoft: COM processes, threads, and apartments
- Microsoft: COM security defaults
- Microsoft: HRESULT values
- Портал COM для Windows
- Microsoft: CoCreateInstance
Нужно найти другой код? Найти другой код состояния или ошибки.
