Файлы заголовков в комплекте драйверов Windows

Пакет драйверов Windows (WDK) содержит все файлы заголовков (H-файлы), необходимые для сборки драйверов в режиме ядра и в пользовательском режиме. Файлы заголовков находятся в папке Include в папке установки WDK. Пример: C:\Program Files (x86)\Windows Kits\10\Include.

Файлы заголовков содержат сведения о версии, поэтому вы можете использовать один и тот же набор файлов заголовков независимо от того, в какой версии Windows будет работать драйвер.

Константы, представляющие версии Windows

Файлы заголовков в WDK содержат условные инструкции, указывающие программные элементы, доступные только в определенных версиях операционной системы Windows. Элементы с управлением версиями включают функции, перечисления, структуры и элементы структуры.

Чтобы указать элементы программирования, доступные в каждой версии операционной системы, файлы заголовков содержат условные выражения препроцессора, которые сравнивают значение NTDDI_VERSION с набором предопределенных значений констант, определенных в sdkddkver.h.

Ниже приведены предопределенные значения констант, представляющие версии операционной системы Microsoft Windows.

Константа Версия операционной системы

NTDDI_WIN10

Windows 10

NTDDI_WINBLUE

Windows 8.1

NTDDI_WIN8

Windows 8

NTDDI_WIN7

Windows 7

NTDDI_WS08SP4

Windows Server 2008 с пакетом обновления 4 (SP4)

NTDDI_WS08SP3

Windows Server 2008 с пакетом обновления 3 (SP3)

NTDDI_WS08SP2

Windows Server 2008 с пакетом обновления 2 (SP2)

NTDDI_WS08

Windows Server 2008

В файлах заголовков WDK можно увидеть множество примеров элементов DDI для конкретной версии. Это условное объявление отображается в Wdm.h, который представляет собой файл заголовка, который может быть включен драйвером режима ядра.

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

В этом примере видно, что функция KeSetTargetProcessorDpcEx доступна только в Windows 7 и более поздних версиях Windows.

Это условное объявление отображается в Winspool.h, который представляет собой файл заголовка, который может быть включен драйвером пользовательского режима.

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

#endif // (NTDDI_VERSION >= NTDDI_WIN7)

В примере видно, что функция GetPrintExecutionData доступна только в Windows 7 и более поздних версиях Windows.

Файлы заголовков для платформы драйвера режима ядра

WDK поддерживает несколько версий Windows, а также несколько версий платформы драйверов режима ядра (KMDF) и пользовательского режима driver Framework (UMDF). Сведения о версиях в файлах заголовков WDK относятся к версиям Windows, но не к версиям KMDF или UMDF. Файлы заголовков для разных версий KMDF и UMDF размещаются в отдельных каталогах.