Condividi tramite


Driver di Windows universali per audio

In Windows 10 puoi scrivere un driver audio universale che funzionerà in molti tipi di hardware. Questo argomento illustra i vantaggi di questo approccio e le differenze tra le piattaforme. Oltre ai driver di Windows universale per l'audio, Windows continua a supportare le tecnologie precedenti dei driver audio, ad esempio WDM.

Introduzione ai driver di Windows universali per Audio

IHV possono sviluppare un driver di Windows universale che funziona su tutti i dispositivi (desktop, portatili, tablet, telefoni). Ciò può ridurre i tempi di sviluppo e i costi per lo sviluppo iniziale e la manutenzione del codice successiva.

Questi strumenti sono disponibili per sviluppare driver di Windows universali:

  • Visual Studio 2015: impostare "Piattaforma di destinazione" uguale a "Universale". Per altre informazioni sulla configurazione dell'ambiente di sviluppo driver, vedere la documentazione per sviluppatori di hardware Windows e La creazione di un driver con WDK.

  • Strumento APIValidator: è possibile usare lo strumento ApiValidator.exe per verificare che le API chiamate al driver siano valide per un driver di Windows universale. Questo strumento fa parte di Windows Driver Kit (WDK) per Windows 10 e viene eseguito automaticamente se si usa Visual Studio 2015. Per altre informazioni, vedere APIValidator.

  • Documentazione di riferimento DDI: la documentazione di riferimento DDI viene aggiornata per indicare quali DDI sono supportate dai driver di Windows universali. Per altre informazioni, vedere Informazioni di riferimento sui dispositivi audio.

Creare un driver audio universale

Per istruzioni dettagliate, vedere la documentazione per sviluppatori di hardware Windows e La creazione di un driver con WDK. Di seguito viene presentato un riepilogo dei passaggi:

  1. Caricare l'esempio sysvad audio universale da usare come punto di partenza per il driver audio universale. In alternativa, iniziare con il modello di driver WDM vuoto e aggiungere codice dall'esempio sysvad universale in base alle esigenze per il driver audio.

  2. Nelle proprietà del progetto impostare Piattaforma di destinazione su "Universale".

  3. Crea un pacchetto di installazione: se la destinazione è il dispositivo che esegue Windows 10 per le edizioni desktop (Home, Pro, Enterprise ed Education), usa un file INF universale. Se la destinazione è un dispositivo che esegue Windows 10 Mobile, usare PkgGen per generare un file con estensione spkg.

  4. Compilare, installare, distribuire ed eseguire il debug del driver per Windows 10 per le edizioni desktop o Windows 10 Mobile.

Codice di esempio

Sysvad e SwapAPO sono stati convertiti in esempi di driver di Windows universale. Per altre informazioni, vedere Driver audio di esempio.

Interfacce di programmazione disponibili per i driver di Windows universali per Audio

A partire da Windows 10, le interfacce di programmazione dei driver fanno parte delle edizioni basate su OneCoreUAP di Windows. Usando tale set comune, è possibile scrivere un driver di Windows universale. Questi driver verranno eseguiti sia in Windows 10 per le edizioni desktop che in Windows 10 Mobile e in altre versioni di Windows 10.

Quando si utilizzano driver audio universali, sono disponibili le DDI seguenti.

Convertire un driver audio esistente in un driver di Windows universale

Seguire questo processo per convertire un driver audio esistente in un driver di Windows universale.

  1. Determinare se le chiamate di driver esistenti verranno eseguite in Windows OneCoreUAP. Controllare la sezione dei requisiti delle pagine di riferimento. Per altre informazioni, vedere Informazioni di riferimento sui dispositivi audio.

  2. Ricompilare il driver come driver di Windows universale. Nelle proprietà del progetto impostare Piattaforma di destinazione su "Universale".

  3. Usa lo strumento ApiValidator.exe per verificare che le DDI che le chiamate driver siano valide per un driver di Windows universale. Questo strumento fa parte di Windows Driver Kit (WDK) per Windows 10 e viene eseguito automaticamente se si usa Visual Studio 2015. Per altre informazioni, vedere APIValidator.

  4. Se il driver chiama interfacce che non fanno parte di OneCoreUAP, il compilatore segnala errori.

  5. Sostituire tali chiamate con chiamate alternative oppure creare una soluzione alternativa al codice oppure scrivere un nuovo driver.

Creazione di un'installazione di driver audio componenti

Panoramica

Per creare un'esperienza di installazione più fluida e più affidabile e per supportare meglio la manutenzione dei componenti, dividere il processo di installazione del driver nei componenti seguenti.

  • DSP (se presente) e Codec
  • APO
  • Personalizzazioni OEM

Facoltativamente, è possibile usare file INF separati per DSP e Codec.

Questo diagramma riepiloga un'installazione audio componentizzata.

Diagramma dello stack audio componentizzato con driver, codec e API DSP.

Un file INF di estensione separato viene usato per personalizzare ogni componente driver di base per un particolare sistema. Le personalizzazioni includono parametri di ottimizzazione e altre impostazioni specifiche del sistema. Per altre informazioni, vedere Uso di un file INF di estensione.

Un file INF di estensione deve essere un file INF universale. Per altre informazioni, vedere Uso di un file INF universale.

Per informazioni sull'aggiunta di software tramite file INF, vedere Uso di un file INF componente e principi di progettazione DCH e procedure consigliate.

Invio di file INF componenti

I pacchetti APO INF devono essere inviati al Centro per i partner separatamente dal pacchetto driver di base. Per altre informazioni sulla creazione di pacchetti, vedere Introduzione a Windows HLK.

File INF con componenti SYSVAD

Per un esempio di file INF componentizzati, esaminare sysvad/TabletAudioSample in GitHub.

File name Descrizione
ComponentizedAudioSample.inf File INF audio in formato componente di base.
ComponentizedAudioSampleExtension.inf Driver di estensione per la base sysvad con personalizzazioni OEM aggiuntive.
ComponentizedApoSample.inf Un file INF di estensione di esempio APO.

I file INF tradizionali continuano a essere disponibili nell'esempio SYSVAD.

File name Descrizione
tabletaudiosample.inf Un file INF monolitico desktop che contiene tutte le informazioni necessarie per installare il driver.

Parametri di ottimizzazione specifici del fornitore APO e configurazione delle funzionalità

È necessario installare tutte le impostazioni, i parametri e i valori di ottimizzazione specifici del sistema APO tramite un pacchetto INF di estensione. In molti casi, questa operazione può essere eseguita in modo semplice con la direttiva INF AddReg. In casi più complessi, è possibile usare un file di ottimizzazione. 

I pacchetti driver di base non devono dipendere da queste personalizzazioni per funzionare (anche se naturalmente la funzionalità può essere ridotta). 

APP delle impostazioni audio UWP

Per implementare un'interfaccia utente finale, usa un'app HSA (Hardware Support App) per un driver audio universale di Windows. Per altre informazioni, vedere Hardware Support App (HSA): Steps for Driver Developers (Procedura per sviluppatori di driver).

Avvio a livello di codice delle app di supporto hardware UWP

Per avviare a livello di codice un'app di supporto hardware UWP, in base a un evento driver (ad esempio, quando un nuovo dispositivo audio è connesso), usa le API della shell di Windows. Le API della shell di Windows 10 supportano un metodo per l'avvio dell'interfaccia utente UWP in base all'attivazione delle risorse o direttamente tramite IApplicationActivationManager. Puoi trovare altri dettagli sull'avvio automatizzato per le applicazioni UWP in Automatizzare l'avvio di app UWP di Windows 10. 

Uso dell'API AudioModules da parte del fornitore di driver di dispositivo e APO

L'API moduli audio/DDI è progettata per standardizzare il trasporto di comunicazione (ma non il protocollo) per i comandi passati tra un'applicazione UWP o un servizio in modalità utente a un modulo driver kernel o un blocco di elaborazione DSP. I moduli audio richiedono un driver che implementa la DDI corretta per supportare l'enumerazione e la comunicazione del modulo. I comandi vengono passati come binario e interpretazione/definizione vengono lasciati all'autore. 

I moduli audio non sono attualmente progettati per facilitare la comunicazione diretta tra un'app UWP e un APO SW in esecuzione nel motore audio.

Per altre informazioni sui moduli audio, vedere Implementazione di moduli audio di comunicazione e configurazione ed esecuzione di query sui moduli di dispositivo audio.

Costruzione di stringhe APO HWID

Gli ID hardware APO includono sia le informazioni standard che le stringhe definite dal fornitore.

Vengono costruiti come segue:

SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4) &REV_r(4)
SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4)
SWC\VEN_v(4)&AID_a(4)

Dove:

  • v(4) è l'identificatore a 4 caratteri per il fornitore del dispositivo APO. Questo verrà gestito da Microsoft. 
  • a(4) è l'identificatore a 4 caratteri per l'APO, definito dal fornitore dell'APO. 
  • n(4) è l'identificatore assegnato da PCI SIG a 4 caratteri per il fornitore del sottosistema per il dispositivo padre. Si tratta in genere dell'identificatore OEM.
  • s(4) è l'identificatore del sottosistema a 4 caratteri definito dal fornitore per il dispositivo padre. Si tratta in genere dell'identificatore del prodotto OEM.

Plug and Play INF versione e valutazione della data per l'aggiornamento del driver

Il sistema Plug and Play di Windows valuta la data e la versione del driver per determinare quale unità installare quando esistono più driver. Per altre informazioni, vedere Modalità di classificazione dei driver di Windows.

Per consentire l'uso del driver più recente, assicurarsi e aggiornare la data e la versione per ogni nuova versione del driver.

Chiave del Registro di sistema del driver APO

Per le chiavi del Registro di sistema audio/APO definite da terze parti, usare HKR.

Usare un servizio Windows per facilitare la comunicazione UWP <-> APO

Un servizio Windows non è strettamente necessario per la gestione di componenti in modalità utente come le API. Tuttavia, se la progettazione include un server RPC per facilitare la comunicazione UWP <-> APO, ti consigliamo di implementare tale funzionalità in un servizio Windows che controlla l'APO in esecuzione nel motore audio. 

Compilazione dell'esempio di audio universale Sysvad per Windows 10 Desktop

Completare i passaggi seguenti per compilare l'esempio sysvad per Windows 10 Desktop.

  1. Individuare il file inf desktop (tabletaudiosample.inf) e impostare il nome del produttore su un valore come "Contoso"

  2. In Esplora soluzioni selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) Soluzione 'sysvad' e scegliere Configuration Manager. Se si esegue la distribuzione in una versione a 64 bit di Windows, impostare la piattaforma di destinazione su x64. Assicurarsi che le impostazioni di configurazione e piattaforma siano uguali per tutti i progetti.

  3. Compilare tutti i progetti nella soluzione sysvad.

  4. Individuare la directory di output per la compilazione dalla compilazione. Ad esempio, potrebbe trovarsi in una directory simile alla seguente:

    C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
    
  5. Copiare i file seguenti nel sistema che si vuole installare il driver sysvad:

File Descrizione
TabletAudioSample.sys File del driver.
tabletaudiosample.inf File di informazioni (INF) che contiene le informazioni necessarie per installare il driver.
sysvad.cat File di catalogo.
SwapAPO.dll Estensione del driver di esempio per un'interfaccia utente per gestire le API.
KeywordDetectorAdapter.dll Rilevatore di parole chiave di esempio.

Installare e testare il driver

Seguire questa procedura per installare il driver usando PnpUtil nel sistema di destinazione.

  1. Aprire il prompt dei comandi e amministratore e digitare quanto segue nella directory in cui sono stati copiati i file del driver.

    pnputil -i -a tabletaudiosample.inf

  2. L'installazione del driver sysvad deve essere completata. Se sono presenti errori, è possibile esaminare questo file per ulteriori informazioni: %windir%\inf\setupapi.dev.log

  3. In Gestione dispositivi scegliere Dispositivi per tipo dal menu Visualizza. Nell'albero dei dispositivi individuare Microsoft Virtual Audio Device (WDM) - Esempio sysvad. Si trova in genere sotto il nodo Controller audio, video e gioco.

  4. Nel computer di destinazione aprire Pannello di controllo e passare a Hardware e suono>Gestisci dispositivi audio. Nella finestra di dialogo Suono selezionare l'icona dell'altoparlante etichettata come Dispositivo audio virtuale Microsoft (WDM) - Esempio sysvad, quindi selezionare Imposta valore predefinito, ma non selezionare OK. In questo modo verrà aperta la finestra di dialogo Suono.

  5. Individuare un file MP3 o un altro file audio nel computer di destinazione e fare doppio clic per riprodurlo. Quindi, nella finestra di dialogo Suono verificare che sia presente un'attività nell'indicatore del livello di volume associato al driver di esempio Sysvad (Virtual Audio Device) Di Microsoft Virtual Audio Device (WDM).