WFP-API

Die WFP-API (Windows Filtering Platform) ist in die folgenden Komponenten unterteilt.

Komponente BESCHREIBUNG Headerdateien
Legenden-API (FWPS)${REMOVE}$
Von Legenden verwendete Datentypen. Hinweis Diese Datentypen sind im Microsoft Windows Driver Development Kit (DDK) dokumentiert.
fwpstypes.h
fwpstypes.idl
Funktionen und aufgezählte Typen , die zum Implementieren von Legenden verwendet werden. Hinweis Diese Funktionen und aufgezählten Typen sind im DDK dokumentiert.
fwpsu.h
fwpsk.h
IKE/AuthIP-API (IKEEXT)${REMOVE}$
Enumerierte Typen und Strukturen, die zum Verwalten von IKE- und AuthIP-Standard-Modus (MM)-Richtlinien und Sicherheitszuordnungen verwendet werden.
iketypes.h
iketypes.idl
Funktionen , die zum Verwalten von IKE- und AuthIP-MM-Richtlinien und Sicherheitszuordnungen verwendet werden.
fwpmu.h
fwpmk.h
IPsec-API (IPSEC)${REMOVE}$
Aufgelistete Typen und Strukturen , die zum Verwalten von IPsec-Richtlinien und Sicherheitszuordnungen verwendet werden.
ipsectypes.h
ipsectypes.idl
Funktionen , die zum Verwalten von IPsec-Richtlinien und Sicherheitszuordnungen verwendet werden.
fwpmu.h
fwpmk.h
Verwaltungs-API (FWPM)${REMOVE}$
Aufgelistete Typen und Strukturen , die für die Verwaltung der Filter-Engine verwendet werden.
fwpmtypes.h
fwpmtypes.idl
Funktionen , die zum Verwalten der Filter-Engine verwendet werden. Diese Funktionen werden verwendet, um die folgenden Aufgaben auszuführen:
  • Festlegen und Abfragen von Filtern, Anbietern und Legenden
  • Abrufen von IPsec-Statistiken.
  • Konfigurieren Sie die Windows-Filterplattform.
fwpmu.h
fwpmk.h
Freigegebene API (FWP) Grundlegende aufgezählte Typen und Strukturen , die in der Windows-Filterplattform gemeinsam genutzt werden.
fwptypes.h
fwptypes.idl

Datentypnamen sind alle Groß- und Unterstriche getrennt. Der Name beginnt immer mit einem Präfix, das die Komponentengruppe identifiziert, z. B. FWPM_PROVIDER0.

Funktionsnamen sind gemischt und mit Groß-/Kleinschreibung getrennt. Der Name beginnt immer mit einem Präfix, das die Komponentengruppe identifiziert, z. B. FwpmProviderContextAdd0.

Die meisten Daten- und Funktionsnamen enden mit einer Versionsnummer. Die fwpvi.h-Headerdatei ordnet versionsunabhängige Daten und Funktionsnamen der Version zu, die für die Verwendung mit einem bestimmten Betriebssystem geeignet ist. Weitere Informationen finden Sie unter WFP Version-Independent Namen und Zielgruppenspezifische Versionen von Windows.

Jede Komponente steht nicht für sich allein. Beispielsweise werden MM-Richtlinien (IKE Standard Mode) in der IKEEXT-Komponente definiert, aber in einem Anbieterkontext gespeichert und einem Filter zugeordnet, die beide in der FWPM-API-Komponente enthalten sind.

User-Mode und Kernel-Mode öffentliche Headerdateien

Die meisten WFP-Funktionen können entweder im Benutzermodus oder im Kernelmodus aufgerufen werden. Benutzermodusfunktionen geben jedoch einen DWORD-Wert zurück, der einen Win32-Fehlercode darstellt, während Kernelmodusfunktionen einen NTSTATUS-Wert zurückgeben, der einen NT-status-Code darstellt. Daher sind Funktionsnamen und Semantik zwischen Benutzermodus und Kernelmodus identisch, Funktionssignaturen jedoch nicht. Dies erfordert separate Benutzermodus- und Kernelmodus-spezifische Header für die Funktionsprototypen. Headerdateinamen im Benutzermodus enden auf "u", und die Namen der Kernelmodusheaderdatei enden auf "k".

In der folgenden Tabelle sind die Win32-Headerdateien aufgeführt, die die WFP-Funktionen definieren.

Headerdateien BESCHREIBUNG
fwpmk.h Kernelmodusfunktionsprototypen für FWPM-, IPsec- und IKEEXT-Komponenten. Nur im DDK verfügbar.
fwpmu.h Funktionsprototypen im Benutzermodus für FWPM-, IPsec- und IKEEXT-Komponenten. Nur im Microsoft Windows Software Development Kit (SDK) verfügbar.
fwpsk.h Kernelmodusfunktionsprototypen und aufgezählte Typen für DIE FWPS-Komponente. Nur im DDK verfügbar.
fwpsu.h Funktionsprototypen im Benutzermodus und aufgezählte Typen für DIE FWPS-Komponente. Nur im Windows SDK verfügbar. Hinweis Die aufgezählten FWPS-Typen im Benutzermodus sind identisch mit den aufgezählten FWPS-Typen im Kernelmodus. Daher werden diese Typen nur im DDK dokumentiert.
Hinweis Die FWPS-Funktionsprototypen des Benutzermodus sind mit den FWPS-Funktionsprototypen im Kernelmodus identisch, mit Ausnahme des Rückgabecodes. FWPS-Funktionen im Benutzermodus geben ein DWORD zurück, während FWPS-Funktionen im Kernelmodus einen NTSTATUS zurückgeben. Daher werden diese Funktionen nur im DDK dokumentiert.

Alle Benutzermodusfunktionen werden aus fwpuclnt.dll exportiert. Alle Kernelmodusfunktionen werden aus fwpkclnt.sys exportiert.

Verwaltungsdatentypen (FWPM) und Callout (FWPS)

Die meisten FWPM-Datentypen, die für Verwaltungsaufgaben wie das Hinzufügen von Filtern oder Legenden aus einer Anwendung oder einem Treiber verwendet werden, verfügen über FWPS-Entsprechungen. Die FWPS-Datentypen werden während der tatsächlichen Filterung des Netzwerkdatenverkehrs im Kontext einer Legendenroutine für die Klassifizierung verwendet.

Um z. B. einer bestimmten Filtermodulebene einen Filter hinzuzufügen, sollte der Programmierer einen FWPM-Typ wie folgendes verwenden: filter.layerKey = FWPM_LAYER_INBOUND_IPPACKET. Um zu überprüfen, von welcher Ebene eine Legende aufgerufen wird, sollte der Programmierer den entsprechenden FWPS-Typ verwenden: if (inFixedValues->layerId == FWPS_LAYER_INBOUND_IPPACKET).

Einige FWPS-Entsprechungen zu FWPM-Datentypen erweitern die ursprünglichen FWPM-Datentypen. Um beispielsweise eine Filterbedingung auf vielen Filtermodulebenen hinzuzufügen, gibt der Programmierer die filterCondition.fieldKey = FWPM_CONDITION_IP_PROTOCOL unabhängig von der Filtermodulebene an. Um einen Filterbedingungswert zu finden, gibt der Programmierer einen ebenenspezifischen FWPS-Typ an, z. B.: inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL].

Die FWPS-Datentypen sind im Allgemeinen kleiner als ihre FWPM-Entsprechungen. Beispielsweise sind die FWPM-FilterebenenbezeichnerGUIDs (16 Bytes), während die FWPS-FilterebenenbezeichnerUINT16 (16 Bits) sind. Die kleinere Größe für FWPS-Datentypen verbessert die Systemleistung, da ganzzahlige Vergleiche gegenüber GUID-Vergleichen für Echtzeitdatenverkehr überwiegen. Außerdem wird der Kernelspeicher effizient verwendet, da alle FWPS-Typen im Kernel zum Verwalten der Filter verwendet werden, während die FWPM-Typen im Benutzermodus gespeichert werden, um die verschiedenen Ebenen zu verwalten.

WFP-API-Objektmodell

WFP-API-Objektverwaltung