WSACancelAsyncRequest()

王朝百科·作者佚名  2010-01-05  
宽屏版  字体: |||超大  

简述:

取消一次未完成的异步操作.

#include <winsock.h>

int PASCAL FAR WSACancelAsyncRequest(HANDLE hAsyncTackHandle);

hAsyncTaskHandle 指明要取消的异步操作.

注释:

WSACancelAsyncRequest()函数用于取消一次异步操作,该异步操作应是以一个WSAAsyncGetXByY()函数(诸如WSAAsyncGetHostByName())启动的.hAsyncTaskHandle参数标识了要取消的操作,它应由初始函数作为异步任务句柄返回.

返回值:

0 异步操作成功地被取消.

SOCKET_ERROR 其它情况.(同时可通过调用WSAGetLastError()获得错误代码)

评论:

试图取消一个已存在的异步操作WSAAsyncGetXByY()可能失败(错误代码WSAEALREADY),原

因有二:首先,原来的操作已经完成,并且应用程序已经处理了结果消息。其次,原始操作已经完成,但结果消息仍在应用程序窗口队列中等待。

关于Windows Sockets提供者的说明:

应用程序是否能有效地区分WSAEINVAL和WSAEALREADY是不清楚的,因为在这两种情况下,错误代码指出不存在指定句柄的异步操作在运行。(小例外:0总是非法的异步任务句柄。)Windows Sockets规格说明不会规定一个Windows Sockets实现怎样区分这两种情况。最大可能的情况是,Windows Sockets应用程序应将两种错误视为相同。

错误代码:

WSANOTINITIALISED 在使用本API前必须进行一次成功的WSAStartup()调用.

WSAENETDOWN WINDOWS SOCKETS实现已检测到网络子系统故障.

WSAEINVAL 指出指定的参数之一是非法的.

WSAEINPROGRESS 一个阻塞的Windows Sockets操作正在进行.

WSAEALREADY 被废除的异步调用已经完成.

参见:

WSAAsyncGetHostByAddr(), WSAAsyncGetHostByName(),WSAAsyncGetProtoByNumber(),WSAAsyncGetProtoByName(), WSAAsyncGetHostByName(),WSAAsyncGetServByPort(),WSAAsyncGetServByName().

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有