Site icon EfmSoft

Что означает код HRESULT 0x80090028 (NTE_BUFFER_TOO_SMALL)?

 
Предыдущий Следующий
NTE_INVALID_PARAMETER NTE_NOT_SUPPORTED

NTE_BUFFER_TOO_SMALL

NTE_BUFFER_TOO_SMALL указывает на сбой на этапе определения размера вывода. Целевой буфер не вмещает результат или значение свойства; обычно это происходит, если вызывающая сторона пропустила запрос требуемого размера или использовала устаревшую длину после изменения параметров. Диагностируйте определение размера вывода в первом компоненте, вернувшем значение, а не в последнем слое интерфейса: последующая очистка и резервные попытки могут породить другие вторичные ошибки.

Читайте результат на правильном уровне

При этом результате многие криптографические API Windows используют предоставленные вызывающей стороной байтовые буферы со строгими правилами размеров и aliasing. Ёмкость, единицы байт/символ, двухпроходные запросы размера, увеличение из-за padding и допустимые схемы in-place входят в контракт вызова. Исследуйте диапазоны адресов и длины, а не только равенство указателей или номинальный размер массива.

Используйте две оси сравнения

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

Не смешивайте с соседним кодом

В отличие от NTE_BUFFERS_OVERLAP, этот результат относится к ёмкости, а не к aliasing диапазонов источника и назначения. Больший буфер не устраняет запрещённое перекрытие, а раздельные буферы не исправляют недостаточную ёмкость. Не меняйте обе гипотезы одновременно в одном тесте.

Проверка после изменения

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

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

Для NTE_BUFFER_TOO_SMALL, эти источники определяют HRESULT и соответствующий интерфейс, протокол или формат данных определения размера вывода.


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

Exit mobile version