Что означает код HRESULT 0x800401FC (CO_E_OBJISREG)?

 
Предыдущий Следующий
CO_E_OBJNOTREG CO_E_OBJNOTCONNECTED

CO_E_OBJISREG

Что означает CO_E_OBJISREG

CO_E_OBJISREG означает «объект уже зарегистрирован». В COM это обычно указывает на повторную регистрацию одного и того же объекта или на то, что вызывающий код потерял сведения о ранее созданной регистрации. Это не повод повторно регистрировать DLL или менять CLSID в реестре.

Что проверить

  • Сохраните API регистрации, identity объекта и registration cookie/ключ, возвращённый первоначальным вызовом.
  • Проверьте, не выполняется ли один и тот же init path дважды из-за повторного старта компонента или гонки потоков.
  • Сопоставьте регистрацию с её штатным revoke/unregister; отсутствие симметричной очистки оставляет объект зарегистрированным дольше ожидаемого.

Как исправить

Сделайте регистрацию идемпотентной либо храните и корректно освобождайте исходный registration cookie. Не выполняйте случайный regsvr32: этот HRESULT относится к живой регистрации объекта, а не обязательно к установке COM-сервера.

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

На один объект приходится одна активная регистрация, а повторная инициализация распознаёт существующую запись или предварительно штатно её снимает.

Технические ссылки


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