Archivos de encabezado en el Kit de controladores de Windows

El Kit de controladores de Windows (WDK) contiene todos los archivos de encabezado (archivos .h) que necesita para compilar controladores en modo kernel y modo de usuario. Los archivos de encabezado se encuentran en la carpeta Include de la carpeta de instalación de WDK. Ejemplo: C:\Archivos de programa (x86)\Windows Kits\10\Include.

Los archivos de encabezado contienen información de versión para que pueda usar el mismo conjunto de archivos de encabezado, independientemente de la versión de Windows en la que se ejecutará el controlador.

Constantes que representan versiones de Windows

Los archivos de encabezado del WDK contienen instrucciones condicionales que especifican elementos de programación que solo están disponibles en determinadas versiones del sistema operativo Windows. Los elementos con versiones incluyen funciones, enumeraciones, estructuras y miembros de estructura.

Para especificar los elementos de programación disponibles en cada versión del sistema operativo, los archivos de encabezado contienen condicionales de preprocesador que comparan el valor de NTDDI_VERSION con un conjunto de valores constantes predefinidos definidos en Sdkddkver.h.

Estos son los valores constantes predefinidos que representan las versiones del sistema operativo Microsoft Windows.

Constante Versión del sistema operativo

NTDDI_WIN10

Windows 10

NTDDI_WINBLUE

Windows 8.1

NTDDI_WIN8

Windows 8

NTDDI_WIN7

Windows 7

NTDDI_WS08SP4

Windows Server 2008 con SP4

NTDDI_WS08SP3

Windows Server 2008 con SP3

NTDDI_WS08SP2

Windows Server 2008 con SP2

NTDDI_WS08

Windows Server 2008

Puede ver muchos ejemplos de elementos DDI específicos de la versión en los archivos de encabezado WDK. Esta declaración condicional aparece en Wdm.h, que es un archivo de encabezado que podría incluir un controlador en modo kernel.

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

En el ejemplo puede ver que la función KeSetTargetProcessorDpcEx solo está disponible en Windows 7 y versiones posteriores de Windows.

Esta declaración condicional aparece en Winspool.h, que es un archivo de encabezado que podría incluir un controlador en modo de usuario.

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

#endif // (NTDDI_VERSION >= NTDDI_WIN7)

En el ejemplo puede ver que la función GetPrintExecutionData solo está disponible en Windows 7 y versiones posteriores de Windows.

Archivos de encabezado para el marco del controlador de modo kernel

El WDK admite varias versiones de Windows, y también admite varias versiones del marco de controlador del modo kernel (KMDF) y del marco de controlador del modo de usuario (UMDF). La información de control de versiones de los archivos de encabezado WDK pertenece a las versiones de Windows, pero no a las versiones de KMDF o UMDF. Los archivos de encabezado para diferentes versiones de KMDF y UMDF se colocan en directorios independientes.