Windows 秘話Windows オーディオが暴走するとき

Raymond Chen

タスク マネージャの [プロセス] タブで AudioDG.exe の説明を見ると、"Windows オーディオ デバイス グラフ アイソレーション" と表示されています。これはたいした情報を提供していないにもかかわらず、物議をかもす名前です。

AudioDG プロセスは、Windows オーディオ エンジンの本拠地です。というのも、このプロセスでデジタル信号が処理されるからです。このプロセスは、さまざまな理由から、Windows Audio サービスから意図的に分離されています。その 1 番の理由は、AudioDG プロセスが、すべての特殊なオーディオ効果をホストしていることです。専門用語では "オーディオ処理オブジェクト" と呼ばれますが、ユーザー インターフェイス上では単に "オーディオ拡張機能" と呼ばれています。

5 月号のコラムでラウドネス イコライゼーションというオーディオ拡張機能を取り上げた際に、オーディオ拡張機能について簡単な説明を受けました (ラウドネス イコライゼーションを使用すると、一度ボリューム コントロールを最適なレベルに設定したら、その後は、ボリューム コントロールを調整する必要がなくなります)。他の組み込みのオーディオ拡張機能については、「Windows Vista のオーディオ システム エフェクトの再利用」の前半部分を参照してください。

このオーディオ処理オブジェクトを分離すると、ハードウェア ベンダがドライバに新しいオーディオ処理オブジェクトを含めることができるので、この分離は重要です。オーディオ処理オブジェクトを分離プロセスに隔離することで、オーディオ処理オブジェクトで発生したクラッシュの影響が及ぶ範囲を制限できます。AudioDG プロセスでクラッシュが発生しても、音声が聞こえなくなるだけで、他のシステムは引き続き問題なく動作します。

困ったことに、オーディオ処理オブジェクトは、クラッシュが発生しなくても問題を引き起こすことがあります。たとえば、ハングすることがあります。しかし、この場合も、影響が及ぶ範囲はオーディオ処理オブジェクトに制限されます。さらに悪いのは、オーディオ処理オブジェクトが暴走し、とんでもない量のリソースを消費する場合です。このような事象が発生すると、オーディオ処理オブジェクトが、CPU の全サイクルを取り込んだり、ひどいメモリ リークを引き起こしたりします。さいわい、このような手違いが起こる頻度は、クラッシュよりもかなり低くなります。

しかし、不運にも、AudioDG プロセスにより、大量の CPU (メモリ) が消費されている現場に遭遇した場合には、次のような対策を講じることができます。

  • コントロール パネルのサウンド ユーティリティを起動し、[再生] タブをクリックします。
  • 再生デバイス (おそらくスピーカー) を選択し、[プロパティ] をクリックします。
  • [拡張] タブをクリックします (使用中の再生デバイスにはオーディオ処理オブジェクトが関連付けられていない場合、[拡張] タブは表示されません)。
  • チェック ボックスの設定を変更して、一部の (または、すべての) 拡張機能を無効にできます。既に説明したように、拡張機能は、オーディオ処理オブジェクトに付けられた単なる親しみやすい名前です。[すべての音の明瞭化設定を無効にする] チェック ボックスは、すべての拡張機能を無効にするマスタ スイッチの役割を果たします。

ご想像のとおり、サウンド カード ベンダは、多くの費用をかけて開発した特殊機能をユーザーが無効にすることは望んでいません。というのも、ベンダは、このような機能により競合他社との差別化を図っているからです。「当社のサウンド カードは、某社のものよりも音質が優れているので、ぜひ当社のサウンド カードをご利用ください」という具合にです。

オーディオ関連のハードウェア ベンダは、彼らが心血を注いで開発したオーディオ拡張機能を無効にする手段を Windows オーディオ チームが追加していることを知ったとき、ひどく気をもみ、各方面から圧力をかけて、Windows オーディオ チームが、すべてのオーディオ拡張機能を無効にするマスタ スイッチを取り下げるように働きかけました。この争議は長く険しいものでしたが、Windows オーディオ チームが勝利を収め、このチェック ボックスが製品に組み込まれました (サウンド カード ベンダがユーザーを欺いたりすることがないよう、ドライバの WHQL テストの一環として、ベンダが提供するドライバによりチェック ボックスが表示されなくなったり、機能しなくなったりしないことを確認するようになりました)。Windows オーディオ チームには、戒律に従って生きていることと、この争議に勝利したことについての感謝状を贈るべきでしょう。

最後に、このプロセスが AudioDG という名前になった経緯をご説明しましょう。"デバイス グラフ" という用語は、オーディオ システムのさまざまなコンポーネントの接続方法を表すのに使用されるものです。また、オーディオ サンプルがスピーカーに出力される際には、この経路をたどります。Windows オーディオ チームでは、このプログラムに DeviceGraph.exe という名前を付けるつもりでしたが、誤解により、AudioDG という略称を使用することになりました。というのも、Windows オーディオ チームでは、プログラム名は 8 文字以内にする必要があると誤解していたからです。これは、長いファイル名を使用する前の古きよき 8.3 形式のファイル名を使っていた日の再来ですね。この誤解に気付いたときには、既に手遅れで、プログラム名は確定していました。

このコラムを執筆する際に支援してくれた Larry Osterman と Elliot Omiya に感謝します。

Raymond Chen は、自分の Web サイト「The Old New Thing」(古くて新しいもの) および同じタイトルの著書 (Addison-Wesley、2007 年発行) で、Windows の歴史、Win32 プログラミング、そしてクラッシェンのインプット理論について触れています。