| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the mingw-w64 runtime package. | |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. | |
| */ | |
| #ifndef _INC_QOS2 | |
| #define _INC_QOS2 | |
| #if (_WIN32_WINNT >= 0x0600) | |
| #include <ws2tcpip.h> | |
| #include <mstcpip.h> | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| typedef ULONG QOS_FLOWID, *PQOS_FLOWID; | |
| typedef enum _QOS_SHAPING { | |
| QOSShapeOnly = 0, | |
| QOSShapeAndMark = 1, | |
| QOSUseNonConformantMarkings = 2 | |
| } QOS_SHAPING, *PQOS_SHAPING; | |
| #define QOS_OUTGOING_DEFAULT_MINIMUM_BANDWIDTH 0xffffffff | |
| typedef enum _QOS_FLOWRATE_REASON { | |
| QOSFlowRateNotApplicable = 0, | |
| QOSFlowRateContentChange = 1, | |
| QOSFlowRateCongestion = 2, | |
| QOSFlowRateHigherContentEncoding = 3, | |
| QOSFlowRateUserCaused = 4 | |
| } QOS_FLOWRATE_REASON, *PQOS_FLOWRATE_REASON; | |
| typedef enum _QOS_NOTIFY_FLOW { | |
| QOSNotifyCongested = 0, | |
| QOSNotifyUncongested = 1, | |
| QOSNotifyAvailable = 2 | |
| } QOS_NOTIFY_FLOW, *PQOS_NOTIFY_FLOW; | |
| typedef enum _QOS_QUERY_FLOW { | |
| QOSQueryFlowFundamentals = 0, | |
| QOSQueryPacketPriority = 1, | |
| QOSQueryOutgoingRate = 2 | |
| } QOS_QUERY_FLOW; | |
| typedef enum _QOS_SET_FLOW { | |
| QOSSetTrafficType = 0, | |
| QOSSetOutgoingRate = 1, | |
| QOSSetOutgoingDSCPValue = 2 | |
| } QOS_SET_FLOW, *PQOS_SET_FLOW; | |
| typedef enum _QOS_TRAFFIC_TYPE { | |
| QOSTrafficTypeBestEffort, | |
| QOSTrafficTypeBackground, | |
| QOSTrafficTypeExcellentEffort, | |
| QOSTrafficTypeAudioVideo, | |
| QOSTrafficTypeVoice, | |
| QOSTrafficTypeControl | |
| } QOS_TRAFFIC_TYPE, *PQOS_TRAFFIC_TYPE; | |
| typedef struct _QOS_FLOW_FUNDAMENTALS { | |
| BOOL BottleneckBandwidthSet; | |
| UINT64 BottleneckBandwidth; | |
| BOOL AvailableBandwidthSet; | |
| UINT64 AvailableBandwidth; | |
| BOOL RTTSet; | |
| UINT32 RTT; | |
| } QOS_FLOW_FUNDAMENTALS, *PQOS_FLOW_FUNDAMENTALS; | |
| typedef struct _QOS_FLOWRATE_OUTGOING { | |
| UINT64 Bandwidth; | |
| QOS_SHAPING ShapingBehavior; | |
| QOS_FLOWRATE_REASON Reason; | |
| } QOS_FLOWRATE_OUTGOING, *PQOS_FLOWRATE_OUTGOING; | |
| typedef struct _QOS_PACKET_PRIORITY { | |
| ULONG ConformantDSCPValue; | |
| ULONG NonConformantDSCPValue; | |
| ULONG ConformantL2Value; | |
| ULONG NonConformantL2Value; | |
| } QOS_PACKET_PRIORITY, *PQOS_PACKET_PRIORITY; | |
| typedef struct _QOS_VERSION { | |
| USHORT MajorVersion; | |
| USHORT MinorVersion; | |
| } QOS_VERSION, *PQOS_VERSION; | |
| #define QOS_QUERYFLOW_FRESH 0x00000001 | |
| #define QOS_NON_ADAPTIVE_FLOW 0x00000002 | |
| WINBOOL WINAPI QOSAddSocketToFlow( | |
| HANDLE QOSHandle, | |
| SOCKET Socket, | |
| PSOCKADDR DestAddr, | |
| QOS_TRAFFIC_TYPE TrafficType, | |
| DWORD Flags, | |
| PQOS_FLOWID FlowId | |
| ); | |
| WINBOOL WINAPI QOSCancel( | |
| HANDLE QOSHandle, | |
| LPOVERLAPPED Overlapped | |
| ); | |
| WINBOOL WINAPI QOSCloseHandle( | |
| HANDLE QOSHandle | |
| ); | |
| WINBOOL WINAPI QOSCreateHandle( | |
| PQOS_VERSION Version, | |
| PHANDLE QOSHandle | |
| ); | |
| WINBOOL WINAPI QOSEnumerateFlows( | |
| HANDLE QOSHandle, | |
| PULONG Size, | |
| PVOID Buffer | |
| ); | |
| WINBOOL WINAPI QOSNotifyFlow( | |
| HANDLE QOSHandle, | |
| QOS_FLOWID FlowId, | |
| QOS_NOTIFY_FLOW Operation, | |
| PULONG Size, | |
| PVOID Buffer, | |
| DWORD Flags, | |
| LPOVERLAPPED Overlapped | |
| ); | |
| WINBOOL WINAPI QOSQueryFlow( | |
| HANDLE QOSHandle, | |
| QOS_FLOWID FlowId, | |
| QOS_QUERY_FLOW Operation, | |
| PULONG Size, | |
| PVOID Buffer, | |
| DWORD Flags, | |
| LPOVERLAPPED Overlapped | |
| ); | |
| WINBOOL WINAPI QOSRemoveSocketFromFlow( | |
| HANDLE QOSHandle, | |
| SOCKET Socket, | |
| QOS_FLOWID FlowId, | |
| DWORD Flags | |
| ); | |
| WINBOOL WINAPI QOSSetFlow( | |
| HANDLE QOSHandle, | |
| QOS_FLOWID FlowId, | |
| QOS_SET_FLOW Operation, | |
| ULONG Size, | |
| PVOID Buffer, | |
| DWORD Flags, | |
| LPOVERLAPPED Overlapped | |
| ); | |
| WINBOOL WINAPI QOSStartTrackingClient( | |
| HANDLE QOSHandle, | |
| PSOCKADDR DestAddr, | |
| DWORD Flags | |
| ); | |
| WINBOOL WINAPI QOSStopTrackingClient( | |
| HANDLE QOSHandle, | |
| PSOCKADDR DestAddr, | |
| DWORD Flags | |
| ); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /*(_WIN32_WINNT >= 0x0600)*/ | |
| #endif /*_INC_QOS2*/ |