QOSQueryFlow 函数 (qos2.h)
QOSQueryFlow 函数请求有关添加到 QoS 子系统的特定流的信息。 可以异步调用此函数。
语法
ExternC BOOL QOSQueryFlow(
[in] HANDLE QOSHandle,
[in] QOS_FLOWID FlowId,
[in] QOS_QUERY_FLOW Operation,
[in, out] PULONG Size,
[out] PVOID Buffer,
[in, optional] DWORD Flags,
[out, optional] LPOVERLAPPED Overlapped
);
参数
[in] QOSHandle
QOSCreateHandle 返回的 QOS 子系统的句柄。
[in] FlowId
指定流标识符。 QOS_FLOWID是无符号 32 位整数。
[in] Operation
指定要查询的流信息类型。 此参数指定 Buffer 将包含的结构。
值 | 含义 |
---|---|
|
缓冲区 将包含 QOS_FLOW_FUNDAMENTALS 结构。 |
|
缓冲区 将包含 QOS_PACKET_PRIORITY 结构。 |
|
缓冲区 将包含一个 UINT64 值,该值指示请求协定时指定的流速(以每秒位为单位)。 |
[in, out] Size
指示 Buffer 参数的大小(以字节为单位)。
函数返回时,如果成功,此参数将指定复制到 Buffer 中的字节数。
如果此调用因 ERROR_INSUFFICIENT_BUFFER失败,此参数将指示所需的最小 缓冲区 大小才能成功完成此操作。
[out] Buffer
指向 由 Operation 参数的值指定的结构的指针。
[in, optional] Flags
与返回的数据相关的标志。
值 | 含义 |
---|---|
|
QOS 子系统将仅返回最新数据,而不返回缓存的数据。 如果新数据不可用,它将尝试获取此类数据,但代价是可能会花费更多时间。 如果无法执行此操作,调用将失败,并 显示错误代码ERROR_RETRY。
仅当 Operation 参数设置为 QOSQueryFlowFundamentals 时,此标志才适用。 |
[out, optional] Overlapped
指向用于异步输出的 OVERLAPPED 结构的指针。 如果未异步调用此函数,则必须将其设置为 NULL 。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,返回值为 0。 要获得更多的错误信息,请调用 GetLastError。 一些可能的错误代码随之而来。
返回代码 | 说明 |
---|---|
|
QoS 子系统当前由策略配置为不允许在此主机和目标主机之间的网络路径上执行此操作。 例如,默认策略阻止 qWAVE 试验运行到链接外目标。 |
|
在收集足够有用的信息之前,对 QOS 子系统的请求已超时。 |
|
Size 参数指定的缓冲区长度不足以用于查询的数据。 Size 参数现在包含所需的最小大小。 |
|
QOSHandle 参数无效。 |
|
FlowId 参数或缓冲区大小不足。 |
|
指定的 FlowId 无效。 |
|
指示内存分配失败。 |
|
要执行的操作需要 QoS 子系统没有的信息。 目前不支持在此网络上获取此信息。 例如,无法在目标主机处于非链接的网络路径上获取带宽估算。 |
|
资源不足,无法执行该操作。 |
|
由于出现 I/O 设备错误,因此无法执行该请求。 |
|
指示已成功启动更新流请求。 |
|
由于硬件错误,指示的设备需要重新初始化。 应用程序应清理并再次调用 QOSCreateHandle 。 |
|
网络适配器硬件出错。 |
|
无法访问网络位置。 |
|
不是要返回的有效数据。 |
|
目前有关网络状况的数据不足,无法回答查询。 这通常是一种暂时性状态,qWAVE 在确定网络状态之前会等待更多数据,因此存在谨慎态度。 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | qos2.h (包括 Qos2.h) |
Library | Qwave.lib |
DLL | Qwave.dll |