Condividi tramite


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

In molti casi, l'API Windows Filtering Platform (WFP) fornisce più di una versione 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.

Mappatura delle versioni in fwpvi.h

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

Ad esempio, ecco 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, è disponibile una sola versione di FwpmNetEventCreateEnumHandleFwpmNetEventCreateEnumHandle0, quindi qualsiasi chiamata a FwpmNetEventCreateEnumHandle chiamerà sempre FwpmNetEventCreateEnumHandle0, indipendentemente dal sistema operativo di destinazione.

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

  • fwpmNetEventEnum2 per Windows 8 (o versione successiva)
  • FwpmNetEventEnum1 per Windows 7 è mirato
  • FwpmNetEventEnum0 per sistemi operativi precedenti (ad esempio Windows Vista o Windows Vista con Service Pack 1 (SP1))

Richiamare le funzioni e le strutture Version-Independent

Gli sviluppatori WFP destinati a un particolare sistema operativo o versione WDK sono incoraggiati a programmare sempre contro le macro indipendenti dalla versione. Verrà selezionata automaticamente la versione più recente supportata nel sistema operativo di destinazione. È consigliabile usare i file di intestazione più recenti, anche quando si prende di mira un sistema operativo precedente. Questa operazione garantisce l'uso coerente della versione supportata più recente e può anche semplificare la manutenzione e l'aggiornamento del codice.

La documentazione di riferimento 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 esempio #if (NTDDI_VERSION >= NTDDI_WIN7).