Что означает код HRESULT 0x80093017 (OSS_UNAVAIL_ENCRULES)?

 
Предыдущий Следующий
OSS_BAD_ENCRULES OSS_CANT_OPEN_TRACE_WINDOW

OSS_UNAVAIL_ENCRULES

OSS_UNAVAIL_ENCRULES (0x80093017) — результат OSS ASN.1 runtime для распознанных encoding rules, не включённых в сборку. Запрошенный набор rules известен runtime, но generated/runtime modules, необходимые для его выполнения, не включены. Поскольку запрошенный rule и направление операции имеют решающее значение для этого условия, диапазон HRESULT Microsoft следует рассматривать вместе с документацией return code OSS Nokalva. Начните исследование с фиксации compiler options, использованные при генерации code, затем отделите закодированное значение от сгенерированных артефактов, аргументов вызова и runtime-пакета, реально загруженного процессом.

Интерпретация во время выполнения

На границе распознанных encoding rules, не включённых в сборку зафиксируйте первую OSS-функцию, вернувшую значение, и отметьте, выполнялись ли encode, decode, copy, compare, constraint validation или настройка trace. Сохраните выбранный PDU, правила кодирования и фактические modules и static libraries, прилинкованные в процесс; иначе внешний certificate/security wrapper может скрыть полезный результат codec за общей ошибкой.

При проверке сохраняйте исходные байты или object graph неизменными временно переключитесь на rule, заведомо присутствующий в сборке. Изменение compiler options, использованные при генерации code после reload, замены plugin, restart или развертывания schema является данными о состоянии runtime, а не основанием выбрасывать reproducer. Когда фактические modules и static libraries, прилинкованные в процесс указывает на конкретное сообщение, сохраняйте криптографический хеш и минимальный безопасный образец вместо записи certificate, subscriber, credential или private-key material.

Диагностическая запись

ЗапишитеДиагностическое значение
запрошенный rule и направление операцииЛокализует конкретное сообщение, allocation, module или границу API
compiler options, использованные при генерации codeОтделяет поведение, зависящее от payload, от состояния сборки и процесса
фактические modules и static libraries, прилинкованные в процессДелает сравнение воспроизводимым без изменения исходного артефакта

Небольшие эксперименты с высокой диагностической ценностью

  1. временно переключитесь на rule, заведомо присутствующий в сборке
  2. проверяйте link map, а не только настройки source project
  3. перегенерируйте с нужными options BER/DER/PER

Избегайте неверного обходного решения

Допустимый protocol нельзя незаметно кодировать другим rule: BER, DER и PER дают разные wire representations и требования совместимости.

Инструментирование

Записывайте полный 32-битный HRESULT и младший OSS return number вместе с направлением операции, символическим PDU, правилом кодирования, числом байтов и идентификатором generated table. Там, где запрошенный rule и направление операции может раскрывать чувствительные данные, хеш с ограниченным структурным фрагментом безопаснее полного payload. Используйте compiler options, использованные при генерации code вместе с путями и версиями модулей OSS, записанными один раз на процесс, чтобы сопоставлять различия упаковки без засорения обычной диагностики.

Матрица решений

Контролируемое наблюдениеПодтверждаемый вывод
временно переключитесь на rule, заведомо присутствующий в сборкеИзменившийся результат локализует первый предлагаемый контроль вместо слепого повтора
запрошенный rule и направление операции различаются между успешным и неуспешным случаемРазница локализует распознанные encoding rules, не включённые в build, до изменения несвязанных настроек
Независимый decoder принимает тот же артефактПроверьте сгенерированную schema, выбранные rules, ABI и необязательные модули OSS, прежде чем объявлять байты недействительными
Новый control object изменяет результатИсследуйте инициализацию, lifecycle, владение allocator, изменение конфигурации и concurrent access

Подтверждение восстановления

Добавьте реализацию точно нужного rule, перегенерируйте совместимый code и проверьте независимым decoder. Тест восстановления для временно переключитесь на rule, заведомо присутствующий в сборке должен повторять ту же операцию при той же schema и encoding rule, сохранять один намеренно недействительный control и проверять владение/очистку после обоих исходов. Успех после непроанализированного повтора не доказывает, что запрошенный rule и направление операции теперь соответствует контракту codec.

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


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