Platform SDK: Quality of Service

Using Overlapped WSAIoctl(SIO_GET_QOS)

Applications can register their interest in FD_QOS events by issuing an overlapped WSAIoctl(SIO_GET_QOS) function call. When an application takes this approach, an FD_QOS event invokes the completion function specified in the CompletionRoutine parameter of the WSAIoctl function call, and the updated QOS structure is made available in its output buffer. With this approach, the application could be developed to use CompletionRoutine to act on the contents of the output buffer. The WSAIoctl(SIO_GET_QOS) function request completes with QOS information that corresponds only to one direction (either the SendingFlowspec or the ReceivingFlowspec is valid, but not both). The FLOWSPEC that is invalid has its ServiceType value set to SERVICETYPE_NOCHANGE.

Note  Sending applications cannot call SIO_GET_QOS until a connection has completed. However, a receiving application can call SIO_GET_QOS as soon as it is bound. When using overlapped WSAIoctl(SIO_GET_QOS) to monitor FD_QOS events, the RSVP SP also passes an RSVP_STATUS_INFO object in the ProviderSpecific buffer of the updated QOS structure. This enables applications to obtain extended status information about the FD_QOS event.

Note  If the output buffer associated with the WSAIoctl function call is not sufficiently sized to contain the full QOS structure and the RSVP_STATUS_INFO object that is included in its ProviderSpecific buffer, the application will get WSA_ENOBUFS and can reissue the query. The required size is returned as an unsigned integer at the beginning of the output buffer.