qos2.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef _INC_QOS2
  7. #define _INC_QOS2
  8. #if (_WIN32_WINNT >= 0x0600)
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. typedef enum _QOS_SHAPING {
  13. QOSShapeOnly = 0,
  14. QOSShapeAndMark = 1,
  15. QOSUseNonConformantMarkings = 2
  16. } QOS_SHAPING, *PQOS_SHAPING;
  17. typedef enum _QOS_FLOWRATE_REASON {
  18. QOSFlowRateNotApplicable = 0,
  19. QOSFlowRateContentChange = 1,
  20. QOSFlowRateCongestion = 2,
  21. QOSFlowRateHigherContentEncoding = 3,
  22. QOSFlowRateUserCaused = 4
  23. } QOS_FLOWRATE_REASON, PQOS_FLOWRATE_REASON;
  24. typedef enum _QOS_NOTIFY_FLOW {
  25. QOSNotifyCongested = 0,
  26. QOSNotifyUncongested = 1,
  27. QOSNotifyAvailable = 2
  28. } QOS_NOTIFY_FLOW, *PQOS_NOTIFY_FLOW;
  29. typedef enum _QOS_QUERY_FLOW {
  30. QOSQueryFlowFundamentals = 0,
  31. QOSQueryPacketPriority = 1,
  32. QOSQueryOutgoingRate = 2
  33. } QOS_QUERY_FLOW;
  34. typedef enum _QOS_SET_FLOW {
  35. QOSSetTrafficType = 0,
  36. QOSSetOutgoingRate = 1,
  37. QOSSetOutgoingDSCPValue = 2
  38. } QOS_SET_FLOW, *PQOS_SET_FLOW;
  39. typedef enum _QOS_TRAFFIC_TYPE {
  40. QOSTrafficTypeBestEffort,
  41. QOSTrafficTypeBackground,
  42. QOSTrafficTypeExcellentEffort,
  43. QOSTrafficTypeAudioVideo,
  44. QOSTrafficTypeVoice,
  45. QOSTrafficTypeControl
  46. } QOS_TRAFFIC_TYPE, *PQOS_TRAFFIC_TYPE;
  47. typedef struct _QOS_FLOW_FUNDAMENTALS {
  48. BOOL BottleneckBandwidthSet;
  49. UINT64 BottleneckBandwidth;
  50. BOOL AvailableBandwidthSet;
  51. UINT64 AvailableBandwidth;
  52. BOOL RTTSet;
  53. UINT32 RTT;
  54. } QOS_FLOW_FUNDAMENTALS, *PQOS_FLOW_FUNDAMENTALS;
  55. typedef struct _QOS_FLOWRATE_OUTGOING {
  56. UINT64 Bandwidth;
  57. QOS_SHAPING ShapingBehavior;
  58. QOS_FLOWRATE_REASON Reason;
  59. } QOS_FLOWRATE_OUTGOING, *PQOS_FLOWRATE_OUTGOING;
  60. typedef struct _QOS_PACKET_PRIORITY {
  61. ULONG ConformantDSCPValue;
  62. ULONG NonConformantDSCPValue;
  63. ULONG ConformantL2Value;
  64. ULONG NonConformantL2Value;
  65. } QOS_PACKET_PRIORITY, *PQOS_PACKET_PRIORITY;
  66. typedef struct _QOS_VERSION {
  67. USHORT MajorVersion;
  68. USHORT MinorVersion;
  69. } QOS_VERSION, *PQOS_VERSION;
  70. WINBOOL WINAPI QOSAddSocketToFlow(
  71. HANDLE QOSHandle,
  72. SOCKET Socket,
  73. PSOCKADDR DestAddr,
  74. QOS_TRAFFIC_TYPE TrafficType,
  75. DWORD Flags,
  76. PQOS_FLOWID FlowId
  77. );
  78. WINBOOL WINAPI QOSCancel(
  79. HANDLE QOSHandle,
  80. LPOVERLAPPED Overlapped
  81. );
  82. WINBOOL WINAPI QOSCloseHandle(
  83. HANDLE QOSHandle
  84. );
  85. WINBOOL WINAPI QOSCreateHandle(
  86. PQOS_VERSION Version,
  87. PHANDLE QOSHandle
  88. );
  89. WINBOOL WINAPI QOSEnumerateFlows(
  90. HANDLE QOSHandle,
  91. PULONG Size,
  92. PVOID Buffer
  93. );
  94. WINBOOL WINAPI QOSNotifyFlow(
  95. HANDLE QOSHandle,
  96. QOS_FLOWID FlowId,
  97. QOS_NOTIFY_FLOW Operation,
  98. PULONG Size,
  99. PVOID Buffer,
  100. DWORD Flags,
  101. LPOVERLAPPED Overlapped
  102. );
  103. WINBOOL WINAPI QOSQueryFlow(
  104. HANDLE QOSHandle,
  105. QOS_FLOWID FlowId,
  106. QOS_QUERY_FLOW Operation,
  107. PULONG Size,
  108. PVOID Buffer,
  109. DWORD Flags,
  110. LPOVERLAPPED Overlapped
  111. );
  112. WINBOOL WINAPI QOSRemoveSocketFromFlow(
  113. HANDLE QOSHandle,
  114. SOCKET Socket,
  115. QOS_FLOWID FlowId,
  116. DWORD Flags
  117. );
  118. #define QOSSetTrafficType 0
  119. #define QOSSetOutgoingRate 1
  120. #define QOSSetOutgoingDSCPValue 2
  121. typedef UINT32 QOS_FLOWID;
  122. WINBOOL WINAPI QOSSetFlow(
  123. HANDLE QOSHandle,
  124. QOS_FLOWID FlowId,
  125. QOS_SET_FLOW Operation,
  126. ULONG Size,
  127. PVOID Buffer,
  128. DWORD Flags,
  129. LPOVERLAPPED Overlapped
  130. );
  131. WINBOOL WINAPI QOSStartTrackingClient(
  132. HANDLE QOSHandle,
  133. PSOCKADDR DestAddr,
  134. DWORD Flags
  135. );
  136. WINBOOL WINAPI QOSStopTrackingClient(
  137. HANDLE QOSHandle,
  138. PSOCKADDR DestAddr,
  139. DWORD Flags
  140. );
  141. #ifdef __cplusplus
  142. }
  143. #endif
  144. #endif /*(_WIN32_WINNT >= 0x0600)*/
  145. #endif /*_INC_QOS2*/