WFP Version-Independent Namen und Zielgruppenspezifische Versionen von Windows

In vielen Fällen stellt die Windows Filterplattform -API (WFP) mehrere Versionen einer Funktion oder Struktur bereit.

Die meisten Daten- und Funktionsnamen in der WFP-API enden mit einer Versionsnummer, z. B. "0" oder "1", auch wenn nur eine Version vorhanden ist.

Versionszuordnung in fwpvi.h

Die Fwpvi.h-Headerdatei ist ab dem Windows 7 SDK und WDK enthalten. Diese Headerdatei ordnet den versionslosen API-Namen der Version zu, die für die Verwendung mit einem bestimmten Betriebssystem geeignet ist.

Hier ist z. B. ein kurzer Auszug aus der im Windows 8 SDK enthaltenen Version von fwpvi.h.

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

Wie oben gezeigt, gibt es nur eine Version von FwpmNetEventCreateEnumHandleFwpmNetEventCreateEnumHandle0 – sodass jeder Aufruf von FwpmNetEventCreateEnumHandle immer fwpmNetEventCreateEnumHandle0 aufruft, unabhängig vom zielbezogenen Betriebssystem.

Es gibt jedoch drei Versionen von FwpmNetEventEnum: FwpmNetEventEnum0, FwpmNetEventEnum1 und FwpmNetEventEnum2. Die Fwpvi.h-Headerdatei stellt sicher, dass ein Aufruf von FwpmNetEventEnum die Version aufruft, die am besten für das zielorientierte Betriebssystem geeignet ist:

Aufrufen Version-Independent Funktionen und Strukturen

WFP-Entwickler, die auf ein bestimmtes Betriebssystem oder eine WDK-Version abzielen, werden empfohlen, immer für die versionsunabhängigen Makros zu programmieren. Dadurch wird automatisch die neueste Version ausgewählt, die im Betriebssystem unterstützt wird, auf das Sie abzielen. Die Verwendung der neuesten Headerdateien wird empfohlen, auch wenn sie auf ein früheres Betriebssystem ausgerichtet sind. Dadurch wird sichergestellt, dass die neueste unterstützte Version verwendet wird, und es kann auch einfacher sein, Ihren Code zu verwalten und zu aktualisieren.

Die WFP-API-Referenzdokumentation beschreibt jede Version einer nummerierten API. Wenn mehrere Versionen vorhanden sind, wird das zielorientierte Betriebssystem angegeben. Entwickler möchten jedoch im Allgemeinen die versionsunabhängigen (nummerlosen) APIs aufrufen und das gezielte Betriebssystem angeben (z. B. NTDDI_WIN6 für Windows Vista oder NTDDI_WIN8 für Windows 8).

Um die ordnungsgemäße Behandlung von Funktionen zu gewährleisten, die unterschiedliche Parameter in verschiedenen Versionen verwenden, können Sie bedingte Blöcke wie #if (NTDDI_VERSION >= NTDDI_WIN7)z. B. einschließen.