Что означает код HRESULT 0xC00E0046 (MQ_ERROR_RESULT_BUFFER_TOO_SMALL)?

 
Предыдущий Следующий
MQ_ERROR_UNSUPPORTED_ACCESS_MODE MQ_ERROR_DELETE_CN_IN_USE

MQ_ERROR_RESULT_BUFFER_TOO_SMALL

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

MQ_ERROR_RESULT_BUFFER_TOO_SMALL (0xC00E0046) — Буфер результата слишком мал.

В подсистеме «COM/WinRT» результат 0xC00E0046 относится к области «контракт вызываемого interface, аргументы и state объекта». Описание «буфер результата слишком мал» сужает проверку до темы «mq, result, buffer, превышение, small».

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

В первую очередь сопоставьте первый отказ с фактическими параметрами операции. Для 0xC00E0046 в сценарии «буфер результата слишком мал» воспроизведите отказ на минимальном объекте и меняйте только одно условие за запуск, чтобы отделить неверный вход от состояния системы.

Сопоставьте с результатом 0xC00E0046 следующие данные: IID и method, thread/apartment, argument values, object state и исходный HRESULT; отдельно запишите ID, HRESULT. До исправления 0xC00E0046 сохраните исходное состояние объекта по теме «mq, result, buffer, превышение, small».

Практическое исправление для 0xC00E0046: исправьте параметры и жизненный цикл объекта в соответствии с контрактом первого неуспешного метода. В контексте условия «буфер результата слишком мал» для 0xC00E0046 оно должно устранить подтверждённую причину, а не скрыть исходный HRESULT.

Считайте исправление подтверждённым только после устойчивого повтора исходного сценария без результата 0xC00E0046 и без обхода штатных проверок.

Документация для результата 0xC00E0046: MSMQ message properties · MQReceiveMessage · MQReceiveMessageByLookupId.


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