2010-12-29 19 views
7

関数midiOutGetDevCapsは構造体MIDIOUTCAPSを返します。 私は、Windows XP上でUSBのMIDIデバイスを照会する際に、より具体的な情報が必要です。特に、デバイスマネージャを使用してそれぞれのデバイスを開くときに、「場所」の下に表示される情報が必要です。 コンピュータに接続されたいくつかのMIDIインターフェイスをプログラムで区別するために、この情報が必要です。 midiOutGetDevCapsを使用すると、コンピュータに接続されているすべてのMIDI USBインターフェイスに対して「USBオーディオデバイス」が一様に取得されるため、インターフェイスを区別することは不可能です。さらに悪いことに、この文字列はローカライズされています。ドイツのWindowsでは「USB Audio Device」ではなく「USBAudiogerät」が表示されます。Windows上で詳細なUSB MIDIデバイス情報を取得するxp

+1

本当に答えがあることを願っています。私も同じ問題がありました。しかし、私はそこにいるとは思わない。私が使用したすべてのオーディオとDAWソフトウェアには同じ問題があります...同じ名前のデバイスをランダムに列挙します。覚えておいてください。MIDIデバイスにはUSBやハードウェアとの接続がありません。デバイスをハードウェアのアイデアに関連付けることは、とにかく行く方法ではないかもしれませんが、私は実行可能な解決策を知りません。 – Brad

+0

製造元と製品IDは何を教えてくれるのですか?私は同じデバイスの2つが差し込まれていれば、あなたはまだ問題を起こすだろうと思う... – Goz

答えて

1

私はそれがあなたがどんなに絶望的であるかによって決まると思います。私は自分のUSBデバイスを使い果たしました。私の場合、特定のUSB COMポート関連デバイスを列挙する必要がありました。 。 。現在システムに接続されているかどうかは関係ありません。

それは私がそれを投稿することはできません申し訳ありません、すべての会社独自のコード、ですが、USB関連機器に関する全ての情報の検索はこちら(Perlの)を開始:メモリが私を提供している場合

$hostnamePrefix = "//$hostname/"; 
my $baseKey = "${hostnamePrefix}HKEY_LOCAL_MACHINE/System/CurrentControlSet/"; 
my $regVidList = Win32::TieRegistry->new("${baseKey}Enum/USB/", $optionsRef); 

それが合理的にまっすぐ進みます構造。私はあなたが実際に必要なものすべてを得るためにレジストリの2つの別々のセクションをループする必要があると信じています。 。 。これを試みるのに必死なら、私は可能な限り質問に答えることができますが、投稿コードは法務部の承認が必要です。 (不可能ではありませんが、入手に数週間かかります)

また、これはXPで動作します。 。 。私はそれがどのようにWin7で動作するかわからない。 (いずれにしてもわからないが、私が気づいているのは誰も試みていない)

これをコード化するのはそれほど難しくありませんでした。その結果、Perlスクリプトは約50%のコメントである約1000行のコードです。鍵と特別な事件との間のすべての関係を整理するのに数日かかった。

関連する問題