File di intestazione in Windows Driver Kit
Windows Driver Kit (WDK) contiene tutti i file di intestazione (file con estensione h) necessari per compilare driver in modalità kernel e in modalità utente. I file di intestazione si trovano nella cartella Includi nella cartella di installazione di WDK. Esempio: C:\Programmi (x86)\Windows Kits\10\Include.
I file di intestazione contengono informazioni sulla versione in modo da poter usare lo stesso set di file di intestazione indipendentemente dalla versione di Windows in cui verrà eseguito il driver.
Costanti che rappresentano le versioni di Windows
I file di intestazione in WDK contengono istruzioni condizionali che specificano gli elementi di programmazione disponibili solo in determinate versioni del sistema operativo Windows. Gli elementi con controllo delle versioni includono funzioni, enumerazioni, strutture e membri della struttura.
Per specificare gli elementi di programmazione disponibili in ogni versione del sistema operativo, i file di intestazione contengono istruzioni condizionali del preprocessore che confrontano il valore di NTDDI_VERSION con un set di valori costanti predefiniti definiti in Sdkddkver.h.
Ecco i valori costanti predefiniti che rappresentano le versioni del sistema operativo Microsoft Windows.
Costante | Versione 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 |
È possibile visualizzare molti esempi di elementi DDI specifici della versione nei file di intestazione WDK. Questa dichiarazione condizionale viene visualizzata in Wdm.h, ovvero un file di intestazione che potrebbe essere incluso da un driver in modalità kernel.
#if (NTDDI_VERSION >= NTDDI_WIN7)
_Must_inspect_result_
NTKERNELAPI
NTSTATUS
KeSetTargetProcessorDpcEx (
_Inout_ PKDPC Dpc,
_In_ PPROCESSOR_NUMBER ProcNumber
);
#endif
Nell'esempio è possibile notare che la funzione KeSetTargetProcessorDpcEx è disponibile solo in Windows 7 e versioni successive di Windows.
Questa dichiarazione condizionale viene visualizzata in Winspool.h, ovvero un file di intestazione che potrebbe essere incluso da un driver in modalità utente.
#if (NTDDI_VERSION >= NTDDI_WIN7)
...
BOOL
WINAPI
GetPrintExecutionData(
_Out_ PRINT_EXECUTION_DATA *pData
);
#endif // (NTDDI_VERSION >= NTDDI_WIN7)
Nell'esempio è possibile vedere che la funzione GetPrintExecutionData è disponibile solo in Windows 7 e versioni successive di Windows.
File di intestazione per il framework driver in modalità kernel
WdK supporta diverse versioni di Windows e supporta anche diverse versioni di Kernel Mode Driver Framework (KMDF) e User Mode Driver Framework (UMDF). Le informazioni sul controllo delle versioni nei file di intestazione WDK riguardano le versioni di Windows, ma non le versioni KMDF o UMDF. I file di intestazione per versioni diverse di KMDF e UMDF vengono inseriti in directory separate.