| Предыдущий | Следующий |
| CO_E_NOTINITIALIZED | CO_E_CANTDETERMINECLASS |
CO_E_ALREADYINITIALIZED
Контракт операции
При CO_E_ALREADYINITIALIZED нарушено конкретное условие: Функция CoInitialize уже была вызвана. Не подменяйте его последующей ошибкой приложения: сначала локализуйте инициализация COM runtime.
Параметры первого сбоя
- зафиксируйте thread ID, apartment model, CoInitializeEx history, TLS/allocator/SCM state и первый initialization HRESULT. Для условия «Функция CoInitialize уже была вызвана» это позволяет восстановить исходный объект и не спутать его с последующим состоянием.
- соберите для сравнения технические маркеры
FACILITY_ITF,CLSID,IID,CoGetClassObject,CoInitializeExс теми значениями, которые были видны до очистки/rollback; они привязывают «Функция CoInitialize уже была вызвана» к реальному вызову. - снимите в трассировку момент первого результата и один исправный запуск, сохранив одинаковыми входные данные; различие должно появиться именно на стадии инициализация COM runtime.
Отделение соседних состояний
проверьте отдельно проверить порядок инициализации на одном потоке и отделить apartment setup от последующей активации. Изменяйте только предпосылку, связанную с «Функция CoInitialize уже была вызвана», а регистрацию, identity, входной объект и окружение по возможности оставляйте прежними.
не компенсировать ошибку дополнительными CoInitialize/CoUninitialize без проверки баланса вызовов; для результата «Функция CoInitialize уже была вызвана» широкая переустановка, очистка каталога или ослабление безопасности не считается доказательством причины.
Для соседних результатов CO_E_NOTINITIALIZED сравнивайте первую различающуюся операцию. Исправление подтверждено только тогда, когда исходная граница проходит при прежних входах и следующий ожидаемый шаг получает корректное состояние.
Технические ссылки
- Microsoft: generic COM error codes
- Microsoft: HRESULT values
- Microsoft: CoInitializeEx
- Microsoft: CoGetClassObject
- Microsoft: CoRegisterClassObject
- Microsoft: CoCreateInstance
Нужно найти другой код? Найти другой код состояния или ошибки.