Dela via


WFP API

Api:et för Windows-filtreringsplattformen (WFP) är indelat i följande komponenter.

Komponent Beskrivning Rubrikfiler
API för pratbubblan (FWPS)${REMOVE}$
Datatyper som används av pratbubblar.Obs Dessa datatyper dokumenteras i Microsoft Windows Driver Development Kit (DDK).
fwpstypes.h
fwpstypes.idl
Functions och uppräknade typer som används för att implementera pratbubblar.Obs Dessa funktioner och uppräknade typer dokumenteras i DDK.
fwpsu.h
fwpsk.h
IKE/AuthIP API (IKEEXT)${REMOVE}$
Uppräknade typer och strukturer används för att hantera IKE- och AuthIP-huvudlägesprinciper (MM) och säkerhetsassociationer.
iketypes.h
iketypes.idl
Functions som används för att hantera IKE- och AuthIP MM-principer och säkerhetsassociationer.
fwpmu.h
fwpmk.h
IPsec API (IPSEC)${REMOVE}$
Uppräknade typer och strukturer används för att hantera IPsec-principer och säkerhetsassociationer.
ipsectypes.h
ipsectypes.idl
Functions används för att hantera IPsec-principer och säkerhetsassociationer.
fwpmu.h
fwpmk.h
Hanterings-API (FWPM)${REMOVE}$
Uppräknade typer och strukturer används för att hantera filtermotorn.
fwpmtypes.h
fwpmtypes.idl
Functions som används för att hantera filtermotorn. Dessa funktioner används för att utföra följande uppgifter:
  • Ange och fråga efter filter, leverantörer och pratbubblar.
  • Hämta IPsec-statistik.
  • Konfigurera Windows-filtreringsplattformen.
fwpmu.h
fwpmk.h
Delat API (FWP) Grundläggande uppräknade typer och strukturer delas över Windows-filtreringsplattformen.
fwptypes.h
fwptypes.idl

Datatypnamn är alla versaler och understreck avgränsade. Namnet börjar alltid med ett prefix som identifierar dess komponentgrupp, till exempel FWPM_PROVIDER0.

Funktionsnamnen är blandade och skiftlägesavgränsade. Namnet börjar alltid med ett prefix som identifierar dess komponentgrupp, till exempel FwpmProviderContextAdd0.

De flesta data- och funktionsnamn slutar med ett versionsnummer. Huvudfilen fwpvi.h mappar versionsoberoende data och funktionsnamn till den version som är lämplig för användning med ett visst operativsystem. Mer information finns i WFP-Version-Independent namn och målspecifika versioner av Windows.

Varje komponent står inte ensam. Till exempel definieras IKE-huvudlägesprinciper (MM) i IKEEXT-komponenten, men lagras i en providerkontext och är associerade med ett filter som båda finns i FWPM API-komponenten.

User-Mode och Kernel-Mode offentliga huvudfiler

De flesta WFP-funktioner kan anropas från antingen användarläge eller kernelläge. Användarlägesfunktioner returnerar dock ett DWORD- värde som representerar en Win32-felkod, medan kernellägesfunktioner returnerar ett NTSTATUS- värde som representerar en NT-statuskod. Därför är funktionsnamn och semantik identiska mellan användarläge och kernelläge, men funktionssignaturer är det inte. Detta kräver separata användarläges- och kernellägesspecifika rubriker för funktionsprototyperna. Namn på huvudfil i användarläge slutar med "u" och huvudfilnamnen i kernelläge slutar med "k".

I följande tabell visas de Win32-huvudfiler som definierar WFP-funktionerna.

Rubrikfiler Beskrivning
fwpmk.h Funktionsprototyper i kernelläge för FWPM-, IPsec- och IKEEXT-komponenter. Endast tillgängligt i DDK.
fwpmu.h Funktionsprototyper i användarläge för FWPM-, IPsec- och IKEEXT-komponenter. Endast tillgängligt i Microsoft Windows Software Development Kit (SDK).
fwpsk.h Funktionsprototyper i kernelläge och uppräknade typer för FWPS-komponent. Endast tillgängligt i DDK.
fwpsu.h Funktionsprototyper i användarläge och uppräknade typer för FWPS-komponent. Endast tillgängligt i Windows SDK.Obs FWPS-uppräknade typer i användarläge är identiska med de FWPS-uppräknade typerna i kernelläge. Därför dokumenteras dessa typer endast i DDK.
Obs FWPS-funktionsprototyperna i användarläge är identiska med FWPS-funktionsprototyperna i kernelläge med undantag för returkoden. FWPS-funktioner i användarläge returnerar en DWORD-, medan FWPS-funktioner i kernelläge returnerar en NTSTATUS-. Dessa funktioner dokumenteras därför endast i DDK.

Alla funktioner i användarläge exporteras från fwpuclnt.dll. Alla funktioner i kernelläge exporteras från fwpkclnt.sys.

Datatyper för hantering (FWPM) och pratbubblan (FWPS)

De flesta FWPM-datatyper, som används för hanteringsuppgifter som att lägga till filter eller pratbubblar från ett program eller en drivrutin, har FWPS-motsvarigheter. FWPS-datatyperna används under den faktiska filtreringen av nätverkstrafik i samband med en pratbubblan för klassificering.

Om du till exempel vill lägga till ett filter i ett visst filtreringsmotorlager bör programmeraren använda en FWPM-typ, till exempel: filter.layerKey = FWPM_LAYER_INBOUND_IPPACKET. För att kontrollera vilket lager en pratbubblan anropas från bör programmeraren använda motsvarande FWPS-typ: if (inFixedValues->layerId == FWPS_LAYER_INBOUND_IPPACKET).

Vissa FWPS-motsvarigheter till FWPM-datatyper expanderar de ursprungliga FWPM-datatyperna. Om du till exempel vill lägga till ett filtervillkor i många filtreringsmotorlager anger programmeraren filterCondition.fieldKey = FWPM_CONDITION_IP_PROTOCOL oavsett filtreringsmotorlagret. För att hitta ett filtervillkorsvärde anger programmeraren en lagerspecifik FWPS-typ, till exempel: inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL].

FWPS-datatyperna är vanligtvis mindre än deras FWPM-motsvarigheter. Till exempel är FWPM-filtreringsskiktidentifierareGUID-s (16 byte) medan FWPS-filtreringsskiktidentifierare är UINT16- (16-bitars). Den mindre storleken för FWPS-datatyper förbättrar systemprestanda eftersom heltalsjämförelser uppväger GUID- jämförelser för realtidstrafik. Dessutom används kernelminnet effektivt eftersom FWPS-typerna alla används i kerneln för att hantera filtren, medan FWPM-typerna lagras i användarläge för att hantera de olika lagren.

WFP API-objektmodell

WFP API Object Management