2010-12-29 12 views
7

La funzione midiOutGetDevCaps restituisce una struttura MIDIOUTCAPS. Avrei bisogno di informazioni più specifiche durante l'interrogazione di un dispositivo midi usb su windows xp, in particolare avrei bisogno delle informazioni visualizzate in "Posizione" quando apro il rispettivo dispositivo usando Gestione periferiche. Ho bisogno di queste informazioni per distinguere a livello di codice tra diverse interfacce MIDI collegate a un computer. Usando midiOutGetDevCaps, ottengo uniformemente "USB Audio Device" per ogni interfaccia midi usb collegata al computer, quindi la distinzione tra le interfacce è impossibile. Per peggiorare le cose, questa stringa è localizzata, quindi ad es. su un Windows tedesco avrai "USB Audiogerät" invece di "USB Audio Device".recupero di informazioni dettagliate sul dispositivo midi usb su windows xp

+1

Spero davvero che ci sia una risposta a questo. Ho avuto lo stesso problema. Tuttavia, non penso che ci sia. Tutti i software audio e DAW che ho usato hanno lo stesso problema ... elencando i dispositivi con lo stesso nome in modo casuale. Ricorda, i dispositivi MIDI non hanno alcuna connessione intrinseca con USB o altro hardware. Associare i dispositivi con un'idea hardware potrebbe non essere la soluzione giusta, ma non conosco una soluzione praticabile. – Brad

+0

Che cosa indicano il produttore e gli ID prodotto? Immagino che avresti ancora problemi se hai 2 degli stessi dispositivi collegati ma ... – Goz

risposta

1

Immagino che dipenda da quanto sei disperata. Ho avuto il mio run con dispositivi USB. Nel mio caso avevo bisogno di elencare alcuni dispositivi relativi alla porta COM USB. . . indipendentemente dal fatto che siano attualmente collegati al sistema o meno.

E 'tutto il codice proprietario dell'azienda, mi dispiace non posso postarlo, ma la ricerca di tutte le informazioni riguardanti i dispositivi connessi USB inizia da qui (Perl):

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

Se la memoria non mi inganna si tratta di un ragionevolmente dritto in avanti struttura. Credo che in realtà devi scorrere due sezioni separate del registro per ottenere tutto ciò che ti serve. . . se sei abbastanza disperato da tentare questo, sono felice di rispondere alle domande dove posso, ma pubblicare il codice richiederebbe l'approvazione del nostro dipartimento legale. (Non impossibile, ma ci vorranno settimane per ottenerlo.)

Inoltre, mentre questo funzionerà su XP. . . Non ho idea di come funzionerà su Win7. (Non so in alcun modo, nessuno lo ha ancora provato di cui sono a conoscenza.)

Codificare questo non era poi così male (lo script Perl risultante è di circa 1000 righe di codice che è quasi il 50% di commenti), ma elaborare tutti i rapporti tra le chiavi e i casi speciali ha richiesto diversi giorni.

Problemi correlati