| Предыдущий | Следующий |
| ERROR_OPEN_FAILED | ERROR_DISK_FULL |
ERROR_BUFFER_OVERFLOW
ERROR_BUFFER_OVERFLOW (111, 0x0000006F) — системная ошибка Win32 с определённым сообщением «Слишком длинное имя файла». Несмотря на имя константы, этот код обычно относится к ограничению длины пути, а не к общему переполнению буфера памяти.
Устаревшие ограничения путей
Многие файловые API Windows исторически используют MAX_PATH, обычно 260 символов с учётом завершающего нуля. Поэтому глубоко вложенный каталог, длинный путь рабочей копии или несколько длинных компонентов могут привести к сбою, даже если каждое имя файла по отдельности выглядит допустимым.
Пути расширенной длины
Unicode API файлов могут поддерживать гораздо более длинные абсолютные пути при использовании префикса расширенной длины, например \\?\. Эта форма меняет правила разбора пути: прямые косые черты и относительные компоненты, такие как . и .., обрабатываются иначе. Относительные пути по-прежнему ограничены традиционным пределом.
Практическое исправление
- До сбойного вызова запишите полный путь и количество его символов.
- Последовательно используйте Unicode API.
- Сократите необязательную глубину каталогов, если часть пути контролируется приложением.
- Убедитесь, что конкретная версия Windows, конфигурация приложения и используемый API поддерживают выбранный способ работы с длинными путями.
См. документацию Microsoft о ограничения максимальной длины пути и CreateFile.
Нужно найти другой код? Найти другой код состояния или ошибки.
