多機能オーディオ デバイス
多機能デバイスは、2 つ以上の独立した機能 (またはサブデバイス) を組み込む単一のアダプター カードです。 多機能デバイスには、2 つ以上のオーディオ サブデバイスを含めることができます。 また、デバイス クラスにまたがる場合もあります。 たとえば、オーディオおよびモデム サブデバイスを含むデバイスは、メディア クラスとモデム クラスの両方に属します。 詳細については、複合機のサポートを参照してください。
PortCls の WavePci ポート ドライバーは、多機能デバイスに特別な要件を設定します。 特に、アダプター ドライバーは、多機能デバイス内の他のサブデバイスとは別に制御できるように、各サブデバイスを構成する方法を提供する必要があります。 これは、多機能デバイスの PCI 構成領域を次の 2 つの方法のいずれかで設定することで実現できます。
推奨される方法は、多機能デバイス上の各論理的に異なるサブデバイスに個別のデバイス ID を割り当てることです。 たとえば、多機能デバイスにモデム、オーディオ、ジョイスティックのサブデバイスが含まれている場合、システムは各サブデバイスをデバイス ツリー 内の独立した開発ノードとして表すことができる必要があります。 各デバイス ID で表されるサブデバイスには、PCI 構成レジスタの独自のセットがあり、他のサブデバイスと直交し、独立しています。 たとえば、1 つのサブデバイス (オーディオ サブデバイスなど) を有効または無効にしても、他のサブデバイス (モデムなど) には影響しません。 この種類の多機能デバイスでは、サブデバイス自体の専用ドライバー以外に、特別なハードウェア固有のドライバーのサポートは必要ありません。
多機能デバイスを設計する 2 つ目の方法は、デバイス全体に 1 つのデバイス ID を割り当て、個々のサブデバイスに個別の PCI ベース アドレス レジスタ (BAR) を提供することです。 このスキームでは、サブデバイスは構成レジスタの共通セットを共有しますが、各サブデバイスには独自の BAR または BARS があります。 システム多機能ドライバー (たとえば、Microsoft Windows 2000 以降の Mf.sys;システム提供多機能バス ドライバーの使用を参照) は、各サブデバイスの状態、コマンド、およびデータ レジスタのベース アドレスを、他の関数のレジスタとは別に構成できます。 デバイスの BAR がサブデバイスによって論理的に分離できない場合、PortCls を使用してデバイスを管理することはできません。
このセクションのメインでは、前の一覧のアプローチ (2) を実装するために必要な手順について説明します。 検討されているトピックは、次のとおりです。