WSAEnumNetworkEvents
The Windows
Sockets WSAEnumNetworkEvents function discovers occurrences of network
events for the indicated socket.
int WSAEnumNetworkEvents (
SOCKET s, |
|
WSAEVENT hEventObject, |
|
LPWSANETWORKEVENTS lpNetworkEvents |
|
); |
|
Parameters
s
[in] A
descriptor identifying the socket.
hEventObject
[in] An
optional handle identifying an associated event object to be reset.
lpNetworkEvents
[out] A
pointer to a WSANETWORKEVENTS structure which is filled with a record of
occurred network events and any associated error codes.
Remarks
This function
is used to discover which network events have occurred for the indicated socket
since the last invocation of this function. It is intended for use in
conjunction with WSAEventSelect, which associates an event object with
one or more network events. Recording of network events commences when WSAEventSelect
is called with a nonzero lNetworkEvents parameter and remains in effect
until another call is made to WSAEventSelect with the lNetworkEvents
parameter set to zero, or until a call is made to WSAAsyncSelect.
The socket s internal record of network events is copied to the
structure referenced by lpNetworkEvents, whereafter the internal network
events record is cleared. If hEventObject is non-null, the indicated
event object is also reset. The Windows Sockets provider guarantees that the
operations of copying the network event record, clearing it and resetting any
associated event object are atomic, such that the next occurrence of a
nominated network event will cause the event object to become set. In the case
of this function returning SOCKET_ERROR, the associated event object is not
reset and the record of network events is not cleared.
The
WSANETWORKEVENTS structure is defined as follows:
typedef struct _WSANETWORKEVENTS {
long
lNetworkEvents;
int
iErrorCodes[FD_MAX_EVENTS];
} WSANETWORKEVENTS, FAR * LPWSANETWORKEVENTS;
The lNetworkEvents
field of the structure indicates which of the FD_XXX network events have
occurred. The iErrorCodes array is used to contain any associated error
codes, with array index corresponding to the position of event bits in
lNetworkEvents. The identifiers such as FD_READ_BIT and FD_WRITE_BIT can be
used to index the iErrorCodes array.
The following
error codes may be returned along with the respective network event:
Event:
FD_CONNECT
Error
Code |
Meaning |
WSAEADDRINUSE |
The
specified address is already in use. |
WSAEADDRNOTAVAIL |
The
specified address is not available from the local machine. |
WSAEAFNOSUPPORT |
Addresses
in the specified family cannot be used with this socket. |
WSAECONNREFUSED |
The attempt
to connect was forcefully rejected. |
WSAENETUNREACH |
The network
cannot be reached from this host at this time. |
WSAENOBUFS |
No buffer
space is available. The socket cannot be connected. |
WSAETIMEDOUT |
Attempt to
connect timed out without establishing a connection |
Event:
FD_CLOSE
Error
Code |
Meaning |
WSAENETDOWN |
The network
subsystem has failed. |
WSAECONNRESET |
The
connection was reset by the remote side. |
WSAECONNABORTED |
The
connection was terminated due to a time-out or other failure. |
Event:
FD_READ
Event:
FD_WRITE
Event:
FD_OOB
Event:
FD_ACCEPT
Event:
FD_QOS
Event:
FD_GROUP_QOS
Error
Code |
Meaning |
WSAENETDOWN |
The network
subsystem has failed. |
Return Values
The return
value is zero if the operation was successful. Otherwise, the value
SOCKET_ERROR is returned, and a specific error number may be retrieved by
calling WSAGetLastError.
Error Codes
WSANOTINITIALISED |
A
successful WSAStartup must occur before using this function. |
WSAENETDOWN |
The network
subsystem has failed. |
WSAEINVAL |
Indicates
that one of the specified parameters was invalid. |
WSAEINPROGRESS |
A blocking
Windows Sockets 1.1 call is in progress, or the service provider is still
processing a callback function. |
WSAENOTSOCK |
The
descriptor is not a socket. |
See Also