Summary of Socket Ioctl Opcodes

Some of the socket IOCTL opcodes for Windows Sockets 2 are summarized in the following table. More detailed information is in the Winsock reference on Winsock IOCTLs and the WSPIoctl function. There are other new protocol-specific IOCTL opcodes that can be found in the protocol-specific annex.

A complete list of Winsock IOCTLs are available in the Winsock reference.

Opcode Input type Output type Meaning
FIONBIO Unsigned long <Not used> Enables or disables nonblocking mode on the socket.
FIONREAD <Not used> Unsigned long Determines the amount of data that can be read atomically from the socket.
SIOCATMARK <Not used> BOOL Determines whether or not all OOB data has been read.
SIO_ASSOCIATE_HANDLE Companion API dependent <Not used> Associates the socket with the specified handle of a companion interface.
SIO_ENABLE_CIRCULAR_QUEUEING <Not used> <Not used> Enables circular queuing.
SIO_FIND_ROUTE sockaddr structure <Not used> Requests the route to the specified address to be discovered.
SIO_FLUSH <Not used> <Not used> Discards current contents of the sending queue.
SIO_GET_BROADCAST_ADDRESS <Not used> sockaddr structure Retrieves the protocol-specific broadcast address to be used in WSPSendTo.
SIO_GET_QOS <Not used> QOS Retrieves current flow specifications for the socket.
SIO_GET_GROUP_QOS <Not used> QOS Reserved.
SIO_MULTIPOINT_LOOPBACK BOOL <Not used> Controls whether data sent in a multipoint session will also be received by the same socket on the local host.
SIO_MULTICAST_SCOPE int <Not used> Specifies the scope over which multicast transmissions will occur.
SIO_SET_QOS QOS <Not used> Establishes new flow specifications for the socket.
SIO_SET_GROUP_QOS QOS <Not used> Reserved.
SIO_TRANSLATE_HANDLE int Companion-API dependent Obtains a corresponding handle for socket s that is valid in the context of a companion interface.
SIO_ROUTING_INTERFACE_QUERY sockaddr sockaddr Obtains the address of the local interface that should be used to send to the specified address.
SIO_ROUTING_INTERFACE_CHANGE sockaddr <Not used> Requests notification of changes in information reported through SIO_ROUTING_INTERFACE_QUERY for the specified address.
SIO_ADDRESS_LIST_QUERY <Not used> SOCKET_ADDRESS Obtains a list of local transport addresses of the socket's protocol family to which the application can bind. The list of addresses varies based on address family and some addresses are excluded from the list.
SIO_ADDRESS_LIST_CHANGE <Not used> <Not used> Requests notification of changes in information reported through SIO_ADDRESS_LIST_QUERY
SIO_QUERY_PNP_TARGET_HANDLE <Not used> SOCKET Obtains socket descriptor of the next provider in the chain on which current socket depends in regards to PnP.

Winsock IOCTLs

WSPIoctl