トップ回答者
サウンドUMDFの作成

質問
-
サウンド操作のためのデバイスドライバをWDFのユーザモード(UMDF)で作成したいと思っています。
OSはWindowsXPです。まずは、WDKの「src\general\echo\umdf」にあるUMDFのサンプルソースを改造して、XPのデバイス
マネージャにサウンドデバイスとして認識させアプリからもこのドライバを使えるようにしたい
と考えていますがうまくいきません。手順は下記の通りです。
(1)上記サンプルソース内のinfファイルのデバイスクラスを下記の様に変更
Class=MEDIA
ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}
※上記以外、dllファイル名や各セクション名はとりあえずサンプルのままです。(2)WDKでデバイスドライバをビルド
dll等が作成されます。(3)WDKに付属のDPInstにてドライバをインストール
インストール自体は問題なく終了します。・インストール後、レジストリには下記のパスに登録されます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DIFx\
DriverStore\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
DIFx\DriverStore\wudfechodr_18F32CC535604744D3701AE05332549DE9698129・ファイル類(自作dll,inf,WudfUpdate_01009.dll)は下記にコピーされます。
C:\WINDOWS\system32\DRVSTORE\wudfechodr_18F32CC535604744D3701AE05332549DE9698129この後、デバイスマネージャで確認して上記ドライバが参照できることを期待しています
が、ドライバは参照できません(表示→非表示のデバイスを表示で確認しても同様)。ここで作成したドライバが見えれば、アプリケーションからもドライバを使えるようになる
と期待しているのですが。
尚、UMDFによるサウンド用デバイスドライバのサンプルがあれば、まずはそれを参考にする
のですが良いサンプルをご存じないでしょうか?- 移動 Mike Wang (MSCS) 2012年10月2日 12:58 (移動元:Windows デバイスドライバー開発)
回答
-
まず、「サウンド操作のためのデバイスドライバ」というものが何をするものなのか、何故UMDFで開発しようと思ったのかというのがよくわからないのですが、サウンド操作が目的であれば、デバイスドライバでは無く、DirectX Audio (旧Direct Sound) を使用するのが一般的だと思います。
Audioデバイスやチューナーデバイス等をWindowsに接続するためのデバイスドライバはありますが、これらは「デバイスを接続すること」と、「デバイスを一般的なアプリケーションから利用できるようにすること」が目的であって、サウンド操作を目的としたものではありません。
それからUMDFでのドライバ開発には結構な制限があります。以下の Devices Supported by the UMDF のページに載っているものが、UMDFでの開発に向いていると言えます。
http://msdn.microsoft.com/en-us/library/ff554625(v=VS.85).aspx上記からリンクしている以下の Choosing a Driver Model のページが示す様に、Audio devices のドライバはAVStream, PortClsで作成する必要があります。
http://msdn.microsoft.com/en-us/library/ff554652(v=VS.85).aspxそういう訳で今のところは、UMDFによるサウンド用デバイスドライバのサンプルはありません。Audioドライバのサンプルはご存知のように、src\audioの下に沢山あります。
- 回答としてマーク Atomu Hidaka-MVP, Moderator 2012年7月7日 14:11
すべての返信
-
自己レスです。
いろいろ試したところ、手順(3)のインストールでDPInstではなく、コントロールパネル→ハードウェアの追加による
手順に変更したところ自作ドライバがデバイスマネージャ上に表示されるようになりました。
但し、その後サウンドレコーダなどから自作ドライバを使うために、オーディオのプロパティで「音の再生」、「録音」などの
ドライバのリスト(既定のデバイスのリスト)を切り替えようとするのですが、自作ドライバはこのリストには相変わらず表示
されません。
デバイスマネージャには表示されてもオーディオのプロパティには表示されのは何か(INFファイル?)設定が不足している
と思うのですがその理由がわかりません。
お手数ですが、ご回答をよろしくお願いします。
-
まず、「サウンド操作のためのデバイスドライバ」というものが何をするものなのか、何故UMDFで開発しようと思ったのかというのがよくわからないのですが、サウンド操作が目的であれば、デバイスドライバでは無く、DirectX Audio (旧Direct Sound) を使用するのが一般的だと思います。
Audioデバイスやチューナーデバイス等をWindowsに接続するためのデバイスドライバはありますが、これらは「デバイスを接続すること」と、「デバイスを一般的なアプリケーションから利用できるようにすること」が目的であって、サウンド操作を目的としたものではありません。
それからUMDFでのドライバ開発には結構な制限があります。以下の Devices Supported by the UMDF のページに載っているものが、UMDFでの開発に向いていると言えます。
http://msdn.microsoft.com/en-us/library/ff554625(v=VS.85).aspx上記からリンクしている以下の Choosing a Driver Model のページが示す様に、Audio devices のドライバはAVStream, PortClsで作成する必要があります。
http://msdn.microsoft.com/en-us/library/ff554652(v=VS.85).aspxそういう訳で今のところは、UMDFによるサウンド用デバイスドライバのサンプルはありません。Audioドライバのサンプルはご存知のように、src\audioの下に沢山あります。
- 回答としてマーク Atomu Hidaka-MVP, Moderator 2012年7月7日 14:11
-
時間が経ってしまいましたが、問題が解決しているようですので回答済としてマークさせて頂きました。
- 編集済み Atomu Hidaka-MVP, Moderator 2012年7月7日 14:13