Функция WSACancelAsyncRequest (winsock.h)

Функция WSACancelAsyncRequest отменяет незавершенную асинхронную операцию.

Синтаксис

int WSACancelAsyncRequest(
  [in] HANDLE hAsyncTaskHandle
);

Параметры

[in] hAsyncTaskHandle

Дескриптор, указывающий асинхронную операцию, которую необходимо отменить.

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

Значение, возвращаемое WSACancelAsyncRequest , равно нулю, если операция была успешно отменена. В противном случае возвращается значение SOCKET_ERROR, а определенный номер ошибки можно получить, вызвав WSAGetLastError.

Код ошибки Значение
WSANOTINITIALISED
Перед использованием этой функции должен быть выполнен успешный вызов WSAStartup .
WSAENETDOWN
Произошел сбой сетевой подсистемы.
WSAEINVAL
Указывает, что указанный дескриптор асинхронной задачи был недопустимым.
WSAEINPROGRESS
Выполняется блокирующий вызов Windows Sockets 1.1 или поставщик услуг по-прежнему обрабатывает функцию обратного вызова.
WSAEALREADY
Отменяемая асинхронная подпрограмма уже завершена.
 
Примечание Неясно, может ли приложение эффективно различать WSAEINVAL и WSAEALREADY, так как в обоих случаях ошибка указывает на отсутствие асинхронной операции с указанным дескриптором. (Тривиальное исключение: ноль всегда является недопустимым дескриптором асинхронной задачи.) Спецификация сокетов Windows не предписывает, как соответствующий поставщик сокетов Windows должен различать эти два случая. Для максимальной переносимости приложение Windows Sockets должно рассматривать две ошибки как эквивалентные.
 

Комментарии

Функция WSACancelAsyncRequest используется для отмены асинхронной операции, инициированной одной из функций WSAsyncGetXByY , таких как WSAsyncGetHostByName. Операция, которую необходимо отменить, определяется параметром hAsyncTaskHandle , который должен быть задан для дескриптора асинхронной задачи, возвращаемого инициирующей функцией WSAsyncGetXByY .

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

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winsock.h (включая Winsock2.h)
Библиотека Ws2_32.lib
DLL Ws2_32.dll

См. также раздел

WSAsyncGetHostByAddr

WSAsyncGetHostByName

WSAsyncGetProtoByName

WSAsyncGetProtoByNumber

WSAsyncGetServByName

WSAsyncGetServByPort

Функции Winsock

Справочник по Winsock