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