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.idl |
Funktionen und aufgezählte Typen , die zum Implementieren von Legenden verwendet werden. Hinweis Diese Funktionen und aufgezählten Typen sind im DDK dokumentiert. |
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.idl |
Funktionen , die zum Verwalten von IKE- und AuthIP-MM-Richtlinien und Sicherheitszuordnungen verwendet werden. |
fwpmk.h |
|
IPsec-API (IPSEC)${REMOVE}$ |
Aufgelistete Typen und Strukturen , die zum Verwalten von IPsec-Richtlinien und Sicherheitszuordnungen verwendet werden. |
ipsectypes.idl |
Funktionen , die zum Verwalten von IPsec-Richtlinien und Sicherheitszuordnungen verwendet werden. |
fwpmk.h |
|
Verwaltungs-API (FWPM)${REMOVE}$ |
Aufgelistete Typen und Strukturen , die für die Verwaltung der Filter-Engine verwendet werden. |
fwpmtypes.idl |
Funktionen , die zum Verwalten der Filter-Engine verwendet werden. Diese Funktionen werden verwendet, um die folgenden Aufgaben auszuführen:
|
fwpmk.h |
|
Freigegebene API (FWP) | Grundlegende aufgezählte Typen und Strukturen , die in der Windows-Filterplattform gemeinsam genutzt werden. |
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.