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

 
Предыдущий Следующий
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 с этим кодом. Повтор может отправить дублирующую работу. Рассматривайте состояние как «операция выполняется» и дождитесь завершения первоначального запроса.

Технические ссылки


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