Verwenden von Visual Studio oder MSBuild zum Erstellen von Treibern
Dieses Thema enthält Anweisungen zum Erstellen eines Treibers mithilfe der Visual Studio-Entwicklungsumgebung oder über die Befehlszeile mithilfe des Visual Studio-Eingabeaufforderungsfensters und der Microsoft Build-Engine (MSBuild).
Um Treiber für Windows zu erstellen, müssen Sie das SDK und WDK in Visual Studio installieren und die Treibereinstellungen konfigurieren. Stellen Sie sicher, dass die SDK- und WDK-Versionen auf Ihrem Computer übereinstimmen.
Erstellen eines Treibers mit Visual Studio
Sie erstellen einen Treiber auf die gleiche Weise wie Projekte oder Projektmappen in Visual Studio. Wenn Sie ein neues Treiberprojekt mithilfe einer Treibervorlage erstellen, definiert die Vorlage eine (aktive) Standardprojektkonfiguration und eine (aktive) Lösungsbuildkonfiguration.
Informationen zum Verwalten und Bearbeiten von Buildkonfigurationen finden Sie unter Generieren in Visual Studio.
KMDF-Treibereinstellungen
Um Treibereinstellungen in VS 2022 zu konfigurieren, klicken Sie mit der rechten Maustaste auf das Treiberprojekt, wählen Sie „Eigenschaften“ aus, und navigieren Sie zu Eigenschaften ->Konfigurationseigenschaften ->Treibereinstellungen.
Zielbetriebssystemversion
Die Zielbetriebssystemversion bezieht sich auf die Windows-Version, für die der Treiber entwickelt wird. Legen Sie die Zielbetriebssystemversion auf die niedrigste Version fest, die Ihr Treiber unterstützt. Beispielsweise sollte ein Treiber für Windows 10 Windows 10 und alle höheren Versionen unterstützen.
Befolgen Sie die Anleitungen in diesen Themen, um sicherzustellen, dass Ihr Treiberpaket ordnungsgemäß geschrieben ist, um mehrere Versionen von Windows zu unterstützen.
- Schreiben von Treibern für verschiedene Versionen von Windows
- Unterstützen mehrerer Betriebssystemversionen
Zielplattform
Es gibt drei Klassifizierungen für die Windows-Zielplattform, universelle Treiber, Desktoptreiber und Windows-Treiber.
Universelle Treiber weisen folgende Eigenschaften auf:
- Verwenden keine Co-Installer
- Sind konform mit den DCH-Entwurfsprinzipien. Siehe DCH-Entwurfsprinzipien, Prüflisten und bewährte Vorgehensweisen
- Erfolgreich
InfVerif /u
Desktoptreiber weisen folgende Eigenschaften auf:
- Erfüllen alle Anforderungen für universelle Treiber.
- Erfüllen die Anforderungen des Windows-Hardwarekompatibilitätsprogramms (WHCP)
- Erfolgreich
InfVerif /h
Weitere Informationen finden Sie unter InfVerif /h.
Treiber, die den Kriterien des Desktoptreibers entsprechen, sind Windows-Logo-zertifiziert und können dem Windows Update-Programm hinzugefügt werden.
Windows-Treiber weisen folgende Eigenschaften auf:
- Erfüllen alle Desktoptreiberanforderungen.
- Sind mit der Treiberpaketisolation vollständig konform.
- Erfolgreich
InfVerif /w
- Windows-Treiber ist die restriktivste Zielplattformauswahl und erfüllt alle Zuverlässigkeits- und Wartbarkeitsanforderungen.
In der folgenden Tabelle sind die Treiberklassifizierungen zusammengefasst.
Funktion | Universelle Treiber | Desktoptreiber | Windows-Treiber |
---|---|---|---|
Infverif Switch | InfVerif /u |
InfVerif /h |
InfVerif /w |
Aktuelle WHCP-Anforderung | No | Ja | No |
Unterstützt alle Varianten des Windows-Betriebssystems. | No | Nein | Ja |
X64/ARM64-Support | Ja | Ja | Ja |
APIVALIDATOR-Compliance erforderlich | No | Nein | Ja |
Desktopbetriebssystemunterstützung (Zielbetriebssystemversion) | Ja | Ja | Ja |
Unterstützung für GitHub-Treiberbeispiele | Ja | Ja | No |
Treiberkonfigurationen
Stellen Sie beim Erstellen von Treibern sicher, dass die Plattformarchitektur und NT_TARGET_VERSION in Visual Studio mit WDK oder EWDK ordnungsgemäß festgelegt sind. Die standardmäßige Lösungsbuildkonfiguration für die Entwicklung ist Debug und Win64.
- Wählen Sie die Projektmappe im Projektmappen-Explorer aus, und halten Sie sie gedrückt (oder klicken Sie mit der rechten Maustaste darauf), und wählen Sie Konfigurations-Manager aus.
- Wählen Sie im Konfigurations-Manager die aktive Lösungskonfiguration (z. B. Debug oder Version) und die aktive Lösungsplattform (z. B. Win64) aus, die dem gewünschten Build-Typ entsprechen.
- Wählen Sie das Projekt aus, und halten Sie es gedrückt (oder klicken Sie mit der rechten Maustaste darauf), und klicken Sie auf Eigenschaften. Wechseln Sie zu Treibereinstellungen ->Allgemein, und legen Sie Zielbetriebssystemversion und Zielplattform fest.
- Konfigurieren Sie die Projekteigenschaften für Ihren Treiber oder Ihr Treiberpaket. Sie können Eigenschaften für die Bereitstellung, Treibersignierung oder andere Aufgaben festlegen. Weitere Informationen finden Sie unter Konfigurieren von Projekteigenschaften für Ihren Treiber und Ihr Treiberpaket.
Erstellen eines Treibers
- Öffnen Sie das Treiberprojekt oder die Treiberlösung in Visual Studio.
- Wählen Sie im Menü Build die Option Lösung erstellen (Strg+Shift+B) aus.
- Zeigen Sie alle Kompilierungszeitfehler im Buildausgabefenster an.
Erstellen eines Treibers mithilfe der Befehlszeile (MSBuild)
Sie können einen Treiber über die Befehlszeile mit dem Fenster Visual Studio-Eingabeaufforderung und der Microsoft Build-Engine (MSBuild) erstellen.
Erstellen eines Treibers mithilfe des Visual Studio-Eingabeaufforderungsfensters
Öffnen Sie das Fenster Developer-Eingabeaufforderung für VS2022.
In diesem Fenster können Sie MSBuild.exe verwenden, um ein beliebiges Visual Studio-Projekt zu erstellen, indem Sie die Projektdatei (.vcxproj) oder Lösungen (.sln) angeben.
Navigieren Sie zum Projektverzeichnis, und geben Sie den MSBuild-Befehl für Ihr Ziel ein.
Um beispielsweise einen fehlerfreien Build eines Visual Studio-Treiberprojekts mit dem Namen MyDriver.vcxproj unter Verwendung der Standardplattform und -konfiguration auszuführen, wechseln Sie zum Projektverzeichnis, und geben Sie den folgenden MSBuild-Befehl ein:
msbuild /t:clean /t:build .\MyDriver.vcxproj
Verwenden Sie Folgendes, um eine bestimmte Konfiguration und Plattform anzugeben:
msbuild /t:clean /t:build ProjectFile /p:Configuration=<Debug|Release> /p:Platform=architecture /p:TargetPlatformVersion=a.b.c.d /p:TargetVersion=OS
Der folgende Befehl erstellt einen Treiber für die Konfiguration „Debug“, Win32-Plattform und Windows 10.
msbuild /t:clean /t:build .\MyDriver.vcxproj /p:Configuration="Debug" /p:Platform=Win32 /p:TargetVersion="Windows10" /p:TargetPlatformVersion="10.0.10010.0"
Die Einstellung TargetPlatformVersion ist optional und gibt die zu erstellende Kit-Version an. Der Standardwert ist die neueste Kit-Version.
Konfigurieren der Projekteigenschaften für Ihren Treiber und Ihr Treiberpaket
Verwenden Sie Eigenschaftenseiten, um Optionen für Ihren Treiber und Ihr Treiberpaket zu konfigurieren und festzulegen. Sie können den Treiber so konfigurieren, dass wenn Sie die Lösung erstellen, der Treiber automatisch signiert oder automatisch auf einem Remotetestcomputer bereitgestellt wird.
Sie können Eigenschaften für einen einzelnen Treiber oder für ein gesamtes Treiberpaket festlegen. Der folgende Abschnitt enthält einige der verfügbaren Eigenschaften, die Sie speziell für Treiber und Treiberpakete konfigurieren können.
Eigenschaften des Treiberprojekts
Eigenschaften der Treibermodelleinstellungen für Treiberprojekte
Signieren von Eigenschaften für einzelne Treiberdateien – Signieren eines Treibers
Zählermanifest-Präprozessoreigenschaften für Treiberprojekte
Treiberpaketeigenschaften
Signieren von Eigenschaften für Treiberpakete – Signieren eines Treibers
WDK-Befehlszeilentool–Projektintegration
Der WDK stellt eine Reihe von Befehlszeilentools bereit, die häufig im Buildprozess enthalten sind, z. B. Stampinf und WPP-Präprozessor (WPP-Ablaufverfolgung),. Diese Tools werden nicht mit Visual Studio verteilt. Um diese Tools mit der Visual Studio-Buildumgebung zu kombinieren, werden sie als WDK-Aufgaben für MSBuild umschlossen. Wenn Sie eine der Treibervorlagen verwenden oder einen vorhandenen Treiber konvertiert haben, sind diese Eigenschaftsseiten möglicherweise bereits für Ihr Projekt vorhanden. Andernfalls werden die Eigenschafsseiten Ihrem Projekt automatisch hinzugefügt, während Sie dem Projekt oder der Projektmappe die zugehörigen Dateitypen hinzufügen (z. B. MC- oder MAN-Dateien für den Nachrichtencompiler). Weitere Informationen finden Sie unter WDK und die Visual Studio-Buildumgebung.
Tipps zur Problembehandlung beim Erstellen eines Treibers
Zur Behebung von Buildproblemen können Sie die Ausführlichkeit der Buildausgabe in Visual Studio erhöhen:
- Wählen Sie Tools ->Optionen aus.
- Wählen Sie den Ordner Projekt und Lösungen und dann Erstellen und Ausführen aus.
- Wählen Sie die Optionen für die Ausführlichkeit der MSBuild-Projektbuildausgabe und Ausführlichkeit der MSBuild-Projektbuildprotokolldatei. Standardmäßig sind diese auf Minimal festgelegt.
Aktualisieren von Windows 8-Treibern
Sie können Projekte und Lösungen konvertieren, die Sie mit WDK 8 oder Windows Driver Kit (WDK) 8.1 erstellt haben, um mit Windows Driver Kit (WDK) 10 und Visual Studio zu arbeiten. Führen Sie vor dem Öffnen der Projekte oder Lösungen das ProjectUpgradeTool aus. Das ProjectUpgradeTool konvertiert die Projekte und Lösungen, sodass sie mit WDK 10 erstellt werden können.
Ab Windows Driver Kit (WDK) 8 ersetzt MSBuild das Windows Build Utility (Build.exe). Der WDK verwendet dieselben Compiler- und Buildtools, die Sie zum Erstellen von Visual Studio-Projekten verwenden. Treiberprojekte, die mit früheren Versionen von WDK erstellt wurden, müssen in die Visual Studio-Umgebung konvertiert werden. Sie können ein Konvertierungsprogramm über die Befehlszeile ausführen oder einen vorhandenen Treiber konvertieren, indem Sie ein neues Visual Studio-Projekt aus vorhandenen Quellen erstellen. Weitere Informationen finden Sie unter Erstellen eines Treibers aus vorhandenen Quelldateien und WDK und die Visual Studio-Buildumgebung.
Zugehörige Themen
- Erstellen in Visual Studio
- Erstellen von Treibern für verschiedene Windows-Versionen
- Verwenden der Microsoft C-Runtime mit Benutzermodustreibern und Desktop-Apps
- ProjectUpgradeTool
- MSBuild
- Erstellen eines Treibers aus vorhandenen Quelldateien
- WDK und die Visual Studio-Buildumgebung
- Signieren von Treibern
- Bereitstellen eines Treibers auf einem Testcomputer
- InfVerif /h