Freigeben über


WFP-Version-Independent Namen und Zielspezifische Versionen von Windows

In vielen Fällen stellt die Windows-Filterplattform (WFP)-API mehr als eine Version 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 Headerdatei "fwpvi.h" 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 beispielsweise ein kurzer Auszug aus der version von fwpvi.h im Windows 8 SDK enthalten.

#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 Headerdatei "fwpvi.h" stellt sicher, dass ein Aufruf von FwpmNetEventEnum die für das Zielbetriebssystem am besten geeignete Version aufruft:

Aufrufen von 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 in dem Betriebssystem unterstützt wird, auf das Sie abzielen. Die Verwendung der aktuellsten Headerdateien wird empfohlen, auch wenn ein früheres Betriebssystem verwendet wird. Dadurch wird konsistent sichergestellt, dass die neueste unterstützte Version verwendet wird, und sie kann auch das Warten und Aktualisieren ihres Codes vereinfachen.

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

Um die ordnungsgemäße Behandlung von Funktionen sicherzustellen, die unterschiedliche Parameter in verschiedenen Versionen verwenden, können Sie bedingte Blöcke wie z. B. #if (NTDDI_VERSION >= NTDDI_WIN7) einfügen.