默认数据交集处理程序

适配器的专有数据交集处理程序(微型端口驱动程序对象的 IMiniport::D ataRangeIntersection 方法)可以通过返回STATUS_NOT_IMPLEMENTED状态代码来拒绝执行数据交集检查。 在这种情况下,端口驱动程序的默认数据交集处理程序代表适配器执行检查。

可以将适配器驱动程序的最小数据交集处理程序实现为 DataRangeIntersection 方法,该方法通过返回STATUS_NOT_IMPLEMENTED来拒绝所有数据交集请求。

端口驱动程序默认处理程序的当前实现在可以处理的数据范围类型中受到限制:

  • 仅 PCM 数据格式

  • 仅单声道和立体声音频流

支持非 PCM 或多通道格式的适配器驱动程序应实现专有数据交集处理程序,而不是依赖端口驱动程序来处理这些格式的数据交集。

此外,默认处理程序仅支持可由 KSDATAFORMAT_DSOUNDKSDATAFORMAT_WAVEFORMATEX 结构指定的音频格式。 它不支持任何包含 波形格式扩展 结构的格式,例如,当格式具有两个以上的通道时,需要指定通道掩码。

从两个数据范围之间的交集中选择通用格式时,端口驱动程序的默认处理程序始终在每个参数的交集区域中选择最高值:

  • 例如,如果交集跨越多个有效的采样频率(例如 11、22 和 44 kHz),则默认处理程序将选取最高频率。

  • 例如,如果交集跨越多个有效的每样本位数值(例如 8、16 和 32 位),则默认处理程序会选取其中的最大值。

  • 如果交集同时跨越单声道和立体声格式,则默认处理程序会选取立体声。

如果默认处理程序选择的格式不理想,适配器驱动程序可以通过使 NewStream 调用失败来拒绝该格式(例如,当 SysAudio 尝试使用该格式创建接收插针时,请参阅 IMiniportWavePci::NewStream)。 如果调用失败,SysAudio 将不会继续查找数据交集。 相反,它将尝试通过遍历系统筛选器(如 KMixer)支持的 PCM 格式列表来建立连接,直到找到一个格式,该格式也能被适配器的接收引脚支持。 该列表首先按更高质量的格式排序。 与以前一样,适配器会通过对那些不令人满意的格式的 NewStream 调用的失败,来拒绝列表中的这些格式。