QOSCreateHandle 函数 (qos2.h)

此函数初始化 QOS 子系统和 QOSHandle 参数。 调用其他 QOS 函数时,将使用 QOSHandle 参数。 必须在任何其他函数之前调用 QOSCreateHandle

QOSCloseHandle 关闭此函数创建的句柄。

语法

ExternC BOOL QOSCreateHandle(
  [in]  PQOS_VERSION Version,
  [out] PHANDLE      QOSHandle
);

参数

[in] Version

指向 QOS_VERSION 结构的指针,该结构指示正在使用的 QOS 版本。 MajorVersion 成员必须设置为 1,MinorVersion 成员必须设置为 0。

[out] QOSHandle

指向接收 QOS 句柄的变量的指针。 调用其他 QOS 函数时使用此句柄。

返回值

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

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

返回代码 说明
ERROR_GEN_FAILURE
内部逻辑错误。 初始化失败。 例如,如果主机进入睡眠或待机模式,则所有现有句柄和流都无效。
ERROR_INVALID_PARAMETER
QOSHandle 参数无效。
ERROR_NOT_ENOUGH_MEMORY
指示内存分配失败。
ERROR_NO_SYSTEM_RESOURCES
资源不足,无法执行该操作。
ERROR_RESOURCE_DISABLED
服务所需的资源不可用。 如果用户尚未为 qWAVE 服务启用防火墙异常,可能会返回此错误。
ERROR_SERVICE_DEPENDENCY_FAIL
此服务的一个依赖项不可用。 无法启动 qWAVE 服务。

注解

每个打算使用 qWAVE 的进程都必须首先调用 QOSCreateHandle。 返回的句柄可用于执行重叠的 I/O。 例如,此句柄可以与 I/O 完成端口相关联, (IOCP) 接收重叠的完成通知。 尽管单个句柄足以满足大多数应用程序的需求,但可以多次调用此函数以获取多个句柄。

如果计算机进入中断连接(如睡眠或待机)的省电模式,则必须重新初始化现有的和活动网络试验,例如 QOSStartTrackingClient 。 流的这种重新创建反映了现有套接字也需要的清理和创建活动。 必须创建新句柄,并且必须重新创建流并重新输入。

示例

以下代码演示了函数的使用和所需的参数初始化。 实际值因 QoS 版本而异。

必须包含 Winsock.h 才能使用 WSAGetLastError 函数。

有关完整示例代码列表,请参阅Windows SDK。 SDK 文件夹:Samples\NetDs\GQos\Qos2

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

// Initialize the QoS version parameter.
Version.MajorVersion = 1;
Version.MinorVersion = 0;

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

if (QoSResult != TRUE)
{
    std::cerr << "QOSCreateHandle failed. Error: "; 
    std::cerr << WSAGetLastError() << std::endl;
}



要求

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

另请参阅

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