Что означает код HRESULT 0xC00E005D (MQ_ERROR_LABEL_TOO_LONG)?

 
Предыдущий Следующий
MQ_ERROR_ILLEGAL_SORT_PROPID MQ_ERROR_LABEL_BUFFER_TOO_SMALL

MQ_ERROR_LABEL_TOO_LONG

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

MQ_ERROR_LABEL_TOO_LONG (0xC00E005D) — Метка сообщения слишком длинная. Её длина не должна превышать MQ_MAX_MSG_LABEL_LEN.

Низкоуровневый API MSMQ часто возвращает свойства через буфер вызывающей стороны и отдельное поле длины. Здесь важно различать ёмкость выделенного буфера, фактическую длину данных и требуемый размер; повтор с тем же размером обычно ничего не меняет.

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

  • Проверьте длину label до отправки и считайте её в тех единицах/ограничении, которые задаёт MSMQ API; обрезка должна быть осознанным решением приложения.
  • Выделите буфер по документированному требуемому размеру и повторите вызов с теми же входными данными.
  • Проверьте, что между запросом размера и повторным чтением свойство не изменяется конкурентно, если API допускает изменяемую длину.

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

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

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


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