Fichiers d’en-tête dans le Kit de pilotes Windows

Le Kit de pilotes Windows (WDK) contient tous les fichiers d’en-tête (fichiers .h) dont vous avez besoin pour générer des pilotes en mode noyau et en mode utilisateur. Les fichiers d’en-tête se trouvent dans le dossier Include de votre dossier d’installation WDK. Exemple : C :\Program Files (x86)\Windows Kits\10\Include.

Les fichiers d’en-tête contiennent des informations de version afin que vous puissiez utiliser le même ensemble de fichiers d’en-tête, quelle que soit la version de Windows sur laquelle votre pilote s’exécutera.

Constantes qui représentent les versions de Windows

Les fichiers d’en-tête dans le WDK contiennent des instructions conditionnelles qui spécifient des éléments de programmation disponibles uniquement dans certaines versions du système d’exploitation Windows. Les éléments versionnés incluent des fonctions, des énumérations, des structures et des membres de structure.

Pour spécifier les éléments de programmation disponibles dans chaque version du système d’exploitation, les fichiers d’en-tête contiennent des conditions de préprocesseur qui comparent la valeur de NTDDI_VERSION à un ensemble de valeurs constantes prédéfinies définies dans Sdkddkver.h.

Voici les valeurs de constante prédéfinies qui représentent les versions du système d’exploitation Microsoft Windows.

Constant Version du système d'exploitation

NTDDI_WIN10

Windows 10

NTDDI_WINBLUE

Windows 8.1

NTDDI_WIN8

Windows 8

NTDDI_WIN7

Windows 7

NTDDI_WS08SP4

Windows Server 2008 avec SP4

NTDDI_WS08SP3

Windows Server 2008 avec SP3

NTDDI_WS08SP2

Windows Server 2008 avec SP2

NTDDI_WS08

Windows Server 2008

Vous pouvez voir de nombreux exemples d’éléments DDI spécifiques à la version dans les fichiers d’en-tête WDK. Cette déclaration conditionnelle apparaît dans Wdm.h, qui est un fichier d’en-tête qui peut être inclus par un pilote en mode noyau.

#if (NTDDI_VERSION >= NTDDI_WIN7)
_Must_inspect_result_
NTKERNELAPI
NTSTATUS
KeSetTargetProcessorDpcEx (
    _Inout_ PKDPC Dpc,
    _In_ PPROCESSOR_NUMBER ProcNumber
    );
#endif

Dans l’exemple, vous pouvez voir que la fonction KeSetTargetProcessorDpcEx est disponible uniquement dans Windows 7 et les versions ultérieures de Windows.

Cette déclaration conditionnelle s’affiche dans Winspool.h, qui est un fichier d’en-tête qui peut être inclus par un pilote en mode utilisateur.

#if (NTDDI_VERSION >= NTDDI_WIN7)
...
BOOL
WINAPI
GetPrintExecutionData(
    _Out_ PRINT_EXECUTION_DATA *pData
    );

#endif // (NTDDI_VERSION >= NTDDI_WIN7)

Dans l’exemple peut voir que la fonction GetPrintExecutionData est disponible uniquement dans Windows 7 et les versions ultérieures de Windows.

Fichiers d’en-tête pour l’infrastructure du pilote en mode noyau

Le WDK prend en charge plusieurs versions de Windows, et il prend également en charge plusieurs versions de l’infrastructure kmdf (Kernel Mode Driver Framework) et de l’infrastructure de pilote en mode utilisateur (UMDF). Les informations de contrôle de version dans les fichiers d’en-tête WDK concernent les versions De Windows, mais pas les versions KMDF ou UMDF. Les fichiers d’en-tête pour différentes versions de KMDF et d’UMDF sont placés dans des répertoires distincts.