LPWSPENUMNETWORKEVENTS 回调函数 (ws2spi.h)

LPWSPEnumNetworkEvents 函数报告所指示套接字的网络事件的发生情况。

语法

LPWSPENUMNETWORKEVENTS Lpwspenumnetworkevents;

int Lpwspenumnetworkevents(
  [in]  SOCKET s,
  [in]  WSAEVENT hEventObject,
  [out] LPWSANETWORKEVENTS lpNetworkEvents,
  [out] LPINT lpErrno
)
{...}

参数

[in] s

标识套接字的描述符。

[in] hEventObject

标识要重置的关联事件对象的可选句柄。

[out] lpNetworkEvents

指向 WSANETWORKEVENTS 结构的指针,该结构填充了发生的网络事件和任何关联的错误代码的记录。 WSANETWORKEVENTS 结构在以下文本中定义。

[out] lpErrno

指向错误代码的指针。

返回值

如果操作成功,则返回值为零。 否则,将返回值SOCKET_ERROR,并且 lpErrno 中提供了特定的错误号。

错误代码 含义
WSAENETDOWN
网络子系统发生故障。
WSAEINVAL
:指示指定参数之一无效。
WSAEINPROGRESS
阻止的 Windows 套接字调用正在进行,或者服务提供商仍在处理回调函数。
WSAENOTSOCK
:描述符不是套接字。

注解

此函数用于报告自上次调用此函数以来,所指示的套接字发生了哪些网络事件。 它旨在与 LPWSPEventSelectLPWSPAsyncSelect 结合使用,后者将事件对象与一个或多个网络事件相关联。 当使用非零 lNetworkEvents 参数调用 LPWSPEventSelectLPWSPAsyncSelect 时,网络事件的录制开始生效,直到对 LPWSPEventSelectLPWSPAsyncSelect 或 LPWSPAsyncSelect 进行相应的调用,并将 lNetworkEvents 参数设置为零。

LPWSPEnumNetworkEvents 仅报告通过 LPWSPEventSelect 指定的网络活动和错误。 请参阅 LPWSPSelectLPWSPAsyncSelect 的说明,了解这些函数如何报告网络活动和错误。

套接字的网络事件内部记录将复制到 lpNetworkEvents 引用的结构,随后会清除内部网络事件记录。 如果 hEventObject 为非 null,则指示的事件对象也会重置。 Windows 套接字提供程序保证复制网络事件记录、清除网络事件记录和重置任何关联事件对象的操作是原子的,因此,指定网络事件的下一次出现将导致事件对象设置为 。 如果此函数返回SOCKET_ERROR,则不会重置关联的事件对象,也不会清除网络事件的记录。

WSANETWORKEVENTS 结构在 WSANETWORKEVENTS 参考页上定义。

WSANETWORKEVENTS 结构的 lNetworkEvents 成员指示发生了哪些FD_XXX网络事件。 iErrorCode 数组用于包含任何关联的错误代码,数组索引对应于 lNetworkEvents 中事件位的位置。 FD_READ_BIT 和 FD_WRITE_BIT 等标识符可用于为 iErrorCode 数组编制索引。

请注意,仅设置与 lNetworkEvents 成员中设置的位对应的 iErrorCode 数组的那些元素。 其他成员不会被修改 (这对于向后兼容 Windows 套接字 2 SPI 客户端非常重要,这些客户端不知道新的FD_ROUTING_INTERFACE_CHANGE和FD_ADDRESS_LIST_CHANGE事件) 。

以下错误代码可以连同相应的网络事件一起返回。

事件:FD_CONNECT

错误代码 含义
WSAEAFNOSUPPORT
指定系列中的地址无法与此套接字一起使用。
WSAECONNREFUSED
尝试连接被强行拒绝。
WSAENETUNREACH
此时不可以从此主机访问该网络。
WSAENOBUFS
未提供任何缓冲区空间。 无法连接套接字。
WSAETIMEDOUT
尝试连接超时,但未建立连接。

事件:FD_CLOSE

错误代码 含义
WSAENETDOWN
网络子系统发生故障。
WSAECONNRESET
:此连接已由远端重置。
WSAECONNABORTED
由于超时或其他故障,连接已终止。

事件:FD_READ、FD_WRITE、FD_OOB、FD_ACCEPT、FD_QOS、FD_GROUP_QOS、FD_ADDRESS_LIST_CHANGE

错误代码 含义
WSAENETDOWN
网络子系统发生故障。

事件:FD_ROUTING_INTERFACE_CHANGE

错误代码 含义
WSAENETUNREACH
指定的目标不再可访问。
WSAENETDOWN
网络子系统发生故障。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 ws2spi.h

另请参阅

LPWSPEventSelect