/** * 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*/