Что означает код HRESULT 0xC00D126A (NS_E_INTERFACE_NOT_REGISTERED_IN_GIT)?

 
Предыдущий Следующий
NS_E_BKGDOWNLOAD_FAILEDINITIALIZE NS_E_BKGDOWNLOAD_INVALID_FILE_NAME

NS_E_INTERFACE_NOT_REGISTERED_IN_GIT

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

NS_E_INTERFACE_NOT_REGISTERED_IN_GIT (0xC00D126A) — вызывающий код пытается получить COM-интерфейс через Global Interface Table (GIT), но соответствующей регистрации уже нет либо передан неверный cookie.

Типичный сценарий — рабочий поток использует cookie после того, как другой поток уже вызвал RevokeInterfaceFromGlobal. Прямой указатель, действительный в одном COM-апартамент, не заменяет корректную регистрацию в GIT для использования интерфейса из другого apartment.

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

  • Зафиксируйте поток и COM-апартамент, вызвавший RegisterInterfaceInGlobal, значение cookie и запрошенный IID.
  • Найдите точку вызова RevokeInterfaceFromGlobal и убедитесь, что отзыв не происходит раньше завершения всех асинхронных операций и обратных вызовов.
  • Проверьте, что cookie относится к тому же объекту и IID и не используется повторно после освобождения объекта.

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

Зарегистрируйте живой интерфейс до межапартаментного использования и отзывайте регистрацию только после завершения всех потребителей. Повторный вызов с тем же сценарием должен получить интерфейс через GIT без NS_E_INTERFACE_NOT_REGISTERED_IN_GIT.

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


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