Názvy WFP Version-Independent a cílení na konkrétní verze Windows
V mnoha případech poskytuje rozhraní API rozhraní WFP (Windows Filtering Platform) více než jednu verzi funkce nebo struktury.
Většina názvů dat a funkcí v rozhraní WFP API končí číslem verze, například 0 nebo 1, i když existuje jenom jedna verze.
Mapování verzí v fwpvi.h
Soubor hlavičky fwpvi.h je součástí sady Windows 7 SDK a WDK. Tento hlavičkový soubor mapuje název rozhraní API bez verzí na verzi, která je vhodná pro použití s daným operačním systémem.
Tady je například stručný výňatek z verze fwpvi.h, která je součástí sady 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
Jak je znázorněno výše, existuje pouze jedna verze FwpmNetEventCreateEnumHandle – FwpmNetEventCreateEnumHandle0 – takže jakékoli volání FwpmNetEventCreateEnumHandle bude vždy volat FwpmNetEventCreateEnumHandle0, bez ohledu na cílový operační systém.
Existují však tři verze FwpmNetEventEnum: FwpmNetEventEventEnum0, FwpmNetEventEnum1a FwpmNetEventEnum2. Soubor hlavičky fwpvi.h zajistí, že volání FwpmNetEventEnum zavolá verzi nejvhodnější pro cílový operační systém:
- FwpmNetEventEnum2 pro Windows 8 (nebo novější)
- FwpmNetEventEnum1 je určen pro Windows 7
- FwpmNetEventEnum0 pro starší operační systémy (například Windows Vista nebo Windows Vista s aktualizací Service Pack 1 (SP1))
Volání funkcí a struktur Version-Independent
Vývojářům WFP, kteří cílí na konkrétní operační systém nebo verzi WDK, je doporučeno, aby vždy programovali s pomocí makra nezávislých na verzích. Tím se automaticky vybere nejnovější verze podporovaná v operačním systému, na který cílíte. Doporučujeme použít nejnovější soubory hlaviček, i když cílíte na starší operační systém. Konzistentním způsobem zajistíte, že se používá nejnovější podporovaná verze a může také usnadnit údržbu a aktualizaci kódu.
Referenční dokumentace k rozhraní API WFP popisuje každou verzi číslovaného rozhraní API. Pokud existuje více verzí, je zaznamenán cílový operační systém. Vývojáři ale budou obecně chtít volat rozhraní API nezávislá na verzi (bez čísel) a určit cílový operační systém (například NTDDI_WIN6 pro Windows Vista nebo NTDDI_WIN8 pro Windows 8).
Abyste zajistili správné zpracování funkcí, které v různých verzích přebírají různé parametry, můžete zahrnout podmíněné bloky, jako je #if (NTDDI_VERSION >= NTDDI_WIN7)
.