Sdílet prostřednictvím


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 FwpmNetEventCreateEnumHandleFwpmNetEventCreateEnumHandle0 – 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:

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).