KSPROPERTY_JACK_DESCRIPTION3

KSPROPERTY_JACK_DESCRIPTION3 属性作为使用筛选器句柄访问的针式属性实现。

在版本 22H2 及更高版本的 Windows 操作系统中,关联的 KSJACK_DESCRIPTION3 结构可用于指定和更改插孔的当前配置。

使用情况摘要表

获取 设置 目标 属性描述符类型 属性值类型

引脚工厂(通过筛选器句柄)

KSP_PIN

KSMULTIPLE_ITEM,后跟 KSJACK_DESCRIPTION3 结构的阵列

属性值(实例数据)是 KSMULTIPLE_ITEM,后跟 KSJACK_DESCRIPTION3 结构的阵列。

返回值

KSPROPERTY_JACK_DESCRIPTION3 属性请求返回 KSMULTIPLE_ITEM,后跟 N KSJACK_DESCRIPTION3 结构的阵列,其中 N = 与指定桥接引脚相关联的插孔数量。 以下列表显示属性请求返回的项。

KSMULTIPLE_ITEM.Size = sizeof(KSMULTIPLE_ITEM) + N * sizeof(KSJACK_DESCRIPTION3)

KSMULTIPLE_ITEM.Count = N

KSJACK_DESCRIPTION3[0]

...

KSJACK_DESCRIPTION3[N-1]

注解

使用 KSJACK_DESCRIPTION3 和 KSPROPERTY_JACK_DESCRIPTION3 传达音频设备更改

Windows 音频系统在创建音频终结点期间缓存音频设备功能。 这些缓存值适用于用于硬件音频引擎的存在、格式支持、容器 ID、缓冲区大小特征等功能。这些缓存的值将在 Windows 安装的整个生命周期中保留。 仅当音频驱动程序更新或 OS 升级期间,才会刷新。

借助 KSJACK_DESCRIPTION3,Windows 音频系统为音频驱动程序提供了一种机制来请求丢弃和刷新所有缓存的值。 请求可以通过音频设备功能(如资源约束)的更改触发。

每当驱动程序在运行时更改 KSJACK_DESCRIPTION3 的内容时,驱动程序都会触发现有的 KSEVENT_PINCAPS_JACKINFOCHANGE 事件。

Windows 音频系统维护在音频终结点上缓存的最后一个报告的 ConfigId 值。 检索 ConfigId 值以响应 KSEVENT_PINCAPS_JACKINFOCHANGE 事件,并在系统启动时正常处理音频终结点、音频终结点生成器服务重启、音频驱动程序更新或终结点的接口状态更改。

如果检索到的 ConfigId 值与以前存储的值不同,Windows 音频系统将丢弃所有以前缓存的终结点功能并刷新它们。

建议的用法是在驱动程序中定义由 ConfigId(位掩码或枚举)值控制的多个音频终结点配置。 例如,ConfigId 为 1 可能指示存在音频引擎节点,而 ConfigId 为 2 指示不会报告音频引擎节点。 驱动程序使用的 ConfigId 通过 KSPROPERTY_JACK_DESCRIPTION3 与 Windows 音频系统共享,并用于将终结点与 Windows 音频系统缓存的功能同步。

Windows 无法处理 ConfigId 的值。 音频驱动程序可以使用在运行时选择的时间戳或递增值来代替位掩码或枚举,如上所述。 不建议使用此策略,因为它可能导致在启动期间不必要的终结点刷新,或者更改接口以将最后存储的 ConfigId 值同步到新报告的值,即使在终结点功能未更改时也是如此。 这种方法还可能增加驱动程序和 Windows 不同步的可能性,从而导致音频播放失败。

ConfigId 更改时,用于刷新终结点上缓存值的机制与用于操作系统升级和驱动程序更新的机制相同。 将创建一个具有不同 ID 的新终结点,其中将包含与终结点的新 ConfigId 设置匹配的刷新缓存值,然后将用户设置从旧终结点复制到新终结点,最后删除旧终结点。 有关操作系统升级中的音频终结点迁移过程的更多信息,请参阅操作系统升级

要求

最低受支持的客户端

版本 22H2 及更高版本的 Windows 操作系统中提供该功能。

标头

Ksmedia.h

另请参阅

KSJACK_DESCRIPTION3

KSMULTIPLE_ITEM

操作系统升级