Поделиться через


Функция CancelIoEx

Помечает все невыполненные операции ввода-вывода для указанного дескриптора файла. Функция отменяет операции ввода-вывода только в текущем процессе, независимо от того, какой поток создал операцию ввода-вывода.

Синтаксис

BOOL WINAPI CancelIoEx(
  _In_     HANDLE       hFile,
  _In_opt_ LPOVERLAPPED lpOverlapped
);

Параметры

hFile [in]

Дескриптор файла.

lpOverlapped [in, необязательный]

Указатель на структуру данных OVERLAPPED , содержащую данные, используемые для асинхронного ввода-вывода.

Если этот параметр имеет значение NULL, все запросы ввода-вывода для параметра hFile отменяются.

Если этот параметр не равен NULL, то только те конкретные запросы ввода-вывода, которые были выданы для файла с указанной перекрывающейся структурой lpOverlapped , помечаются как отмененные. Это означает, что вы можете отменить один или несколько запросов, а функция CancelIo отменяет все невыполненные запросы на дескриптор файла.

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение. Операция отмены для всех ожидающих операций ввода-вывода, выданных вызывающим процессом для указанного дескриптора файла, была успешно запрошена. Приложение не должно освобождать или повторно использовать структуру OVERLAPPED , связанную с отмененными операциями ввода-вывода, пока они не будут завершены. Поток может использовать функцию GetOverlappedResult для определения завершения самих операций ввода-вывода.

Если функция завершается сбоем, возвращается значение 0 (ноль). Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError .

Если этой функции не удается найти запрос на отмену, возвращается значение 0 (ноль), а GetLastError возвращает ERROR_NOT_FOUND.

Комментарии

Функция CancelIoEx позволяет отменять запросы в потоках, отличных от вызывающего потока. Функция CancelIo отменяет только запросы в том же потоке, который вызвал функцию CancelIo . CancelIoEx отменяет только невыполненные операции ввода-вывода для дескриптора, но не изменяет состояние дескриптора; это означает, что нельзя полагаться на состояние дескриптора, так как вы не можете узнать, была ли операция успешно завершена или отменена.

Если для указанного дескриптора файла выполняются какие-либо ожидающие операции ввода-вывода, функция CancelIoEx помечает их для отмены. Большинство типов операций можно отменить немедленно; Другие операции могут продолжаться до завершения, прежде чем они будут фактически отменены и вызывающий объект будет уведомлен. Функция CancelIoEx не ожидает завершения всех отмененных операций.

Если дескриптор файла связан с портом завершения, пакет завершения ввода-вывода не помещается в очередь на порт, если синхронная операция успешно отменена. Для асинхронных операций, ожидающих выполнения, операция отмены помещет в очередь пакет завершения ввода-вывода.

Отменяемая операция завершается с одним из трех состояний; Чтобы определить состояние завершения, необходимо проверка состояние завершения. Три состояния:

  • Операция завершилась обычным образом. Это может произойти, даже если операция была отменена, так как запрос на отмену мог не быть отправлен вовремя для отмены операции.
  • Операция была отменена. Функция GetLastError возвращает ERROR_OPERATION_ABORTED.
  • Операция завершилась сбоем с другой ошибкой. Функция GetLastError возвращает соответствующий код ошибки.

В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.

Технология Поддерживается
Протокол SMB 3.0
Да
SMB 3.0 Transparent Failover (TFO)
Да
SMB 3.0 с масштабируемыми общими папками (SO)
Да
Файловая система общего тома кластера (CSVFS)
Да
Восстанавливаемая файловая система (ReFS)
Да

Требования

Требование Значение
Минимальная версия клиента
Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера
Windows Server 2008 [классические приложения | Приложения UWP]
Заголовок
IoAPI.h (включая Windows.h);
WinBase.h в Windows Server 2008 R2, Windows 7, Windows Server 2008 и Windows Vista (включая Windows.h)
Библиотека
Kernel32.lib
DLL
Kernel32.dll

См. также

CancelIo

CancelSynchronousIo

Отмена ожидающих операций ввода-вывода

Функции управления файлами

Синхронный и асинхронный ввод-вывод