xref: /reactos/sdk/include/psdk/qos.h (revision 34593d93)
1*c2c66affSColin Finck #pragma once
2*c2c66affSColin Finck 
3*c2c66affSColin Finck #ifdef __cplusplus
4*c2c66affSColin Finck extern "C" {
5*c2c66affSColin Finck #endif
6*c2c66affSColin Finck 
7*c2c66affSColin Finck typedef ULONG SERVICETYPE;
8*c2c66affSColin Finck 
9*c2c66affSColin Finck #define SERVICETYPE_NOTRAFFIC               0x00000000
10*c2c66affSColin Finck #define SERVICETYPE_BESTEFFORT              0x00000001
11*c2c66affSColin Finck #define SERVICETYPE_CONTROLLEDLOAD          0x00000002
12*c2c66affSColin Finck #define SERVICETYPE_GUARANTEED              0x00000003
13*c2c66affSColin Finck #define SERVICETYPE_NETWORK_UNAVAILABLE     0x00000004
14*c2c66affSColin Finck #define SERVICETYPE_GENERAL_INFORMATION     0x00000005
15*c2c66affSColin Finck #define SERVICETYPE_NOCHANGE                0x00000006
16*c2c66affSColin Finck #define SERVICETYPE_NONCONFORMING           0x00000009
17*c2c66affSColin Finck #define SERVICETYPE_NETWORK_CONTROL         0x0000000A
18*c2c66affSColin Finck #define SERVICETYPE_QUALITATIVE             0x0000000D
19*c2c66affSColin Finck 
20*c2c66affSColin Finck #define SERVICE_BESTEFFORT                  0x80010000
21*c2c66affSColin Finck #define SERVICE_CONTROLLEDLOAD              0x80020000
22*c2c66affSColin Finck #define SERVICE_GUARANTEED                  0x80040000
23*c2c66affSColin Finck #define SERVICE_QUALITATIVE                 0x80200000
24*c2c66affSColin Finck 
25*c2c66affSColin Finck #define SERVICE_NO_TRAFFIC_CONTROL          0x81000000
26*c2c66affSColin Finck 
27*c2c66affSColin Finck #define SERVICE_NO_QOS_SIGNALING            0x40000000
28*c2c66affSColin Finck 
29*c2c66affSColin Finck #define QOS_NOT_SPECIFIED                   0xFFFFFFFF
30*c2c66affSColin Finck 
31*c2c66affSColin Finck #define POSITIVE_INFINITY_RATE              0xFFFFFFFE
32*c2c66affSColin Finck 
33*c2c66affSColin Finck #define QOS_GENERAL_ID_BASE                 2000
34*c2c66affSColin Finck 
35*c2c66affSColin Finck #define QOS_OBJECT_END_OF_LIST              (0x00000001 + QOS_GENERAL_ID_BASE)
36*c2c66affSColin Finck #define   QOS_OBJECT_SD_MODE                (0x00000002 + QOS_GENERAL_ID_BASE)
37*c2c66affSColin Finck #define   QOS_OBJECT_SHAPING_RATE           (0x00000003 + QOS_GENERAL_ID_BASE)
38*c2c66affSColin Finck #define   QOS_OBJECT_DESTADDR               (0x00000004 + QOS_GENERAL_ID_BASE)
39*c2c66affSColin Finck 
40*c2c66affSColin Finck #define TC_NONCONF_BORROW                   0
41*c2c66affSColin Finck #define TC_NONCONF_SHAPE                    1
42*c2c66affSColin Finck #define TC_NONCONF_DISCARD                  2
43*c2c66affSColin Finck #define TC_NONCONF_BORROW_PLUS              3
44*c2c66affSColin Finck 
45*c2c66affSColin Finck typedef struct _flowspec {
46*c2c66affSColin Finck   ULONG TokenRate;
47*c2c66affSColin Finck   ULONG TokenBucketSize;
48*c2c66affSColin Finck   ULONG PeakBandwidth;
49*c2c66affSColin Finck   ULONG Latency;
50*c2c66affSColin Finck   ULONG DelayVariation;
51*c2c66affSColin Finck   SERVICETYPE ServiceType;
52*c2c66affSColin Finck   ULONG MaxSduSize;
53*c2c66affSColin Finck   ULONG MinimumPolicedSize;
54*c2c66affSColin Finck } FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC;
55*c2c66affSColin Finck 
56*c2c66affSColin Finck typedef struct _QOS_OBJECT_HDR {
57*c2c66affSColin Finck   ULONG ObjectType;
58*c2c66affSColin Finck   ULONG ObjectLength;
59*c2c66affSColin Finck } QOS_OBJECT_HDR, *LPQOS_OBJECT_HDR;
60*c2c66affSColin Finck 
61*c2c66affSColin Finck typedef struct _QOS_SD_MODE {
62*c2c66affSColin Finck   QOS_OBJECT_HDR ObjectHdr;
63*c2c66affSColin Finck   ULONG ShapeDiscardMode;
64*c2c66affSColin Finck } QOS_SD_MODE, *LPQOS_SD_MODE;
65*c2c66affSColin Finck 
66*c2c66affSColin Finck typedef struct _QOS_SHAPING_RATE {
67*c2c66affSColin Finck   QOS_OBJECT_HDR ObjectHdr;
68*c2c66affSColin Finck   ULONG ShapingRate;
69*c2c66affSColin Finck } QOS_SHAPING_RATE, *LPQOS_SHAPING_RATE;
70*c2c66affSColin Finck 
71*c2c66affSColin Finck #ifdef __cplusplus
72*c2c66affSColin Finck }
73*c2c66affSColin Finck #endif
74