| Предыдущий | Следующий |
| 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 и соответствующий интерфейс, протокол или формат данных определения размера вывода.
Нужно найти другой код? Найти другой код состояния или ошибки.
