Site icon EfmSoft

Что означает код HRESULT 0x00040000 (OLE_S_USEREG)?

 
Предыдущий Следующий
STG_S_POWER_CYCLE_REQUIRED OLE_S_STATIC

OLE_S_USEREG

OLE просит использовать сведения из реестра

это HRESULT 262144 (0x00040000) из winerror.h. AllStat описывает OLE_S_USEREG как «Используйте базу реестра для получения запрошенных сведений». Старший бит severity сброшен, поэтому это успешный результат, но он сообщает больше, чем обычный S_OK.

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

Где встречается этот результат

Для этого результата, одно и то же числовое успешное значение может быть обработано неверно, если обёртка оставляет только Boolean. для этого результата сохраняйте исходный HRESULT до оценки выходных данных и перехода состояния, относящихся к конкретному коду.

Последовательность диагностики

Граница состояния, которую нужно подтвердить

Главный вопрос для этого результата — присутствует ли регистрация класса, правильно ли выбрана для bitness процесса и контекста user/machine и соответствует ли реально активируемому классу. для этого результата сам HRESULT не подтверждает завершение несвязанной работы и не гарантирует качество необязательных выходных данных.

Надёжная Интерпретация этого результата точно указывает контракт метода, поколение объекта и выходные данные, которые остаются действительными. для этого результата, это не позволяет ошибочно считать результат «успех с дополнительной информацией» ни полным успехом, ни обычной ошибкой.

Правильная обработка, повтор и восстановление

Следуйте документированному пути поиска в реестре и проверяйте регистрацию класса. Не заменяйте этот статус общей ошибкой и не выдумывайте возможности объекта, отсутствующие в регистрации.

Повторяйте OLE_S_USEREG только когда зафиксированное состояние действительно может изменить документированный результат. для этого результата, повтор того же вызова неуместен для устойчивого признака конца, отмены, неподдерживаемого формата, скорректированного свойства или частичного результата, уже выполненные побочные эффекты которого ещё не согласованы.

Какие доказательства и телеметрию сохранить

Также зафиксируйте ole_s_usereg_operation, ole_s_usereg_object, ole_s_usereg_state_before, ole_s_usereg_state_after, время UTC, идентификаторы процесса и потока, а также correlation ID. для этого результата, не записывайте секреты в журналы, но сохраните GUID, CLSID, подтипы media, идентификаторы свойств, идентификаторы строк и хеши, необходимые для различения объектов.

Отличие от соседних значений HRESULT

OLE_S_STATIC описывает статический presentation object, а OLE_S_USEREG указывает вызывающему коду, где получить метаданные.

Для этого результата, это различие определяет, должен ли вызывающий код принять частичные результаты, завершить перечисление, подождать, изменить конфигурацию, уведомить пользователя либо вообще не выполнять восстановление после ошибки.

Рекомендации разработчикам и администраторам

Обработка кода OLE_S_USEREG должна проверять точное документированное значение до общей ветки SUCCEEDED(hr), если от него зависят выходные данные или управление. Операционное исправление для этого результата должно затрагивать компонент-владелец COM, media, Tablet PC или OLE DB, а не сбрасывать несвязанные службы.

Отчёт в поддержку для этого результата должен включать десятичное значение 262144, шестнадцатеричное 0x00040000, описание AllStat, API-владельца и первый детальный статус или выходной параметр, объясняющий, почему метод не вернул обычный S_OK.

Практический сценарий проверки

OLE-контейнер запрашивает у object handler сведения о классе и получает этот HRESULT. Он читает зарегистрированные verbs для CLSID, записывает использованное представление реестра и не запускает сервер только ради запроса метаданных.

Негативный тест должен сохранять условие, приводящее к этому HRESULT; тест восстановления должен менять только это условие и проверять как конечное состояние, так и HRESULT.

Ссылки


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

Exit mobile version