| Предыдущий | Следующий |
| 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.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
