QOSStartTrackingClient 函数 (qos2.h)

QOSStartTrackingClient 函数通知 QOS 子系统是否存在新客户端。 调用此函数会增加 QOS 子系统在调用 QOSSetFlow 以设置流时收集足够的网络路径信息的可能性。

注意 尽管强烈建议使用 QOSAddSocketToFlow 函数添加流,但不需要此调用。 不调用此函数可能需要在 QOSSetFlow 调用期间启动网络试验,并可能导致 QOSSetFlow 在初始使用时 ERROR_NETWORK_BUSY 失败。

 

语法

ExternC BOOL QOSStartTrackingClient(
  [in] HANDLE    QOSHandle,
  [in] PSOCKADDR DestAddr,
       DWORD     Flags
);

参数

[in] QOSHandle

QOSCreateHandle 返回的 QOS 子系统的句柄

[in] DestAddr

指向包含客户端设备的 IP 地址 的 sockaddr 结构的指针。 客户端由其 IP 地址和地址系列标识。 sockaddr 结构中指定的任何端口号将被忽略。

Flags

保留供将来使用。 必须设置为 0。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,返回值为 0。 要获得更多的错误信息,请调用 GetLastError。 一些可能的错误代码随之而来。

返回代码 说明
ERROR_INVALID_HANDLE
QOSHandle 参数无效。
ERROR_INVALID_PARAMETER
DestAddr 参数无效。
ERROR_NOT_ENOUGH_MEMORY
指示内存分配失败。
ERROR_NO_SYSTEM_RESOURCES
资源不足,无法执行该操作。
ERROR_IO_DEVICE
由于出现 I/O 设备错误,因此无法执行该请求。
ERROR_DEVICE_REINITIALIZATION_NEEDED
由于硬件错误,指示的设备需要重新初始化。 应用程序应清理并再次调用 QOSCreateHandle
ERROR_NOT_SUPPORTED
不支持该请求。
ERROR_ADAP_HDW_ERR
网络适配器硬件出错。
ERROR_HOST_UNREACHABLE
无法访问网络位置。

注解

收到 QOSStartTrackingClient 调用后,QoS 子系统开始收集有关客户端的信息,例如 QoS 功能和端到端路径上的可用带宽。

应用程序在发现可能需要 QoS 流的客户端设备后,应立即调用此函数。 例如,当媒体播放器设备首次连接到媒体服务器应用程序时,应调用此函数。

QOSStartTrackingClient 执行的网络试验不会在网络上引入值得注意的负载,即使长时间未启动流。 qWAVE 服务根据 QoS 子系统活动动态调整试验流量。

必须在接收器电脑或设备上实现链接层拓扑发现 (LLTD) 才能使此功能正常工作。

示例

以下代码演示了函数的使用、处理常见异常和所需的参数初始化。 实际参数值可能因 QoS 版本而异。 必须包含 Winsock2.h 头文件才能使用 Winsock 定义的标识符或函数。

QOS_VERSION    Version;
HANDLE         QoSHandle = NULL;
BOOL        QoSResult = FALSE;

Version.MajorVersion = 1;
Version.MinorVersion = 0;

// Get a handle to the QoS subsystem (required for tracking).
QoSResult = QOSCreateHandle(
    &Version, 
    &QoSHandle );

if(!QOSStartTrackingClient(QoSHandle, (sockaddr*)ptr->ai_addr, 0))
{
    std::cerr << std::endl;
    std::cerr << __FILE__ <<" Line: " << __LINE__ ;
    std::cerr << " - QOSStartTrackingClient failed. Exception code: "; 
    std::cerr << GetLastError();

    if (GetLastError() == ERROR_NOT_SUPPORTED)
    {
        std::cerr << std::endl;
        std::cerr << " ERROR_NOT_SUPPORTED" << std::endl;
        std::cerr << "This operation requires information";
        std::cerr << "that the QoS subsystem does not have. " << std::endl;
    }
}
else
    std::cout << "QoS client tracking started." << std::endl;



要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 qos2.h (包括 Qos2.h)
Library Qwave.lib
DLL Qwave.dll

另请参阅

QOSCreateHandle

质量 Windows 音频/视频体验 (qWAVE)