具有离散值的数据范围

例如,如果音频设备支持 11、22 和 44 kHz 的采样频率,则可以在单个 KSDATARANGE_AUDIO 结构中将所有三个频率指定为 11 到 44 kHz 的范围。 此方法的优点是简洁。 可能的缺点是,有缺陷的数据交集处理程序可能会选择一个属于该范围的无效参数值(例如,27 kHz)。 在这种情况下,适配器驱动程序只能使尝试创建格式无效的引脚的 NewStream 调用(例如,请参阅 IMiniportWavePci::NewStream)失败。

另一种方法是提供数据范围列表,其中每个数据范围指定一个离散值,而非每个参数的值范围。 例如,数据范围数组可以包含 11、22 和 44 kHz 的三个单独元素,而不是提供单个数据范围来指定从 11 到 44 kHz 的采样频率范围。 在每个元素中,最大和最小采样频率都设置为相同的值(11、22 或 44 kHz)。 此方法的优点是,它消除了与受支持的精确值相关的任何歧义。 此外,如果一个离散值优先于另一个离散值,则包含此值的数据范围可以移动到数组中位于包含其他值的数据范围之前的位置。 离散值的一个小缺点是,它们会增加数据范围数组的大小。