Headerdateien im Windows Driver Kit
Das Windows Driver Kit (WDK) enthält alle Headerdateien (.h-Dateien), die Sie zum Erstellen von Kernelmodus- und Benutzermodustreibern benötigen. Headerdateien befinden sich im Ordner Include in Ihrem WDK-Installationsordner. Beispiel: C:\Programme (x86)\Windows Kits\10\Include.
Die Headerdateien enthalten Versionsinformationen, sodass Sie unabhängig von der Windows-Version, unter der Ihr Treiber ausgeführt wird, denselben Satz von Headerdateien verwenden können.
Konstanten, die Windows-Versionen darstellen
Headerdateien im WDK enthalten bedingte Anweisungen, die Programmierelemente angeben, die nur in bestimmten Versionen des Windows-Betriebssystems verfügbar sind. Die Versionsverwaltungselemente umfassen Funktionen, Enumerationen, Strukturen und Strukturmember.
Um die Programmierelemente anzugeben, die in jeder Betriebssystemversion verfügbar sind, enthalten die Headerdateien Präprozessor-Bedingungen, die den Wert von NTDDI_VERSION mit einer Reihe vordefinierter konstanter Werte vergleichen, die in Sdkddkver.h definiert sind.
Hier sind die vordefinierten konstanten Werte aufgeführt, die Versionen des Microsoft Windows-Betriebssystems darstellen.
Dauerhaft | Betriebssystemversion |
---|---|
NTDDI_WIN10 |
Windows 10 |
NTDDI_WINBLUE |
Windows 8.1 |
NTDDI_WIN8 |
Windows 8 |
NTDDI_WIN7 |
Windows 7 |
NTDDI_WS08SP4 |
Windows Server 2008 mit SP4 |
NTDDI_WS08SP3 |
Windows Server 2008 mit SP3 |
NTDDI_WS08SP2 |
Windows Server 2008 mit SP2 |
NTDDI_WS08 |
Windows Server 2008 |
Sie können viele Beispiele für versionsspezifische DDI-Elemente in den WDK-Headerdateien sehen. Diese bedingte Deklaration wird in Wdm.h angezeigt. Hierbei handelt es sich um eine Headerdatei, die von einem Kernelmodustreiber eingeschlossen werden kann.
#if (NTDDI_VERSION >= NTDDI_WIN7)
_Must_inspect_result_
NTKERNELAPI
NTSTATUS
KeSetTargetProcessorDpcEx (
_Inout_ PKDPC Dpc,
_In_ PPROCESSOR_NUMBER ProcNumber
);
#endif
Im Beispiel sehen Sie, dass die KeSetTargetProcessorDpcEx-Funktion nur in Windows 7 und höheren Versionen von Windows verfügbar ist.
Diese bedingte Deklaration wird in Winspool.h angezeigt. Hierbei handelt es sich um eine Headerdatei, die von einem Benutzermodustreiber eingeschlossen werden kann.
#if (NTDDI_VERSION >= NTDDI_WIN7)
...
BOOL
WINAPI
GetPrintExecutionData(
_Out_ PRINT_EXECUTION_DATA *pData
);
#endif // (NTDDI_VERSION >= NTDDI_WIN7)
Im Beispiel kann angezeigt werden, dass die GetPrintExecutionData-Funktion nur in Windows 7 und höheren Versionen von Windows verfügbar ist.
Headerdateien für das Kernelmodustreiberframework
Das WDK unterstützt mehrere Versionen von Windows, und es unterstützt auch mehrere Versionen des Kernel Mode Driver Framework (KMDF) und des User Mode Driver Framework (UMDF). Die Versionsverwaltungsinformationen in den WDK-Headerdateien beziehen sich auf Windows-Versionen, aber nicht auf KMDF- oder UMDF-Versionen. Headerdateien für verschiedene Versionen von KMDF und UMDF werden in separaten Verzeichnissen platziert.