QOSNotifyFlow 函数 (qos2.h)
QOSNotifyFlow 函数注册调用应用程序,以接收有关网络特征更改(如拥塞)的通知。 当能够达到所需的吞吐量时,也可以发送通知。
语法
ExternC BOOL QOSNotifyFlow(
[in] HANDLE QOSHandle,
[in] QOS_FLOWID FlowId,
[in] QOS_NOTIFY_FLOW Operation,
[in, out, optional] PULONG Size,
[in, out] PVOID Buffer,
DWORD Flags,
[out, optional] LPOVERLAPPED Overlapped
);
参数
[in] QOSHandle
QOSCreateHandle 返回的 QOS 子系统的句柄。
[in] FlowId
指定应用程序希望从中接收通知的流标识符。 QOS_FLOWID是无符号 32 位整数。
[in] Operation
一个QOS_NOTIFY_FLOW值,该值指示所请求的通知的类型。
[in, out, optional] Size
指示 Buffer 参数的大小(以字节为单位)。
函数返回时,如果成功,此参数将指定复制到 Buffer 中的字节数。
如果此调用失败并 ERROR_INSUFFICIENT_BUFFER,则此参数将指示成功完成此操作所需的最小 缓冲区 大小。
[in, out] Buffer
指向 UINT64 的指针,该 UINT64 指示发送通知的带宽。 仅当 Operation 参数设置为 QOSNotifyAvailable 时,才使用此参数。 对于 QOSNotifyCongested 和 QOSNotifyUncongested 选项,此参数必须在输入时设置为 NULL 。
Flags
保留供将来使用。 此参数必须设置为 0。
[out, optional] Overlapped
指向用于异步输出的 OVERLAPPED 结构的指针。 如果未异步调用此函数,则此函数必须设置为 NULL 。
返回值
如果函数成功,则当满足 Operation 参数设置的条件时,将发送非零的返回值。
如果函数失败,返回值为 0。 要获得更多的错误信息,请调用 GetLastError。 下面是一些可能的错误代码。
返回代码 | 说明 |
---|---|
|
QoS 子系统当前由策略配置为不允许在此主机和目标主机之间的网络路径上执行此操作。 例如,默认策略阻止 qWAVE 试验运行到离链接目标。 |
|
指示已成功收到通知请求。 重叠完成期间将返回结果。 |
|
QOSHandle 参数无效。 |
|
FlowId 参数无效。 |
|
指示内存分配失败。 |
|
指定的 FlowId 无效。 |
|
正在执行的操作需要 QoS 子系统没有的信息。 目前不支持在此网络上获取此信息。 例如,无法在目标主机处于非链接的网络路径上获取带宽估计。 |
|
资源不足,无法执行该操作。 |
|
由于出现 I/O 设备错误,因此无法执行该请求。 |
|
由于硬件错误,指示的设备需要重新初始化。 应用程序应清理并再次调用 QOSCreateHandle 。 |
|
QOS 子系统已确定无法在指定的网络路径上完成所请求的操作。 |
|
网络适配器硬件出错。 |
|
无法访问网络位置。 |
|
与远程主机的网络连接失败。 |
|
此流上已存在针对相同类型通知的请求挂起。 |
注解
此函数可以异步调用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | qos2.h (包括 Qos2.h) |
Library | Qwave.lib |
DLL | Qwave.dll |