| Предыдущий | Следующий |
| STATUS_ACCESS_DENIED | STATUS_OBJECT_TYPE_MISMATCH |
STATUS_BUFFER_TOO_SMALL
Буфер слишком мал для результата
STATUS_BUFFER_TOO_SMALL означает, что вызывающая сторона предоставила недостаточный объём памяти для результата. Для многих Windows API это штатная часть двухшагового шаблона: сначала получить требуемый размер, затем выделить буфер и повторить вызов. Важно использовать размер, возвращённый именно этой операцией, а не приблизительную константу.
Проверьте единицы измерения — байты, символы или число элементов — и защититесь от переполнения при вычислении размера структуры с переменным хвостом. Если размер может измениться между двумя вызовами, предусмотрите ограниченное повторение. Не продолжайте разбор частично заполненного буфера, если контракт API прямо говорит, что данные при этом статусе не записаны.
Что проверить
- Запишите переданный и требуемый размеры.
- Проверьте единицы измерения и арифметику выделения памяти.
- Если объект меняется конкурентно, допускайте повторное получение размера с разумным пределом.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.