Condividi tramite


Esercitazione: Scrivere un driver di Windows universale (UMDF 2) basato su un modello

Questo argomento descrive come scrivere un driver di Windows universale usando User-Mode Driver Framework (UMDF) 2. Si inizierà con un modello di Microsoft Visual Studio e quindi si distribuirà e installerà il driver in un computer separato.

Prerequisiti

  • Seguire la procedura per installare Windows Driver Kit (WDK). Strumenti di debug per Windows viene incluso quando si installa WDK.

  • Installare Visual Studio 2022. Quando si installa Visual Studio 2022, selezionare il workload Desktop development con C++ e quindi in Singoli Componenti aggiungere:

    • MSVC v143 - VS 2022 C++ ARM64/ARM64EC librerie con mitigazione di Spectre (più recente)
    • MSVC v143 - VS 2022 C++ x64/x86 librerie con mitigazione Spectre (più recente)
    • C++ ATL per la versione più recente degli strumenti di compilazione v143 con mitigazioni Spectre (ARM64/ARM64EC)
    • ATL C++ per gli strumenti di compilazione v143 più recenti con mitigazioni Spectre (x86 & x64)
    • MFC C++ per gli strumenti di compilazione v143 più recenti con mitigazioni Spectre (ARM64/ARM64EC)
    • MFC C++ per gli strumenti di compilazione v143 più recenti con mitigazioni Spectre (x86 & x64)
    • Windows Driver Kit

Creare e compilare un driver

Nota

Quando si crea un nuovo driver KMDF o UMDF, è necessario selezionare un nome di driver con al massimo 32 caratteri. Questo limite di lunghezza è definito in wdfglobals.h.

  1. Apri Visual Studio. Nel menu File scegliere Nuovo > Progetto.

  2. Nella finestra di dialogo Crea un nuovo progetto selezionare C++ nell'elenco a discesa a sinistra, scegliere Windows nell'elenco a discesa centrale e scegliere Driver nell'elenco a discesa a destra.

  3. Selezionare driver in modalità utente (UMDF V2) dall'elenco dei tipi di progetto. Selezionare Avanti.

    screenshot della finestra di dialogo del nuovo progetto, che mostra il driver in modalità utente selezionato.

    Suggerimento

    Se non è possibile trovare modelli di progetto driver in Visual Studio, l'estensione WDK di Visual Studio non è stata installata correttamente. Per risolvere questo problema, avviare programma di installazione di Visual Studio, selezionare Modifica, aggiungere Windows Driver Kits nella scheda singolo componente e selezionare Modifica.

  4. Nella finestra di dialogo Configura il nuovo progetto immettere "UmdfDriver" nel campo nome progetto.

    Nota

    Quando si crea un nuovo driver KMDF o UMDF, è necessario selezionare un nome di driver con al massimo 32 caratteri. Questo limite di lunghezza è definito in wdfglobals.h.  

  5. Nel campo Percorso immettere la directory in cui si vuole creare il nuovo progetto.

  6. Verificare Posizionare la soluzione e il progetto nella stessa directory e selezionare Crea.

    schermata della finestra di dialogo di configurazione del progetto.

    Visual Studio crea un progetto e una soluzione. È possibile visualizzarli nella finestra Esplora soluzioni. Se la finestra esplora soluzioni non è visibile, scegliere esplora soluzioni dal menu Visualizza . La soluzione ha un progetto driver denominato UmdfDriver. Per visualizzare il codice sorgente del driver, aprire uno dei file in File di origine. Driver.c e Device.c sono ottimi punti di partenza.

    Screenshot di Esplora Soluzioni che mostra i file del progetto driver.

  7. Nella finestra Esplora soluzioni, selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) la soluzione 'UmdfDriver' (1 di 1 progetto), e scegliere Gestione configurazione. Scegliere una configurazione e una piattaforma per il progetto driver. Ad esempio, scegliere Debug e x64.

  8. Nella finestra Esplora soluzioni, seleziona e tieni premuto (o fai clic con il pulsante destro del mouse) UmdfDriver, e scegli Proprietà . Passare a Proprietà di configurazione > Impostazioni driver > Generalee notare che la Piattaforma di Destinazione è impostata di default su Universale.

  9. Per compilare il driver, scegliere Compila soluzione dal menu Compila. Microsoft Visual Studio visualizza lo stato di avanzamento della compilazione nella finestra output. Se la finestra Output non è visibile, scegliere Output dal menu Visualizza.

    Verificare che l'output di compilazione includa:

    >    Driver is 'Universal'.
    

    Dopo aver verificato che la soluzione è stata compilata correttamente, è possibile chiudere Visual Studio.

  10. Per visualizzare il driver compilato, in Esplora file passare alla cartella UmdfDriver e quindi a x64\Debug\UmdfDriver. La directory include i file seguenti:

    • UmdfDriver.dll : file del driver in modalità utente
    • UmdfDriver.inf - un file di informazioni usato da Windows durante l'installazione del driver

Distribuire e installare il driver di Windows universale

In genere, quando si esegue il test e il debug di un driver, il debugger e il driver vengono eseguiti in computer separati. Il computer che esegue il debugger viene chiamato computer host e il computer che esegue il driver viene chiamato il computer di destinazione . Il computer di destinazione viene chiamato anche il computer di test .

Importante

Finora è stato usato Visual Studio per compilare un driver nel computer host. È ora necessario configurare un computer di destinazione. Seguire le istruzioni in Configurare un computer per la distribuzione e il test dei driver (WDK 10). Si sarà quindi pronti per distribuire, installare, caricare ed eseguire il debug del driver.

  1. Nel computer host aprire la soluzione in Visual Studio. È possibile fare doppio clic sul file della soluzione, UmdfDriver.sln, nella cartella UmdfDriver.

  2. Nella finestra Esplora soluzioni, seleziona e tieni premuto (o fai clic con il pulsante destro del mouse) UmdfDriver, e scegli Proprietà .

  3. Nella finestra delle pagine delle proprietà di UmdfDriver, passare a Proprietà di configurazione > Driver Install > Deployment, come illustrato di seguito.

  4. Controllare Rimuovere le versioni precedenti del driver prima della distribuzione.

  5. Per Nome dispositivo di destinazione, selezionare il nome del computer configurato per il collaudo e il debugging.

  6. Selezionare Aggiornamento Driver ID Hardwaree inserire l'ID hardware per il driver. In questo esercizio l'ID hardware è Root\UmdfDriver. Selezionare OK.

    schermata delle pagine delle proprietà di UMDFDriver, che mostra l'installazione selezionata del driver di distribuzione

    Nota In questo esercizio l'ID hardware non identifica un componente hardware reale. Identifica un dispositivo immaginario che verrà assegnato un posto nell'albero dei dispositivi come figlio del nodo radice. Per l'hardware reale, non selezionare Aggiorna driver ID hardware; seleziona invece Installa e verifica. È possibile visualizzare l'ID hardware nel file inF (Information) del driver. Nella finestra di Esplora Soluzioni, passare a UmdfDriver > File drivere fare doppio clic su UmdfDriver.inf. L'ID dell'hardware è in [Standard.NT$ARCH$].

    [Standard.NT$ARCH$]
    %DeviceName%=MyDevice_Install,Root\UmdfDriver
    
  7. Nel menu Debug scegliere Avvia debugoppure premere F5 sulla tastiera.

  8. Attendere che il driver sia stato distribuito, installato e caricato nel computer di destinazione. L'operazione potrebbe richiedere alcuni minuti.

Uso di Driver Module Framework (DMF)

Il DMF (Driver Module Framework) di è un'estensione di WDF che consente funzionalità aggiuntive per uno sviluppatore di driver WDF. Consente agli sviluppatori di scrivere qualsiasi tipo di driver WDF in modo migliore e veloce.

DMF come framework consente la creazione di oggetti WDF denominati moduli DMF. Il codice per questi moduli DMF può essere condiviso tra driver diversi. DMF aggrega inoltre una libreria di moduli DMF sviluppati per i driver e si ritiene che fornisca valore ad altri sviluppatori di driver.

DMF non sostituisce WDF. DMF è un secondo framework usato con WDF. Lo sviluppatore che usa DMF usa ancora WDF e tutte le sue primitive per scrivere driver di dispositivo.

Per altre informazioni, vedere Driver Module Framework (DMF).

Sviluppo, Test e Distribuzione di Driver

Strumenti di debug per Windows

Scrivi il tuo primo driver