| /** |
| * 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) |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef enum _QOS_SHAPING { |
| QOSShapeOnly = 0, |
| QOSShapeAndMark = 1, |
| QOSUseNonConformantMarkings = 2 |
| } QOS_SHAPING, *PQOS_SHAPING; |
| |
| 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; |
| |
| 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 |
| ); |
| |
| #define QOSSetTrafficType 0 |
| #define QOSSetOutgoingRate 1 |
| #define QOSSetOutgoingDSCPValue 2 |
| |
| typedef UINT32 QOS_FLOWID; |
| |
| 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*/ |