Självstudie: Skriva en Universell Windows-drivrutin (UMDF 2) baserat på en mall

Den här artikeln beskriver hur du skriver en Universell Windows-drivrutin med hjälp av User-Mode Driver Framework (UMDF) 2. Du börjar med en Microsoft Visual Studio-mall och distribuerar och installerar sedan drivrutinen på en separat dator.

Förutsättningar

  • Följ stegen för att installera Windows Driver Kit (WDK). Felsökningsverktyg för Windows ingår när du installerar WDK.

  • Installera Visual Studio 2022. När du installerar Visual Studio 2022 väljer du Desktop-utveckling med C++ arbetsflöde, sedan under enskilda komponenter lägger till:

    • MSVC v143 – VS 2022 C++ ARM64/ARM64EC Spectre-säkrade bibliotek (senaste)
    • MSVC v143 – VS 2022 C++ x64/x86 Spectre-säkra bibliotek (senaste)
    • C++ ATL för de senaste v143-byggverktygen med Spectre Mitigations (ARM64/ARM64EC)
    • C++ ATL för de senaste v143-byggverktygen med Spectre Mitigations (x86 & x64)
    • C++ MFC för de senaste v143-byggverktygen med Spectre Mitigations (ARM64/ARM64EC)
    • C++ MFC för de senaste v143-byggverktygen med Spectre Mitigations (x86 & x64)
    • Windows Driver Kit

Skapa och bygg en drivrutin

Anteckning

När du skapar en ny KMDF- eller UMDF-drivrutin måste du välja ett drivrutinsnamn med högst 32 tecken. Den här längdgränsen definieras i wdfglobals.h.

  1. Öppna Visual Studio. På menyn Arkiv väljer du nytt > Projekt.

  2. I dialogrutan Skapa ett nytt projekt väljer du C++ i den vänstra listrutan, väljer Windows i den mellersta listrutan och väljer Driver i den högra listrutan.

  3. Välj användarlägesdrivrutin (UMDF V2) i listan över projekttyper. Välj Nästa.

    Skärmbild av projektets dialogruta, som visar drivrutin markerad för användarläge.

    Tips

    Om du inte hittar drivrutinsprojektmallar i Visual Studio installerades inte WDK Visual Studio-tillägget korrekt. Lös problemet genom att starta Visual Studio Installer, välja Ändra, lägga till Windows Driver Kits på fliken enskild komponent och välj Ändra.

  4. I dialogrutan Konfigurera ditt nya projekt anger du "UmdfDriver" i fältet Projektnamn.

    Anteckning

    När du skapar en ny KMDF- eller UMDF-drivrutin måste du välja ett drivrutinsnamn med högst 32 tecken. Den här längdgränsen definieras i wdfglobals.h.  

  5. I fältet Plats anger du katalogen där du vill skapa det nya projektet.

  6. Kontrollera Placera lösning och projekt i samma katalog och välj Skapa.

    Skärmbild av dialogrutan projektkonfiguration.

    Visual Studio skapar ett projekt och en lösning. Du kan se dem i fönstret Solution Explorer. (Om Solution Explorer-fönstret inte är synligt väljer du Solution Explorer på menyn Visa .) Lösningen har ett drivrutinsprojekt med namnet UmdfDriver. Om du vill se drivrutins källkoden öppnar du någon av filerna under Källfiler. Driver.c och Device.c är bra platser att börja på.

    Skärmbild av Solution Explorer som visar filerna i drivrutinsprojektet.

  7. I fönstret Solution Explorer väljer du och håller (eller högerklickar) Lösning "UmdfDriver" (1 av 1 projekt)och väljer Configuration Manager. Välj en konfiguration och plattform för drivrutinsprojektet. Välj till exempel Felsök och x64.

  8. I fönstret Solution Explorer väljer du och håller (eller högerklickar) UmdfDriveroch väljer Egenskaper. Gå till Konfigurationsegenskaper > Drivrutinsinställningar > Allmännaoch observera att Målplattform har standardvärdet Universal.

  9. Skapa drivrutinen genom att välja Build Solution på menyn Build. Microsoft Visual Studio visar byggprocessen i fönstret Utdata. (Om utdatafönstret inte visas väljer du Utdata på menyn Visa .)

    Kontrollera att byggutdata innehåller:

    >    Driver is 'Universal'.
    

    När du kontrollerar att lösningen har skapats kan du stänga Visual Studio.

  10. Om du vill se den inbyggda drivrutinen går du till mappen UmdfDriver i Utforskaren och sedan till x64\Debug\UmdfDriver. Katalogen innehåller följande filer:

    • UmdfDriver.dll– drivrutinsfilen i användarläge
    • UmdfDriver.inf – en informationsfil som Windows använder när du installerar drivrutinen

Distribuera och installera Universal Windows-drivrutinen

Vanligtvis när du testar och felsöker en drivrutin körs felsökningsprogrammet och drivrutinen på separata datorer. Datorn som kör felsökningsprogrammet kallas värddatoroch den dator som kör drivrutinen kallas måldator. Måldatorn kallas även testdator.

Viktig

Hittills har du använt Visual Studio för att skapa en drivrutin på värddatorn. Nu måste du konfigurera en måldator. Följ anvisningarna i Etablera en dator för drivrutinsdistribution och -testning (WDK 10). Sedan är du redo att distribuera, installera, läsa in och felsöka drivrutinen.

  1. Öppna lösningen i Visual Studio på värddatorn. Du kan dubbelklicka på lösningsfilen UmdfDriver.sln i mappen UmdfDriver.

  2. I fönstret Solution Explorer väljer du och håller (eller högerklickar) UmdfDriveroch väljer Egenskaper.

  3. I fönstret UmdfDriver-egenskapssidor går du till Konfigurationsegenskaper > Drivrutinsinstallation > Distribution, som du ser här.

  4. Kontrollera Ta bort tidigare drivrutinsversioner innan distributionen.

  5. För Målenhetsnamnväljer du namnet på den dator som du konfigurerade för testning och felsökning.

  6. Välj Uppdatering av maskinvaru-ID-drivrutinoch ange maskinvaru-ID för drivrutinen. I den här övningen är maskinvaru-ID:t Root\UmdfDriver. Välj OK.

    skärmbild av UMDF Driver-egenskapssidorna som visar att installation av distributionsdrivrutinen har valts

    Anteckning

    I den här övningen identifierar maskinvaru-ID:t inte någon riktig maskinvara. Den identifierar en imaginär enhet som ges en plats i enhetsträdet som ett barn av rotnoden. För verklig maskinvara väljer du inte Uppdatering av maskinvaru-ID-drivrutin. i stället väljer du Installera och verifiera. Du kan se maskinvaru-ID:t i inf-filen (drivrutinsinformation). I fönstret Solution Explorer går du till UmdfDriver > Driver Filesoch dubbelklickar på UmdfDriver.inf. Maskinvaru-ID:t finns under [Standard.NT$ARCH$].

    [Standard.NT$ARCH$]
    %DeviceName%=MyDevice_Install,Root\UmdfDriver
    
  7. På menyn Felsökning väljer du Starta felsökningeller trycker på F5 på tangentbordet.

  8. Vänta tills drivrutinen har distribuerats, installerats och lästs in på måldatorn. Det kan ta flera minuter.

Att använda Driver Module Framework (DMF)

Driver Module Framework (DMF) är ett tillägg till WDF som möjliggör extra funktioner för en WDF-drivrutinsutvecklare. Det hjälper utvecklare att skriva alla typer av WDF-drivrutin bättre och snabbare.

Med DMF som ramverk kan du skapa WDF-objekt som kallas DMF-moduler. Koden för dessa DMF-moduler kan delas mellan olika drivrutiner. Dessutom paketar DMF ett bibliotek med DMF-moduler som vi har utvecklat för våra drivrutiner och som vi anser skulle ge värde till andra drivrutinsutvecklare.

DMF ersätter inte WDF. DMF är ett andra ramverk som används med WDF. Utvecklaren som använder DMF använder fortfarande WDF och alla dess primitiver för att skriva enhetsdrivrutiner.

Mer information finns i Driver Module Framework (DMF).