Arquivos de cabeçalho no Kit de Driver do Windows
Os documentos de referência da API para o WDK (Windows Driver Kit) contém todos os arquivos de cabeçalho (arquivos.h) necessários para criar drivers no modo kernel e no modo de usuário. Os arquivos de cabeçalho estão na pasta Incluir na pasta de instalação do WDK. Exemplo: C:\Arquivos de Programas (x86)\Kits do Windows\10\Include.
Os arquivos de cabeçalho contêm informações de versão para que você possa usar o mesmo conjunto de arquivos de cabeçalho, independentemente de qual versão do Windows seu driver será executado.
Constantes que representam versões do Windows
Os arquivos de cabeçalho no WDK contêm instruções condicionais que especificam elementos de programação disponíveis apenas em determinadas versões do sistema operacional Windows. Os elementos com versão incluem funções, enumerações, estruturas e membros da estrutura.
Para especificar os elementos de programação disponíveis em cada versão do sistema operacional, os arquivos de cabeçalho contêm condicionais de pré-processador que comparam o valor de NTDDI_VERSION com um conjunto de valores constantes predefinidos definidos em Sdkddkver.h.
Aqui estão os valores de constante predefinidos que representam versões do sistema operacional Microsoft Windows.
Constante | Versão do sistema operacional |
---|---|
NTDDI_WIN10 |
Windows 10 |
NTDDI_WINBLUE |
Windows 8.1 |
NTDDI_WIN8 |
Windows 8 |
NTDDI_WIN7 |
Windows 7 |
NTDDI_WS08SP4 |
Windows Server 2008 com SP4 |
NTDDI_WS08SP3 |
Windows Server 2008 com SP3 |
NTDDI_WS08SP2 |
Windows Server 2008 com SP2 |
NTDDI_WS08 |
Windows Server 2008 |
Você pode ver muitos exemplos de elementos DDI específicos à versão nos arquivos de cabeçalho do WDK. Essa declaração condicional é exibida no Wdm.h, que é um arquivo de cabeçalho que pode ser incluído por um driver no modo kernel.
#if (NTDDI_VERSION >= NTDDI_WIN7)
_Must_inspect_result_
NTKERNELAPI
NTSTATUS
KeSetTargetProcessorDpcEx (
_Inout_ PKDPC Dpc,
_In_ PPROCESSOR_NUMBER ProcNumber
);
#endif
No exemplo, você pode ver que a função KeSetTargetProcessorDpcEx está disponível apenas no Windows 7 e versões posteriores do Windows.
Essa declaração condicional aparece no Winspool.h, que é um arquivo de cabeçalho que pode ser incluído por um driver de modo de usuário.
#if (NTDDI_VERSION >= NTDDI_WIN7)
...
BOOL
WINAPI
GetPrintExecutionData(
_Out_ PRINT_EXECUTION_DATA *pData
);
#endif // (NTDDI_VERSION >= NTDDI_WIN7)
No exemplo, é possível ver que a função GetPrintExecutionData está disponível apenas no Windows 7 e versões posteriores do Windows.
Arquivos de cabeçalho para a Estrutura de driver do modo kernel
O WDK dá suporte a várias versões do Windows e também dá suporte a várias versões do KMDF (Kernel Mode Driver Framework) e do UMDF (User Mode Driver Framework). As informações de controle de versão nos arquivos de cabeçalho do WDK pertencem às versões do Windows, mas não às versões KMDF ou UMDF. Arquivos de cabeçalho para versões diferentes de KMDF e UMDF são colocados em diretórios separados.