Skip to main content

The RIO_RQ typedef specifies a socket descriptor used by send and receive requests with the Winsock registered I/O extensions.

typedef struct RIO_RQ_t* RIO_RQ, **PRIO_RQ;

A data type that specifies a socket descriptor used by send and receive requests.


The Winsock registered I/O extensions operate primarily on a RIO_RQ object rather than a socket. An application obtains a RIO_RQ for an existing socket using the RIOCreateRequestQueue function. The input socket must have been created by calling the WSASocket function with the WSA_FLAG_RIO flag set in the dwFlags parameter.

After obtaining a RIO_RQ object, the underlying socket descriptor remains valid. An application may continue to use the underlying socket to set and query socket options, issue IOCTLs and ultimately close the socket.

Note  For purposes of efficiency, access to the completion queues ( RIO_CQ structs) and request queues (RIO_RQ structs) are not protected by synchronization primitives. If you need to access a completion or request queue from multiple threads, access should be coordinated by a critical section, slim reader write lock or similar mechanism. This locking is not needed for access by a single thread. Different threads can access separate requests/completion queues without locks. The need for synchronization occurs only when multiple threads try to access the same queue. Synchronization is also required if multiple threads issue sends and receives on the same socket because the send and receive operations use the socket’s request queue.

The RIO_RQ typedef is defined in the Mswsockdef.h header file which is automatically included in the Mswsock.h header file. The Mswsockdef.h header file should never be used directly.


Minimum supported client

Windows 8 [desktop apps only]

Minimum supported server

Windows Server 2012 [desktop apps only]


Mswsockdef.h (include Mswsock.h)

See also