Что означает код HRESULT 0x80110604 (COMQC_E_BAD_MESSAGE)?

 
Предыдущий Следующий
COMQC_E_NO_IPERSISTSTREAM COMQC_E_UNAUTHENTICATED

COMQC_E_BAD_MESSAGE

Разбор COMQC_E_BAD_MESSAGE: данные для диагностики

HRESULT COMQC_E_BAD_MESSAGE соответствует значению 0x80110604. Его штатное описание: «Сообщение имеет неверный формат или было повреждено при передаче.»

Для COMQC_E_BAD_MESSAGE старший бит HRESULT делает значение ошибкой. Константа COMQC_E_BAD_MESSAGE объявлена в winerror.h и относится к области «очереди компонентов COM+».

Техническая граница

Для COMQC_E_BAD_MESSAGE код относится к COM+ Queued Components. Для COMQC_E_BAD_MESSAGE здесь важны доступность MSMQ, пригодность интерфейса для очереди, сериализуемость вызова и доверие к отправителю; успешная запись сообщения в очередь ещё не доказывает успешное выполнение серверного компонента.

Для COMQC_E_BAD_MESSAGE само имя кода не доказывает первопричину. Для COMQC_E_BAD_MESSAGE оно указывает, на каком контракте подсистема обнаружила нарушение; первичным считается первый вызов, который вернул HRESULT.

В имени COMQC_E_BAD_MESSAGE закодированы ориентиры для расследования: COMQC — технический признак «comqc»; BAD — некорректные данные; MESSAGE — технический признак «message». Для COMQC_E_BAD_MESSAGE эти ориентиры задают конкретный предмет проверки, но не заменяют контракт вызвавшего API.

Что сообщает Windows: признаки в имени константы

При разборе COMQC_E_BAD_MESSAGE обозначение COMQC связывает код с темой «технический признак «comqc»». До повторной проверки COMQC_E_BAD_MESSAGE сохраните входные данные без нормализации.

Маркер BAD в COMQC_E_BAD_MESSAGE направляет проверку на некорректные данные. Для COMQC_E_BAD_MESSAGE сопоставьте этот признак с фактическими параметрами первого неуспешного вызова.

Компонент имени MESSAGE уточняет смысл COMQC_E_BAD_MESSAGE: речь идёт про технический признак «message». Для COMQC_E_BAD_MESSAGE эту границу следует воспроизвести отдельно от последующей обработки ошибки.

Для COMQC_E_BAD_MESSAGE в техническом контексте особенно важны: провайдер. При расследовании COMQC_E_BAD_MESSAGE их следует проверять как связанные части одной операции, а не как независимые симптомы.

Данные для воспроизведения

  • До повторной попытки по COMQC_E_BAD_MESSAGE нужно сохранить имя очереди, Message ID и Correlation ID.
  • Для воспроизводимого отчёта по COMQC_E_BAD_MESSAGE нужно записать интерфейс, IID и вызываемый метод queued-компонента.
  • В первичном журнале по COMQC_E_BAD_MESSAGE нужно проверить состояние MSMQ, права очереди и учётную запись слушателя.
  • На границе сбоя по COMQC_E_BAD_MESSAGE нужно сохранить тело и свойства проблемного сообщения до его перемещения.
  • Для сравнения с исправным случаем по COMQC_E_BAD_MESSAGE нужно зафиксировать AppID COM+ приложения и параметры Queuing Enabled/Listen.

Практическая диагностика

  1. Для COMQC_E_BAD_MESSAGE: Проверить, что интерфейс отмечен как queueable и параметры метода допускают маршалинг; сохраните первый hresult и точное время результата.
  2. Для COMQC_E_BAD_MESSAGE: Проверить создание и доступность очереди приложения COM+; отдельно отметьте изменение состояния объекта.
  3. Для COMQC_E_BAD_MESSAGE: Сопоставить отправителя сообщения с политикой аутентификации и доверия; все остальные условия оставьте неизменными.
  4. Для COMQC_E_BAD_MESSAGE: Повторить вызов с минимальным набором параметров и проследить Message ID до получателя; не удаляйте исходные данные до завершения сравнения.
  5. Для COMQC_E_BAD_MESSAGE: Подтвердить не только удаление сообщения из очереди, но и завершение серверной транзакции; повторите шаг на исправном контрольном примере.

Восстановление рабочего пути

Корректирующее действие для COMQC_E_BAD_MESSAGE должно устранять условие «Сообщение имеет неверный формат или было повреждено при передаче» на уровне провайдер. Для COMQC_E_BAD_MESSAGE простое подавление HRESULT, бесконечный повтор или очистка всех настроек не доказывают восстановление контракта.

Для COMQC_E_BAD_MESSAGE зафиксируйте результат до и после изменения одними и теми же средствами. Для COMQC_E_BAD_MESSAGE сравнивайте не только HRESULT, но и конечное состояние объекта, побочные эффекты и события подсистемы.

Ссылки Microsoft


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