dinput: Avoid deadlock when CS are acquired in different order.
[wine.git] / include / qos2.h
blobac486f71fd3469e8d45c16353499b92a85821a5e
1 /*
2 * Copyright 2018 Gijs Vermeulen
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef __WINE_QOS2_H__
20 #define __WINE_QOS2_H__
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
26 typedef UINT32 QOS_FLOWID;
28 typedef enum _QOS_SHAPING {
29 QOSShapeOnly,
30 QOSShapeAndMark,
31 QOSUseNonConformantMarkings
32 } QOS_SHAPING, *PQOS_SHAPING;
34 typedef enum _QOS_FLOWRATE_REASON {
35 QOSFlowRateNotApplicable,
36 QOSFlowRateContentChange,
37 QOSFlowRateCongestion,
38 QOSFlowRateHigherContentEncoding,
39 QOSFlowRateUserCaused
40 } QOS_FLOWRATE_REASON, PQOS_FLOWRATE_REASON;
42 typedef enum _QOS_NOTIFY_FLOW {
43 QOSNotifyCongested,
44 QOSNotifyUncongested,
45 QOSNotifyAvailable
46 } QOS_NOTIFY_FLOW, *PQOS_NOTIFY_FLOW;
48 typedef enum _QOS_QUERY_FLOW {
49 QOSQueryFlowFundamentals,
50 QOSQueryPacketPriority,
51 QOSQueryOutgoingRate
52 } QOS_QUERY_FLOW;
54 typedef enum _QOS_SET_FLOW {
55 QOSSetTrafficType,
56 QOSSetOutgoingRate,
57 QOSSetOutgoingDSCPValue
58 } QOS_SET_FLOW, *PQOS_SET_FLOW;
60 typedef enum _QOS_TRAFFIC_TYPE {
61 QOSTrafficTypeBestEffort,
62 QOSTrafficTypeBackground,
63 QOSTrafficTypeExcellentEffort,
64 QOSTrafficTypeAudioVideo,
65 QOSTrafficTypeVoice,
66 QOSTrafficTypeControl
67 } QOS_TRAFFIC_TYPE, *PQOS_TRAFFIC_TYPE;
69 typedef struct _QOS_FLOW_FUNDAMENTALS {
70 BOOL BottleneckBandwidthSet;
71 UINT64 BottleneckBandwidth;
72 BOOL AvailableBandwidthSet;
73 UINT64 AvailableBandwidth;
74 BOOL RTTSet;
75 UINT32 RTT;
76 } QOS_FLOW_FUNDAMENTALS, *PQOS_FLOW_FUNDAMENTALS;
78 typedef struct _QOS_FLOWRATE_OUTGOING {
79 UINT64 Bandwidth;
80 QOS_SHAPING ShapingBehavior;
81 QOS_FLOWRATE_REASON Reason;
82 } QOS_FLOWRATE_OUTGOING, *PQOS_FLOWRATE_OUTGOING;
84 typedef struct _QOS_PACKET_PRIORITY {
85 ULONG ConformantDSCPValue;
86 ULONG NonConformantDSCPValue;
87 ULONG ConformantL2Value;
88 ULONG NonConformantL2Value;
89 } QOS_PACKET_PRIORITY, *PQOS_PACKET_PRIORITY;
91 typedef struct _QOS_VERSION {
92 USHORT MajorVersion;
93 USHORT MinorVersion;
94 } QOS_VERSION, *PQOS_VERSION;
96 #ifdef __cplusplus
98 #endif
100 #endif /* __WINE_QOS2_H__ */