Что означает код ошибки Windows 122 (ERROR_INSUFFICIENT_BUFFER)?

 
Также может означать:
КонстантаТипОС
EOPNOTSUPPerrnoSolaris
ENOMSGerrnoWindows
KERNEL_DATA_INPAGE_ERRORКод BSODWindows
Предыдущий Следующий
ERROR_SEM_TIMEOUT ERROR_INVALID_NAME

ERROR_INSUFFICIENT_BUFFER

API требуется область данных большего размера

ERROR_INSUFFICIENT_BUFFER часто появляется в двухвызовных шаблонах Windows API: сначала вызывающая сторона запрашивает требуемый размер, выделяет память, затем повторяет вызов. Размер может выражаться в байтах или символах, поэтому необходим контракт конкретной функции.

Правильная обработка

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

Распространённые ошибки

Частые причины включают передачу sizeof(pointer) вместо ёмкости буфера, смешение размеров элементов ANSI и Unicode, отсутствие полей версии структуры и трактовку сообщённого требования как числа байтов, когда оно выражено в символах. Повторите вызов с достаточно большим буфером и ограниченной политикой роста; неизменно маленький размер после нескольких попыток может указывать на неверный прототип или повреждённый выходной параметр.

Ссылки


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