| Предыдущий | Следующий |
| CO_E_INIT_RPC_CHANNEL | CO_E_INIT_TLS_CHANNEL_CONTROL |
CO_E_INIT_TLS_SET_CHANNEL_CONTROL
Контракт операции
Штатный смысл CO_E_INIT_TLS_SET_CHANNEL_CONTROL — Не удалось задать управление каналом в локальном хранилище потока. Этот результат относится к COM/DCOM, а диагностически важная граница здесь — инициализация COM runtime.
Что сохранить до retry
- зафиксируйте thread ID, apartment model, CoInitializeEx history, TLS/allocator/SCM state и первый initialization HRESULT. Для условия «Не удалось задать управление каналом в локальном хранилище потока» это позволяет восстановить исходный объект и не спутать его с последующим состоянием.
- сохраните технические маркеры
CoInitializeEx,HRESULT,TLSс теми значениями, которые были видны до очистки/rollback; они привязывают «Не удалось задать управление каналом в локальном хранилище потока» к реальному вызову. - приложите к инциденту момент первого результата и один исправный запуск, сохранив одинаковыми входные данные; различие должно появиться именно на стадии инициализация COM runtime.
Как подтвердить исправление
повторите на контрольном случае проверить порядок инициализации на одном потоке и отделить apartment setup от последующей активации. Изменяйте только предпосылку, связанную с «Не удалось задать управление каналом в локальном хранилище потока», а регистрацию, identity, входной объект и окружение по возможности оставляйте прежними.
не компенсировать ошибку дополнительными CoInitialize/CoUninitialize без проверки баланса вызовов; для результата «Не удалось задать управление каналом в локальном хранилище потока» широкая переустановка, очистка каталога или ослабление безопасности не считается доказательством причины.
Для соседних результатов CO_E_INIT_TLS_CHANNEL_CONTROL сравнивайте первую различающуюся операцию. Исправление подтверждено только тогда, когда исходная граница проходит при прежних входах и следующий ожидаемый шаг получает корректное состояние.
Запись channel-control в уже подготовленный TLS
Здесь различающая граница позже: storage для channel control уже существует, но runtime не смог поместить в него control state. Сравните lifetime TLS slot, teardown callbacks и состояние потока между выделением и присваиванием. Особенно полезен trace при shutdown plug-in или apartment teardown. Повторное выделение TLS не является исправлением, если slot разрушается до операции установки значения.
Технические ссылки
- Microsoft: CoInitializeEx
- Microsoft: COM security defaults
- Microsoft: common HRESULT values
- Microsoft: HRESULT values
- Портал COM для Windows
- Microsoft: COM error codes
Нужно найти другой код? Найти другой код состояния или ошибки.