|
|
|
| 1 |
|
/*++ |
| 2 |
|
|
| 3 |
|
Copyright (c) 2004 Microsoft Corporation |
| 4 |
|
|
| 5 |
|
Module Name: |
| 6 |
|
|
| 7 |
|
qos2.h |
| 8 |
|
|
| 9 |
|
Abstract: |
| 10 |
|
|
| 11 |
|
This module contains QOS structures and function headers |
| 12 |
|
|
| 13 |
|
--*/ |
| 14 |
|
|
| 15 |
|
#pragma once |
| 16 |
|
|
| 17 |
|
#include <ws2tcpip.h> |
| 18 |
|
#include <mstcpip.h> |
| 19 |
|
|
| 20 |
|
// |
| 21 |
|
// Support calls from C++ |
| 22 |
|
// |
| 23 |
|
#if defined(__cplusplus) |
| 24 |
|
#define ExternC extern "C" |
| 25 |
|
#else |
| 26 |
|
#define ExternC |
| 27 |
|
#endif |
| 28 |
|
|
| 29 |
|
// |
| 30 |
|
// Each admitted flow has a unique Flow ID. This ID is valid only |
| 31 |
|
// in the process which called QOSAddSocketToFlow() for that flow |
| 32 |
|
// with the handle returned from QOSCreateHandle |
| 33 |
|
// |
| 34 |
|
typedef ULONG QOS_FLOWID, *PQOS_FLOWID; |
| 35 |
|
|
| 36 |
|
// |
| 37 |
|
// Definitions of various traffic types. Application identifies |
| 38 |
|
// each flow as being of a certain type. This enables the QOS |
| 39 |
|
// subsystem to apply user-specified per-type policies to flows |
| 40 |
|
// |
| 41 |
|
// QOSTrafficTypeBestEffort: |
| 42 |
|
// |
| 43 |
|
// This service type requests the same network priority to the traffic |
| 44 |
|
// as regular traffic not associated to the qWave api. For home scenarios, |
| 45 |
|
// this is DLNA class DLNAQOS_1. |
| 46 |
|
// |
| 47 |
|
// QOSTrafficTypeBackground: |
| 48 |
|
// |
| 49 |
|
// This service type requests a network priority to the traffic lower than |
| 50 |
|
// traffic of type QOSTrafficTypeBestEffort. For example, this service |
| 51 |
|
// could be used for traffic of applications doing data backups. For home |
| 52 |
|
// scenarios, this is DLNA class DLNAQOS_0. |
| 53 |
|
// |
| 54 |
|
// QOSTrafficTypeExcellentEffort: |
| 55 |
|
// |
| 56 |
|
// This service type requests a network priority to the traffic higher than |
| 57 |
|
// QOSTrafficTypeBestEffort. This service type should be used for data |
| 58 |
|
// traffic that, although not A/V, is more important than normal end-user |
| 59 |
|
// scenarios. For example, email traffic. This service type is not part of |
| 60 |
|
// the DLNA specification. |
| 61 |
|
// |
| 62 |
|
// QOSTrafficTypeAudioVideo: |
| 63 |
|
// |
| 64 |
|
// This service type should be used for A/V streaming scenarios such as |
| 65 |
|
// MPEG2 streaming. For home scenarios, this is DLNA class DLNAQOS_2. |
| 66 |
|
// |
| 67 |
|
// QOSTrafficTypeVoice: |
| 68 |
|
// |
| 69 |
|
// This service type should be used for realtime voice streams such as |
| 70 |
|
// VoIP. This service type is not part of the DLNA specification. |
| 71 |
|
// |
| 72 |
|
// QOSTrafficTypeControl: |
| 73 |
|
// |
| 74 |
|
// This service type should only be used for the most critical data. For |
| 75 |
|
// example, you might use it for data carrying user inputs to an A/V |
| 76 |
|
// experience, e.g. play, pause, FF, RW, etc. The A/V traffic however |
| 1211 |
|
__inout_opt PULONG Size, |
| 1212 |
|
__inout_bcount_opt(*Size) PVOID Buffer, |
| 1213 |
|
__reserved DWORD Flags, |
| 1214 |
|
__out_opt LPOVERLAPPED Overlapped |
| 1215 |
|
); |
| 1216 |
|
|
| 1217 |
|
// |
| 1218 |
|
// Description: |
| 1219 |
|
// |
| 1220 |
|
// API to cancel a pending operation like QOSSetFlow. |
| 1221 |
|
// |
| 1222 |
|
// Closing a QOSHandle will automatically abort all pending |
| 1223 |
|
// operations issued on that QOSHandle. If the handle is closed while |
| 1224 |
|
// a QOSCancel call is still in progress, the call will complete |
| 1225 |
|
// with ERROR_OPERATION_ABORTED. |
| 1226 |
|
// |
| 1227 |
|
// Arguments: |
| 1228 |
|
// |
| 1229 |
|
// .QOSHandle - Handle to the QOS subsystem obtained through |
| 1230 |
|
// QOSCreateHandle. |
| 1231 |
|
// |
| 1232 |
|
// .Overlapped - Pointer to an OVERLAPPED structure. This is the |
| 1233 |
|
// OVERLAPPED structure used in the original operation. |
| 1234 |
|
// |
| 1235 |
|
// Note: |
| 1236 |
|
// |
| 1237 |
|
// The QOSCancel call must be made in the same process from |
| 1238 |
|
// which the original to-be-cancelled call was made. |
| 1239 |
|
// |
| 1240 |
|
// Return Values: |
| 1241 |
|
// |
| 1242 |
|
// If the function can successfully initiate cancellation of the specified |
| 1243 |
|
// operation, the return value is nonzero. The cancelled operation completes |
| 1244 |
|
// via its completion mechanism and indicates ERROR_OPERATION_ABORTED as the |
| 1245 |
|
// completion code. |
| 1246 |
|
// |
| 1247 |
|
// If the function fails, the return value is zero. To get extended error |
| 1248 |
|
// information, call GetLastError. |
| 1249 |
|
// |
| 1250 |
|
ExternC |
| 1251 |
|
BOOL |
| 1252 |
|
WINAPI |
| 1253 |
|
QOSCancel( |
| 1254 |
|
__in HANDLE QOSHandle, |
| 1255 |
|
__in LPOVERLAPPED Overlapped |
| 1256 |
|
); |
| 1257 |
|
|
| 1258 |
|
|
| 1259 |
|
|
|
|
|