Nomi di Version-Independent WFP e destinazione di versioni specifiche di Windows

In molti casi, l'API Windows Filtering Platform (WFP) fornisce più versioni di una funzione o di una struttura.

La maggior parte dei nomi di dati e funzioni nell'API WFP termina con un numero di versione, ad esempio "0" o "1", anche se è presente una sola versione.

Mapping delle versioni in fwpvi.h

Il file di intestazione fwpvi.h è incluso a partire da Windows 7 SDK e WDK. Questo file di intestazione esegue il mapping del nome dell'API senza versione alla versione appropriata per l'uso con un sistema operativo specifico.

Di seguito è riportato un breve estratto della versione di fwpvi.h inclusa in Windows 8 SDK.

#define FwpmNetEventCreateEnumHandle FwpmNetEventCreateEnumHandle0
#if (NTDDI_VERSION >= NTDDI_WIN8)
#define FwpmNetEventEnum FwpmNetEventEnum2
#elif (NTDDI_VERSION >= NTDDI_WIN7)
#define FwpmNetEventEnum FwpmNetEventEnum1
#else
#define FwpmNetEventEnum FwpmNetEventEnum0
#endif

Come illustrato in precedenza, esiste una sola versione di FwpmNetEventCreateEnumHandleFwpmNetEventCreateEnumHandle0 , quindi qualsiasi chiamata a FwpmNetEventCreateEnumHandle chiamerà sempre FwpmNetEventCreateEnumHandle0, indipendentemente dal sistema operativo di destinazione.

Esistono tuttavia tre versioni di FwpmNetEventEnum: FwpmNetEventEnum0, FwpmNetEventEnum1 e FwpmNetEventEnum2. Il file di intestazione fwpvi.h garantisce che una chiamata a FwpmNetEventEnum chiami la versione più appropriata al sistema operativo di destinazione:

Chiamata di funzioni e strutture Version-Independent

Gli sviluppatori DEL WFP destinati a un sistema operativo specifico o a una versione WDK sono invitati a programmare sempre contro le macro indipendenti dalla versione. In questo modo verrà selezionata automaticamente la versione più recente supportata nel sistema operativo di destinazione. È consigliabile usare i file di intestazione più recenti, anche quando si fa riferimento a un sistema operativo precedente. In questo modo si garantisce che venga usata la versione supportata più recente e possa anche semplificare la gestione e l'aggiornamento del codice.

La documentazione di riferimento dell'API WFP descrive ogni versione di un'API numerata. Se esistono più versioni, viene indicato il sistema operativo di destinazione. Tuttavia, gli sviluppatori vogliono in genere chiamare le API indipendenti dalla versione (senza numeri) e indicare il sistema operativo di destinazione (ad esempio NTDDI_WIN6 per Windows Vista o NTDDI_WIN8 per Windows 8).

Per garantire una corretta gestione delle funzioni che accettano parametri diversi in versioni diverse, è possibile includere blocchi condizionali, ad #if (NTDDI_VERSION >= NTDDI_WIN7)esempio .