| Предыдущий | Следующий |
| ERROR_PIPE_NOT_CONNECTED | ERROR_NO_WORK_DONE |
ERROR_MORE_DATA
ERROR_MORE_DATA обычно означает, что буфер чтения именованного канала в режиме сообщений был меньше следующего полного сообщения. Windows возвращает поместившуюся часть и оставляет остаток доступным для последующих чтений.
Где возникает ошибка
Когда канал типа сообщений читается в режиме чтения сообщений, ReadFile завершается успешно только после чтения всего сообщения. Если переданный буфер слишком мал, вызов возвращает FALSE, GetLastError() возвращает ERROR_MORE_DATA, а приложение должно продолжить чтение того же сообщения.
Правильная обработка
- Сохраните уже полученные частичные данные.
- Выполняйте дополнительные чтения, пока последний вызов не завершится без
ERROR_MORE_DATA. - Не считайте этот статус разрывом соединения и не отбрасывайте частичное сообщение.
- Ограничьте максимальный принимаемый размер сообщения, чтобы избежать неограниченного роста памяти.
Важная область применения
Точная интерпретация зависит от API. Для именованных каналов это условие границы сообщения, а не общая рекомендация повторять любой неудачный вызов Windows.
См. документацию Microsoft по ReadFile и Клиент именованного канала.
Нужно найти другой код? Найти другой код состояния или ошибки.
