| Предыдущий | Следующий |
| ERROR_IO_INCOMPLETE | ERROR_NOACCESS |
ERROR_IO_PENDING
Что означает ERROR_IO_PENDING
ERROR_IO_PENDING — выполняется перекрывающаяся операция ввода-вывода.
Что проверить
Определите текущую операцию и документированный способ узнать её состояние или дождаться завершения.
- Проверьте, допускает ли API параллельный второй вызов либо требует строгой сериализации.
- Не запускайте циклические повторы без задержки: сначала дождитесь события/статуса, которым компонент сообщает о завершении.
Практический смысл и диагностика
- См. документацию Microsoft по ReadFile и GetOverlappedResult.
- Функции ReadFile, WriteFile, DeviceIoControl и ConnectNamedPipe могут немедленно вернуть FALSE, если дескриптор открыт для перекрывающегося ввода-вывода. Если GetLastError() после этого возвращает данный код, запрос уже принят подсистемой I/O и завершится позже.
- Этот код означает, что Windows приняла перекрывающийся запрос ввода-вывода, но операция ещё не закончилась. Это ожидаемое промежуточное состояние, а не ошибка чтения, записи, DeviceIoControl или подключения к именованному каналу.
- До получения подтверждения о завершении нельзя повторно использовать или уничтожать структуру OVERLAPPED. Связанный входной или выходной буфер тоже должен оставаться действительным. Повторный запуск операции с той же OVERLAPPED может повредить состояние запроса или сделать результат завершения неоднозначным.
- Не повторяйте тот же запрос только потому, что исходный вызов вернул FALSE с этим кодом. Повтор может отправить дублирующую работу. Рассматривайте состояние как «операция выполняется» и дождитесь завершения первоначального запроса.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
