typedef struct _flowspec {
uint32 TokenRate; /* In Bytes/sec */
uint32 TokenBucketSize; /* In Bytes */
uint32 PeakBandwidth; /* In Bytes/sec */
uint32 Latency; /* In microseconds */
uint32 DelayVariation; /* In microseconds */
SERVICETYPE ServiceType; /* Guaranteed, Predictive, */
/* Best Effort, etc. */
uint32 MaxSduSize /* In Bytes */
uint32 MinimumPolicedSize /* In Bytes */
} FLOWSPEC, *PFLOWSPEC, FAR * LPFLOWSPEC;
typedef struc _QualityOfService {
FLOWSPECSendingFlowspec/*The flowspec for data sending*/
FLOWSPECReceivingFlowspec/*Theflowspec for data receiving*/
WSABUFProviderSpecific/*Additonal Provider*/
} QOS, FAR * LPQOS;
A value of -1 in the members TokenRate and TokenBucketSize indicates that no rate-limiting is in force. The TokenRate is expressed in bytes per second.
If an application has been sending at a low rate for a period of time, it can send a large burst of data all at once until it runs out of credit. Having done so, it must limit itself to sending at TokenRate until its data burst is exhausted.
In video applications, the TokenRate is typically the average bit rate peak to peak. In constant rate applications, the TokenRate is equal to the PeakBandwidth.