オーディオ用ユニバーサル Windows ドライバー
Windows 10 では、さまざまな種類のハードウェアで動作するユニバーサル オーディオ ドライバーを作成できます。 このトピックでは、このアプローチの利点と、プラットフォーム間の違いについて説明します。 オーディオ用のユニバーサル Windows ドライバーに加えて、Windows は WDM などの以前のオーディオ ドライバー テクノロジを引き続きサポートしています。
オーディオ用ユニバーサル Windows ドライバーの入門
IHV は、すべてのデバイス (デスクトップ、ノート PC、タブレット、携帯電話) で動作するユニバーサル Windows ドライバーを開発できます。 これにより、初期開発と後のコード メンテナンスの開発時間とコストを削減できます。
ユニバーサル Windows ドライバーの開発には、次のツールを使用できます。
Visual Studio 2015: "ターゲット プラットフォーム" を "ユニバーサル" に設定します。 ドライバー開発環境のセットアップの詳細については、「
Windows ハードウェア開発者向けドキュメント および WDKを使用したドライバーのビルドを参照してください。 APIValidator ツール: ApiValidator.exe ツールを使用して、ドライバーが呼び出す API がユニバーサル Windows ドライバーに対して有効であることを確認できます。 このツールは Windows 10 用 Windows Driver Kit (WDK) の一部であり、Visual Studio 2015 を使用している場合は自動的に実行されます。 詳細については、APIValidator
を参照してください。 DDI リファレンス ドキュメント: DDI リファレンス ドキュメントが更新され、ユニバーサル Windows ドライバーでサポートされている DDI が示されます。 詳細については、「オーディオ デバイス リファレンス」を参照してください。
ユニバーサル オーディオ ドライバーを作成する
詳細なガイダンスについては、
ユニバーサル オーディオ ドライバーの開始点として使用する、ユニバーサル オーディオ sysvad サンプルを読み込みます。 または、空の WDM ドライバー テンプレートから開始し、オーディオ ドライバーに必要に応じてユニバーサル sysvad サンプルのコードを追加します。
プロジェクトのプロパティで、[ターゲット プラットフォーム] を [ユニバーサル] に設定します。
インストール パッケージを作成する: ターゲットがデスクトップ エディション (Home、Pro、Enterprise、Education) 用の Windows 10 を実行しているデバイスの場合は、ユニバーサル INF ファイルを使用します。 ターゲットが Windows 10 Mobile を実行しているデバイスの場合は、PkgGen を使用して .spkg ファイルを生成します。
Windows 10 デスクトップ エディションまたは Windows 10 Mobile のドライバーをビルド、インストール、展開、デバッグします。
サンプル コード
Sysvad と SwapAPO は、ユニバーサル Windows ドライバーのサンプルに変換されました。 詳細については、「サンプルオーディオドライバー 」を参照してください。
オーディオ用ユニバーサル Windows ドライバーで使用可能なプログラミング インターフェイス
Windows 10 以降、ドライバー プログラミング インターフェイスは、OneCoreUAP ベースの Windows エディションの一部です。 その共通セットを使用すると、ユニバーサル Windows ドライバーを作成できます。 これらのドライバーは、Windows 10 デスクトップ エディションと Windows 10 Mobile、およびその他の Windows 10 バージョンの両方で実行されます。
ユニバーサル オーディオ ドライバーを操作するときに使用できる DDI を次に示します。
既存のオーディオ ドライバーをユニバーサル Windows ドライバーに変換する
既存のオーディオ ドライバーをユニバーサル Windows ドライバーに変換するには、このプロセスに従います。
OneCoreUAP Windows で既存のドライバー呼び出しを実行するかどうかを決定します。 リファレンス ページの要件セクションを確認します。 詳細については、「オーディオ デバイス リファレンス」を参照してください。
ユニバーサル Windows ドライバーとしてドライバーを再コンパイルします。 プロジェクトのプロパティで、[ターゲット プラットフォーム] を [ユニバーサル] に設定します。
ApiValidator.exe ツールを使用して、ドライバーが呼び出す DDI がユニバーサル Windows ドライバーに対して有効であることを確認します。 このツールは Windows 10 用 Windows Driver Kit (WDK) の一部であり、Visual Studio 2015 を使用している場合は自動的に実行されます。 詳細については、APIValidator
を参照してください。 ドライバーが OneCoreUAP に含まれていないインターフェイスを呼び出すと、コンパイラはエラーを報告します。
これらの呼び出しを代替呼び出しに置き換えるか、コード回避策を作成するか、新しいドライバーを記述します。
コンポーネント化されたオーディオ ドライバーのインストールの作成
概要
よりスムーズで信頼性の高いインストール エクスペリエンスを作成し、コンポーネントのサービスをより適切にサポートするには、ドライバーのインストール プロセスを次のコンポーネントに分割します。
- DSP (存在する場合) とコーデック
- AP
- OEM カスタマイズ
必要に応じて、個別の INF ファイルを DSP とコーデックに使用できます。
この図は、コンポーネント化されたオーディオ のインストールをまとめたものです。
個別の拡張 INF ファイルを使用して、特定のシステムの各基本ドライバー コンポーネントをカスタマイズします。 カスタマイズには、チューニング パラメーターやその他のシステム固有の設定が含まれます。 詳細については、「拡張 INF ファイルを利用する」を参照してください。
拡張 INF ファイルは、ユニバーサル INF ファイルである必要があります。 詳細については、「ユニバーサル INF ファイルの使用
INF ファイルを使用したソフトウェアの追加については、「コンポーネント INF ファイルの の使用
コンポーネント化 INF ファイルの送信
APO INF パッケージは、基本ドライバー パッケージとは別にパートナー センターに送信する必要があります。 パッケージの作成の詳細については、「Windows HLK の概要」を参照してください。
SYSVAD のコンポーネント化された INF ファイル
コンポーネント化された INF ファイルの例を確認するには、GitHub の sysvad/TabletAudioSample
ファイル名 | 説明 |
---|---|
ComponentizedAudioSample.inf | 基本コンポーネント化されたサンプル オーディオ INF ファイル。 |
ComponentizedAudioSampleExtension.inf | 追加の OEM カスタマイズを含む sysvad ベースの拡張ドライバー。 |
ComponentizedApoSample.inf | APO サンプル拡張 INF ファイル。 |
従来の INF ファイルは、SYSVAD サンプルで引き続き使用できます。
ファイル名 | 説明 |
---|---|
tabletaudiosample.inf | ドライバーのインストールに必要なすべての情報を含むデスクトップ モノリシック INF ファイル。 |
APO ベンダー固有のチューニング パラメーターと機能構成
すべての APO ベンダー システム固有の設定、パラメーター、およびチューニング値は、拡張 INF パッケージを使用してインストールする必要があります。 多くの場合、これは、INF AddReg ディレクティブを使用して簡単な方法で実行できます。 より複雑な場合は、チューニング ファイルを使用できます。
基本ドライバー パッケージが機能するためには、これらのカスタマイズに依存してはなりません (もちろん、機能が低下する可能性があります)。
UWP オーディオ設定 APP
エンド ユーザー UI を実装するには、Windows ユニバーサル オーディオ ドライバーのハードウェア サポート アプリ (HSA) を使用します。 詳細については、「ハードウェア サポート アプリ (HSA): ドライバー開発者向けの手順」を参照してください。
UWP ハードウェア サポート アプリをプログラムで起動する
ドライバー イベント (たとえば、新しいオーディオ デバイスが接続されている場合) に基づいて UWP ハードウェア サポート アプリをプログラムで起動するには、Windows シェル API を使用します。 Windows 10 シェル API は、リソースのアクティブ化に基づいて、または IApplicationActivationManager
APO およびデバイス ドライバー ベンダーによる AudioModules API の使用
Audio Modules API/DDI は、UWP アプリケーションまたはユーザー モード サービス間でカーネル ドライバー モジュールまたは DSP 処理ブロックに渡されるコマンドの通信トランスポート (プロトコルではなく) を標準化するように設計されています。 オーディオ モジュールには、モジュールの列挙と通信をサポートするために、正しい DDI を実装するドライバーが必要です。 コマンドはバイナリとして渡され、解釈/定義は作成者に任されます。
オーディオ モジュールは、現在、UWP アプリとオーディオ エンジンで実行されている SW APO 間の直接通信を容易にするようには設計されていません。
オーディオ モジュールの詳細については、「オーディオ モジュール通信 の実装」および「オーディオ デバイス モジュールの構成とクエリを実行する」を参照してください。
APO HWID 文字列の構築
APO ハードウェア ID には、標準情報とベンダー定義文字列の両方が組み込まれています。
これらは次のように構築されます。
SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4) &REV_r(4)
SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4)
SWC\VEN_v(4)&AID_a(4)
どこ:
- v(4) は、APO デバイス ベンダーの 4 文字の識別子です。 これは Microsoft によって管理されます。
- a(4) は、APO ベンダーによって定義される APO の 4 文字識別子です。
- n(4) は、親デバイスのサブシステムのベンダーに割り当てられた 4 文字の PCI SIG 割り当て ID です。 これは通常、OEM 識別子です。
- s(4) は、親デバイスの 4 文字のベンダー定義サブシステム識別子です。 これは通常、OEM 製品識別子です。
ドライバー更新プログラムのプラグ アンド プレイ INF バージョンと日付の評価
Windows プラグ アンド プレイ システムは、日付とドライバーのバージョンを評価して、複数のドライバーが存在する場合にインストールするドライブを決定します。 詳細については、「Windows がドライバーをランク付けする方法」を参照してください。
最新のドライバーを使用できるようにするには、ドライバーの新しいバージョンごとに、日付とバージョンを確認して更新してください。
APO ドライバー レジストリ キー
サード パーティが定義したオーディオ ドライバー/APO レジストリ キーの場合は、HKR を使用します。
Windows サービスを使用して、UWP <から> までのAPO通信を容易にする。
WINDOWS サービスは、API などのユーザー モード コンポーネントの管理に厳密には必要ありません。 設計に UWP <と> APO 間の通信を可能にする RPC サーバーが含まれている場合は、その機能を Windows サービスに実装し、オーディオエンジン内で動作する APO を制御することをお勧めします。
Windows 10 Desktop 用 Sysvad ユニバーサル オーディオ サンプルのビルド
Windows 10 デスクトップ用の sysvad サンプルをビルドするには、次の手順を実行します。
デスクトップ inf ファイル (tabletaudiosample.inf) を見つけて、製造元の名前を "Contoso" などの値に設定します
ソリューション エクスプローラーで、ソリューション 'sysvad' を長押し (または右クリック) し、[Configuration Manager] を選択します。 64 ビット バージョンの Windows にデプロイする場合は、ターゲット プラットフォームを x64 に設定します。 構成とプラットフォームの設定がすべてのプロジェクトで同じであることを確認します。
sysvad ソリューション内のすべてのプロジェクトをビルドします。
ビルドからビルドの出力ディレクトリを見つけます。 たとえば、次のようなディレクトリに配置できます。
C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
sysvad ドライバーをインストールするシステムに次のファイルをコピーします。
File | 説明 |
---|---|
TabletAudioSample.sys | ドライバー ファイル。 |
tabletaudiosample.inf | ドライバーのインストールに必要な情報を含む情報 (INF) ファイル。 |
sysvad.cat | カタログ ファイル。 |
SwapAPO.dll | API を管理するための UI 用のサンプル ドライバー拡張機能。 |
KeywordDetectorAdapter.dll | キーワード検出のサンプル。 |
ドライバーをインストールしてテストする
ターゲット システムに PnpUtil を使用してドライバーをインストールするには、次の手順に従います。
[管理者] コマンド プロンプトを開き、ドライバー ファイルをコピーしたディレクトリに次のように入力します。
pnputil -i -a tabletaudiosample.inf
sysvad ドライバーのインストールが完了する必要があります。 エラーが発生した場合は、このファイルを調べて追加情報を確認できます:
%windir%\inf\setupapi.dev.log
デバイス マネージャーの [表示] メニューで、[種類別のデバイス] を選択します。 デバイス ツリーで、Microsoft Virtual Audio Device (WDM) - Sysvad Sample を探します。 これは通常、サウンド、ビデオ、およびゲーム コントローラー ノードの下にあります。
ターゲット コンピューターで、[コントロール パネル] を開き、[ハードウェアとサウンド]>[オーディオ デバイスの管理]に移動します。 [サウンド] ダイアログ ボックスで、Microsoft Virtual Audio Device (WDM) - Sysvad Sample というラベルの付いたスピーカー アイコンを選択し、[既定値の設定] を選択しますが、[OK] は選択しません。 これにより、[サウンド] ダイアログ ボックスが開いたままになります。
ターゲット コンピューター上で MP3 またはその他のオーディオ ファイルを見つけ、ダブルクリックして再生します。 次に、[サウンド] ダイアログ ボックスで、Microsoft Virtual Audio Device (WDM) - Sysvad Sample ドライバーに関連付けられているボリューム レベル インジケーターにアクティビティがあることを確認します。