Freigeben über


Lernprogramm: Schreiben eines universellen Windows-Treibers (UMDF 2) basierend auf einer Vorlage

In diesem Thema wird beschrieben, wie Sie einen universellen Windows-Treiber mit User-Mode Driver Framework (UMDF) 2 schreiben. Sie beginnen mit einer Microsoft Visual Studio-Vorlage und stellen dann Ihren Treiber auf einem separaten Computer bereit und installieren sie.

Voraussetzungen

  • Führen Sie die Schritte zum Installieren Windows Driver Kit (WDK)aus. Debugging Tools for Windows ist enthalten, wenn Sie den WDK installieren.

  • Installieren Sie Visual Studio 2022-. Wenn Sie Visual Studio 2022 installieren, wählen Sie die Desktopentwicklung mit C++ Workload aus und fügen Sie dann unter Einzelne Komponenten hinzu:

    • MSVC v143: C++-Bibliotheken mit Spectre-Entschärfungen für ARM64/ARM64EC in VS 2022 (neueste Version)
    • MSVC v143 – C++-Bibliotheken mit Spectre-Entschärfungen für x64/x86 in VS 2022 (neueste Version)
    • C++-ATL für die neuesten v143-Buildtools mit Spectre-Entschärfungen (ARM64/ARM64EC)
    • C++ ATL für die neuesten v143-Build-Tools mit Spectre-Schutzmaßnahmen (x86 & x64)
    • C++ MFC für die neuesten v143-Buildtools mit Spectre Mitigations (ARM64/ARM64EC)
    • C++ MFC für neueste v143-Buildtools mit Spectre Mitigations (x86 & x64)
    • Windows Driver Kit

Erstellen und Entwickeln eines Treibers

Anmerkung

Wenn Sie einen neuen KMDF- oder UMDF-Treiber erstellen, müssen Sie einen Treibernamen mit 32 Zeichen oder weniger auswählen. Dieser Längengrenzwert wird in wdfglobals.h definiert.

  1. Öffnen Sie Visual Studio. Wählen Sie im Menü Datei Neues >Projekt.

  2. Wählen Sie im Dialogfeld Erstellen eines neuen Projekts im linken Dropdownmenü C++- aus, wählen Sie Windows in der mittleren Dropdownliste und dann Treiber- in der rechten Dropdownliste aus.

  3. Wählen Sie Benutzermodustreiber (UMDF V2) aus der Liste der Projekttypen aus. Wählen Sie Weiter aus.

    Screenshot des dialogfelds

    Tipp

    Wenn Sie in Visual Studio keine Treiberprojektvorlagen finden können, wurde die WDK Visual Studio-Erweiterung nicht ordnungsgemäß installiert. Um dies zu beheben, starten Sie Visual Studio Installer, wählen Sie Modifizieren, fügen Sie Windows Driver Kits auf der Registerkarte Einzelne Komponente hinzu, und wählen Sie Modifizierenaus.

  4. Geben Sie im Dialogfeld Konfigurieren des neuen Projekts "UmdfDriver" in das Feld Projektnamen-Feld ein.

    Anmerkung

    Wenn Sie einen neuen KMDF- oder UMDF-Treiber erstellen, müssen Sie einen Treibernamen mit 32 Zeichen oder weniger auswählen. Dieser Längengrenzwert wird in wdfglobals.h definiert.  

  5. Geben Sie im Feld Speicherort das Verzeichnis ein, in dem Sie das neue Projekt erstellen möchten.

  6. Markieren Sie Lösung und Projekt in dasselbe Verzeichnis legen und wählen Sie Erstellen.

    Screenshot des Dialogfelds

    Visual Studio erstellt ein Projekt und eine Projektmappe. Diese werden im Fenster Projektmappen-Explorer angezeigt. (Wenn das Fenster Projektmappen-Explorer nicht sichtbar ist, wählen Sie Projektmappen-Explorer aus dem Menü Ansicht aus.) Die Lösung verfügt über ein Treiberprojekt namens UmdfDriver. Um den Treiberquellcode anzuzeigen, öffnen Sie eine der Dateien unter Quelldateien. Driver.c und Device.c sind gute Ausgangspunkte.

    Screenshot des Lösungs-Explorers mit den Dateien im Treiberprojekt.

  7. Wählen Sie im Fenster des Projektmappen-Explorers Solution 'UmdfDriver' (Projekt 1 von 1) aus und halten Sie die Taste gedrückt (oder klicken Sie mit der rechten Maustaste darauf), und wählen Sie dann Konfigurations-Manager aus. Wählen Sie eine Konfiguration und Plattform für das Treiberprojekt aus. Wählen Sie beispielsweise Debug- und x64-aus.

  8. Wählen Sie im Fenster des Projektmappen-Explorers UmdfDriver aus und halten Sie die Taste gedrückt (oder klicken Sie mit der rechten Maustaste darauf), und wählen Sie dann Eigenschaften aus. Navigieren Sie zu Konfigurationseigenschaften > Treibereinstellungen > Allgemein, und beachten Sie, dass Zielplattform standardmäßig Universal ist.

  9. Um Ihren Treiber zu erstellen, wählen Sie im Menü Erstellen die Option Lösung erstellen aus. Microsoft Visual Studio zeigt im Ausgabe-Fenster den den Buildstatus an. (Wenn das Ausgabefenster nicht sichtbar ist, wählen Sie Ausgabe aus dem Menü Ansicht.)

    Stellen Sie sicher, dass das Build-Ergebnis Folgendes umfasst:

    >    Driver is 'Universal'.
    

    Wenn Sie überprüft haben, dass die Lösung erfolgreich gebaut wurde, können Sie Visual Studio schließen.

  10. Um den erstellten Treiber im Datei-Explorer anzuzeigen, wechseln Sie zu Ihrem UmdfDriver Ordner und dann zu x64\Debug\UmdfDriver. Das Verzeichnis enthält die folgenden Dateien:

    • UmdfDriver.dll – die Benutzermodustreiberdatei
    • UmdfDriver.inf – eine Informationsdatei, die Windows beim Installieren des Treibers verwendet

Bereitstellen und Installieren des universellen Windows-Treibers

Wenn Sie einen Treiber in der Regel testen und debuggen, wird der Debugger und der Treiber auf separaten Computern ausgeführt. Der Computer, auf dem der Debugger ausgeführt wird, wird als Hostcomputerbezeichnet, und der Computer, auf dem der Treiber ausgeführt wird, wird als Zielcomputerbezeichnet. Der Zielcomputer wird auch als Testcomputerbezeichnet.

Wichtig

Bisher haben Sie Visual Studio zum Erstellen eines Treibers auf dem Hostcomputer verwendet. Jetzt müssen Sie einen Zielcomputer konfigurieren. Folgen Sie den Anweisungen in Bereitstellen eines Computers für die Treiberbereitstellung und -tests (WDK 10). Daraufhin können Sie den Treiber bereitstellen, installieren, laden und debuggen.

  1. Öffnen Sie auf dem Host-Computer Ihre Lösung in Visual Studio. Sie können in Ihrem UmdfDriver-Ordner auf die Lösungsdatei UmdfDriver.sln doppelklicken.

  2. Wählen Sie im Fenster des Projektmappen-Explorers UmdfDriver aus und halten Sie die Taste gedrückt (oder klicken Sie mit der rechten Maustaste darauf), und wählen Sie dann Eigenschaften aus.

  3. Gehen Sie im Fenster UmdfDriver-Eigenschaftsseiten zu Konfigurationseigenschaften > Treiberinstallation > Bereitstellung, wie hier gezeigt.

  4. Prüfen Sie . Entfernen Sie vorherige Treiberversionen vor der Bereitstellung.

  5. Wählen Sie für Zielgerätenameden Namen des Computers aus, den Sie zum Testen und Debuggen konfiguriert haben.

  6. Wählen Sie Hardware-ID-Treiberupdateaus, und geben Sie die Hardware-ID für Ihren Treiber ein. In dieser Übung ist die Hardware-ID "Root\UmdfDriver". Wählen Sie OKaus.

    Screenshot der UMDFDRIVER-Eigenschaftenseiten, auf denen die Installation des Treibers für die Bereitstellung ausgewählt ist

    Hinweis In dieser Übung identifiziert die Hardware-ID keine echte Hardware. Sie identifiziert ein imaginäres Gerät, das als untergeordneter Knoten des Root-Knotens einen Platz im Gerätebaum erhalten wird. Wählen Sie für echte Hardware nicht Hardware-ID-Treiberupdateaus; Wählen Sie stattdessen Installieren undüberprüfen aus. Die Hardware-ID wird in der INF-Datei (Driver's Information) angezeigt. Navigieren Sie im Fenster des Projektmappen-Explorers zu UmdfDriver > Treiberdateien und doppelklicken Sie auf „UmdfDriver.inf“. Die Hardware-ID befindet sich unter [Standard.NT$ARCH$].

    [Standard.NT$ARCH$]
    %DeviceName%=MyDevice_Install,Root\UmdfDriver
    
  7. Wählen Sie im Menü Debuggen die Option Debuggen starten oder drücken Sie F5 auf der Tastatur.

  8. Warten Sie, bis Ihr Treiber bereitgestellt, installiert und auf dem Zielcomputer geladen wurde. Dies kann mehrere Minuten dauern.

Verwendung des Driver Module Framework (DMF)

Das Driver Module Framework (DMF) ist eine Erweiterung für WDF, die zusätzliche Funktionen für einen WDF-Treiberentwickler ermöglicht. Es hilft Entwicklern, jeden Typ von WDF-Treibern besser und schneller zu schreiben.

DMF als Framework ermöglicht die Erstellung von WDF-Objekten namens DMF Modules. Der Code für diese DMF-Module kann zwischen verschiedenen Treibern gemeinsam verwendet werden. Darüber hinaus bündelt DMF eine Bibliothek von DMF-Modulen, die wir für unsere Treiber entwickelt haben und von denen wir glauben, dass sie anderen Treiberentwicklern einen Mehrwert bieten könnten.

DMF ersetzt WDF nicht. DMF ist ein zweites Framework, das mit WDF verwendet wird. Der Entwickler, der DMF nutzt, verwendet weiterhin WDF und alle grundtypen zum Schreiben von Gerätetreibern.

Weitere Informationen finden Sie unter Driver Module Framework (DMF).

Entwickeln, Testen und Bereitstellen von Treibern

Debuggingtools für Windows

Schreiben Ihres ersten Treibers