多功能音频设备

多功能设备是一个适配器卡,其中包含两个或多个单独的功能(或子设备)。 多功能设备可以包含两个或多个音频子设备。 它还可能跨越设备类。 例如,包含音频和调制解调器子设备的设备同时属于媒体类和调制解调器类。 有关详细信息,请参阅支持多功能设备

PortCls 中的 WavePci 端口驱动程序对多功能设备具有特殊要求。 具体而言,适配器驱动程序必须提供一种配置每个子设备的方法,以便可以独立于多功能设备中的其他子设备进行控制。 这可以通过以下两种方式之一为多功能设备设置 PCI 配置空间来实现:

  1. 首选方法是将单独的设备 ID 分配给多功能设备上的每个逻辑上不同的子设备。 例如,如果多功能设备包含调制解调器、音频和游戏杆子设备,则系统应能够将每个子设备表示为设备树中的独立 devnode。 每个设备 ID 表示的子设备具有其自己的 PCI 配置寄存器集,并且与其他子设备正交,并独立于其他子设备。 例如,启用或禁用一个子设备(例如音频子设备)不应对任何其他子设备(例如调制解调器)产生任何影响。 这种类型的多功能设备不需要任何特殊的特定于硬件的驱动程序支持,但子设备本身的专有驱动程序除外。

  2. 设计多功能设备的第二种方法是将单个设备 ID 作为一个整体分配给设备,并为单个子设备提供单独的 PCI 基址寄存器 (BAR)。 在此方案中,子设备共享一组常用的配置寄存器,但每个子设备都有自己的一个 BAR 或多个 BAR。 系统多功能驱动程序(例如,Microsoft Windows 2000 及更高版本上的 Mf.sys;请参阅使用系统提供的多功能总线驱动程序)可以为每个子设备的状态、命令和数据寄存器配置基址,并且独立于其他函数的寄存器。 如果设备的 BAR 无法按子设备实现逻辑上的分离,则无法使用 PortCls 来管理设备。

本部分的其余部分介绍了在前面的列表中实现方法 (2) 所需的步骤。 讨论了以下主题:

多个音频子设备

多功能设备限制