Что означает код NTSTATUS 0xC0000231 (STATUS_MARSHALL_OVERFLOW)?

 
Предыдущий Следующий
STATUS_PROPSET_NOT_FOUND STATUS_INVALID_VARIANT

STATUS_MARSHALL_OVERFLOW

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

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

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

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

Как исправлять

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

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


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