Condividi tramite


Driver universali di Windows per il sistema 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 documentazione per sviluppatori di hardware Windows e 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 documentazione per gli sviluppatori di hardware Windows e Creazione di un driver con wdk. Ecco un riepilogo dei passaggi:

  1. Carica l'esempio universale del driver audio sysvad per 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 la 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. Ricompila il driver come un driver di Windows universale. Nelle proprietà del progetto, imposta la piattaforma di destinazione su "Universale".

  3. Usa lo strumento ApiValidator.exe per verificare che le DDI chiamate dal driver siano valide per un driver Universale Windows. 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 modulare

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 il 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 di estensione INF.

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 "Using a Component INF File" e "DCH Design Principles and Best Practices".

Invio di file INF componentizzati

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 i sysvad/TabletAudioSample, su GitHub.

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

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

Nome file 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 AddReg in INF. 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.

Avvio programmabile 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 shell di Windows 10 supportano un metodo per avviare l'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 di APO e del fornitore di driver del dispositivo.

L'API moduli audio/DDI è progettata per standardizzare il trasporto della comunicazione (ma non il protocollo) per i comandi passati tra un'applicazione UWP o un servizio in modalità utente e un modulo di driver del 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 l'interpretazione e la definizione sono lasciate 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 ulteriori informazioni sui moduli audio, vedere Implementazione della Comunicazione del Modulo Audio e Configurare e interrogare i moduli dei dispositivi audio.

Costruzione delle stringhe HWID APO

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 di aggiornare la data e la versione per ogni nuova versione del driver.

Chiave del Registro di sistema del driver APO

Per le chiavi di registro audio/APO definite da terze parti, usare HKR.

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

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 universale di audio Sysvad per Windows 10 Desktop

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

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

  2. In Esplora Soluzioni, selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) 'sysvad', e scegliere Gestione configurazione. 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. Individua la cartella di destinazione della build. 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:

Documento Descrizione
TabletAudioSample.sys File del driver.
tabletaudiosample.inf File di informazioni (INF) che contiene le informazioni necessarie per installare il driver.
sysvad.cat Il 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 il PnpUtil nel sistema di destinazione.

  1. Aprire il prompt dei comandi come amministratore e immettere 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>Gestire i dispositivi audio. Nella finestra di dialogo Suono, seleziona l'icona dell'altoparlante etichettata come Dispositivo audio virtuale Microsoft (WDM) - Sysvad Sample, quindi seleziona Imposta come predefinito, ma non selezionare OK. In questo modo la finestra di dialogo Suono resterà aperta.

  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 ci sia attività nell'indicatore del livello di volume associato al driver di esempio Sysvad del dispositivo audio virtuale Microsoft (WDM).