WDM オーディオ ドライバーの概要
カーネル ストリーミング (KS) サービスでは、オーディオや他の種類の連続メディアのデータ ストリームのカーネル モード処理がサポートされます。 概念的には、ストリームは、いくつかの処理ノードを含むデータ パスに沿って流れる過程で処理されます。 関連するノードのセットがグループ化され、KS フィルターが形成されます。これは、ストリーム処理機能のより独立したブロックを表しています。 複数のフィルターをカスケードしてフィルター グラフを形成することにより、より複雑な関数をモジュール形式で構築できます。
一般的なオーディオ アダプター カードには、一連のスピーカーを介して wave ストリームを再生して、マイクから wave ストリームにオーディオ信号を変換し、MIDI ストリームからサウンドを合成するためのオーディオ デバイスが含まれていることがあります。 アダプター ドライバーは、オペレーティング システムに公開する KS フィルターでこれらの各オーディオ デバイスをラップできます。 オペレーティング システムは、フィルターを他のフィルターに接続して、アプリケーション プログラムの代わりにオーディオ ストリームを処理するフィルター グラフを形成します。
KS フィルターは、ピンを介して一緒に接続されます。 オーディオ フィルターのピンは、オーディオ ジャックと考えることができます。 クライアントは、クライアントがそのフィルターとの間でデータ ストリームをルーティングする必要があるとき、フィルターに入力ピンまたは出力ピンをインスタンス化します。 コンテキストによっては、ピンとストリームという用語を同じ意味で使用できます。
アップストリーム フィルターの出力ピンは、ダウンストリーム フィルターの入力ピンに接続されます。 出力ピンからのデータ ストリームには、入力ピンが受け入れ可能なデータ形式が必要です。 データ バッファリングは通常、出力ピンがデータを生成して入力ピンがデータを消費する速度の一時的な不一致を解消するために必要です。
KS フィルターは、いくつかの関連するストリーム処理関数をカプセル化するカーネル モード ドライバー オブジェクトとして実装されます。 この機能は、ソフトウェアまたはハードウェアで実装できます。 このモデルでは、オーディオ アダプターはハードウェア デバイスのコレクションと見なすことができます。アダプター ドライバーは、これらの各デバイスを個々のフィルターとしてオーディオ システムに公開します。
アダプター ドライバーは、オーディオ システムにフィルター ファクトリのコレクションを公開します。 各フィルター ファクトリは、特定の種類のフィルターをインスタンス化できます。
機能が似ているか同一のデバイスがアダプターに 1 つ以上含まれている場合、ドライバーはそれらのデバイスのフィルターを同じフィルター ファクトリにグループ化します。
複数の異なる種類のデバイスがアダプターに含まれている場合、それらのデバイスは複数の異なるフィルター ファクトリを通じて表示されます。
KS フィルターは、ピン ファクトリのコレクションを オーディオ システムに公開します。 各ピン ファクトリは、特定の種類のピンをインスタンス化できます。 機能が似ているか同一の 1 つ以上のピンをフィルターが提供できる場合、フィルターはこれらのピンを同じピン ファクトリにグループ化します。 たとえば、オーディオ ミキシングを実行するフィルターには、1 つの出力ピンをインスタンス化できるピン ファクトリと、複数の入力ピンをインスタンス化できる 2 つ目のピン ファクトリが存在することがあります。
KS サービスは、Windows ドライバー モデルに基づいて構築されます。 KS フィルターという用語は、WDM の別の概念であるフィルター ドライバーという用語と区別する必要があります。 フィルター ドライバーは WDM ドライバー スタックに存在しており、スタックを伝達する I/O 要求パケット (IRP) をインターセプトおよび変更できます。 上位レベルと下位レベルのフィルター ドライバーは、それぞれファンクション ドライバーの上下に存在します。 このセクションでは、フィルターという用語は、特に明記されていない限り、フィルター ドライバーではなく KS フィルターを指します。 フィルター ドライバーについて詳しくは、「WDM ドライバーの種類」をご覧ください。
このセクションでは、以下のトピックについて説明します:
WDM オーディオ アーキテクチャの新機能に関する最新情報と情報については、オーディオ テクノロジ Web サイトをご覧ください。