5

NAudio を使用して複数のサウンド出力アプリケーションを作成しようとしています。8 つの USB サウンド カードがインストールされています。NAudio では 8 つすべてを使用できますが、どのデバイス インデックスがどのカードであるかを判断するためのパターンがわかりません。

カードはさまざまなハードウェアに接続されるため、使用しているカードを確認することが重要です。

WMI を使用して情報をポーリングしようとしましたが、サウンド デバイスの順序を決定する情報が見つからないようです。

更新: この問題に関する情報を含めるのを忘れていました。サウンド カードはすべて、12 ポート ハブを介して接続された USB サウンド カードです。

4

4 に答える 4

4

デバイスの順序は、すべてのバージョンの Windows で決定論的ではありません。Vista 以降では、デバイスは通常、DSound GUID (多かれ少なかれ) によって順序付けられるため、効果的にランダムになります。

于 2009-10-02T05:00:13.490 に答える
2

WaveOutを使用していると思いますか?WaveOut.GetCapabilities(deviceNumber)を呼び出して、デバイスの名前を取得できます。これは役立つ場合があります。

于 2009-10-02T06:50:28.527 に答える
2

これは私がこれまでに思いついたことであり、私たちにとってはうまくいきます。

WMI を使用すると、Win32_SoundDevice から DeviceID を取得できます。それを使用して、HKLM\SYSTEM\CurrentControlSet\ENUM\'DeviceID' のレジスタにアクセスし、"Driver" という名前の文字列値を取得できます。この値には、ClassGUID と末尾の数字が含まれます。

例: {4d36e96c-e325-11ce-bfc1-08002be10318}\0015

すべてのサウンド デバイスの最後の番号*(15)*を取り除いて並べ替えると、winmm.dll を使用して NAudio からデバイスが一覧表示されます。これらのサウンド デバイスの場所も、同じキーのレジストリ内か、DeviceID を使用して Win32_PNPEntity から取得できます。

この場合、場所によって、サウンド デバイスが接続されている USB ハブのポートを特定できます。

于 2009-10-02T16:30:47.143 に答える
1

このMSDNの記事をご覧ください。DirectSoundを使用してオーディオデバイスを列挙します。

http://msdn.microsoft.com/en-us/library/bb318674(VS.85).aspx

于 2009-10-01T18:40:12.383 に答える