Udostępnij za pośrednictwem


WFP API

Interfejs API platformy filtrowania systemu Windows (WFP) jest podzielony na następujące składniki.

Składnik Opis Pliki nagłówka
interfejs API objaśnień (FWPS)${REMOVE}$
typy danych używane przez objaśnienie.Uwaga Te typy danych są udokumentowane w zestawie Microsoft Windows Driver Development Kit (DDK).
fwpstypes.h
fwpstypes.idl
Functions i wyliczane typy używane do implementowania objaśnień.Uwaga Te funkcje i typy wyliczane są udokumentowane w zestawie DDK.
fwpsu.h
fwpsk.h
Interfejs API IKE/AuthIP (IKEEXT)${REMOVE}$
Wyliczone typy i struktury używane do zarządzania zasadami i skojarzeniami zabezpieczeń trybu głównego IKE i AuthIP (MM).
iketypes.h
iketypes.idl
functions używane do zarządzania zasadami IKE i AuthIP MM i skojarzeniami zabezpieczeń.
fwpmu.h
fwpmk.h
Interfejs API protokołu IPsec (IPSEC)${REMOVE}$
Wyliczone typy i struktury używane do zarządzania zasadami IPsec i skojarzeniami zabezpieczeń.
ipsectypes.h
ipsectypes.idl
Functions używane do zarządzania zasadami IPsec i skojarzeniami zabezpieczeń.
fwpmu.h
fwpmk.h
Interfejs API zarządzania (FWPM)${REMOVE}$
Wyliczone typy i struktury używane do zarządzania aparatem filtrów.
fwpmtypes.h
fwpmtypes.idl
Functions używane do zarządzania aparatem filtrów. Te funkcje służą do wykonywania następujących zadań:
  • Ustawianie i filtrowanie zapytań, dostawców i objaśnień.
  • Pobieranie statystyk protokołu IPsec.
  • Skonfiguruj platformę filtrowania systemu Windows.
fwpmu.h
fwpmk.h
Udostępniony interfejs API (FWP) Podstawowe wyliczane typy i struktury współużytkowane na platformie filtrowania systemu Windows.
fwptypes.h
fwptypes.idl

Nazwy typów danych są rozdzielane wielkimi literami i podkreśleniami. Nazwa zawsze zaczyna się od prefiksu identyfikującego jego grupę składników, taką jak FWPM_PROVIDER0.

Nazwy funkcji są rozdzielane literami mieszanymi i literami. Nazwa zawsze zaczyna się od prefiksu identyfikującego jego grupę składników, taką jak FwpmProviderContextAdd0.

Większość nazw danych i funkcji kończy się numerem wersji. Plik nagłówkowy fwpvi.h mapuje nazwy danych niezależnych od wersji i funkcji na wersję, która jest odpowiednia do użycia z danym systemem operacyjnym. Aby uzyskać więcej informacji, zobacz nazwy Version-Independent WFP i określanie określonych wersji systemu Windows.

Każdy składnik nie jest autonomiczny. Na przykład zasady trybu głównego IKE (MM) są definiowane w składniku IKEEXT, ale są przechowywane w kontekście dostawcy i są skojarzone z filtrem, który znajduje się w składniku interfejsu API FWPM.

User-Mode i pliki nagłówków publicznych Kernel-Mode

Większość funkcji WFP może być wywoływana z trybu użytkownika lub trybu jądra. Jednak funkcje trybu użytkownika zwracają wartość DWORD, która reprezentuje kod błędu Win32, podczas gdy funkcje trybu jądra zwracają wartość NTSTATUS, która reprezentuje kod stanu NT. W związku z tym nazwy funkcji i semantyka są identyczne między trybem użytkownika i trybem jądra, ale sygnatury funkcji nie są. Wymaga to oddzielnych nagłówków specyficznych dla trybu użytkownika i trybu jądra dla prototypów funkcji. Nazwy plików nagłówka trybu użytkownika kończą się na "u" i nazwach plików nagłówkowych trybu jądra kończy się na "k".

W poniższej tabeli wymieniono pliki nagłówków Win32 definiujące funkcje WFP.

Pliki nagłówka Opis
fwpmk.h Prototypy funkcji trybu jądra dla składników FWPM, IPsec i IKEEXT. Dostępne tylko w zestawie DDK.
fwpmu.h Prototypy funkcji trybu użytkownika dla składników FWPM, IPsec i IKEEXT. Dostępne tylko w zestawie Microsoft Windows Software Development Kit (SDK).
fwpsk.h Prototypy funkcji trybu jądra i wyliczone typy dla składnika FWPS. Dostępne tylko w zestawie DDK.
fwpsu.h Prototypy funkcji trybu użytkownika i wyliczone typy dla składnika FWPS. Dostępne tylko w zestawie Windows SDK.Uwaga Wyliczone typy FWPS trybu użytkownika są identyczne z wyliczonymi typami FWPS trybu jądra. W konsekwencji te typy są udokumentowane tylko w zestawie DDK.
Uwaga Prototypy funkcji FWPS trybu użytkownika są identyczne z prototypami funkcji FWPS trybu jądra z wyjątkiem kodu zwrotnego. Funkcje FWPS trybu użytkownika zwracają DWORD, natomiast funkcje FWPS trybu jądra zwracają NTSTATUS. W konsekwencji te funkcje są udokumentowane tylko w zestawie DDK.

Wszystkie funkcje trybu użytkownika są eksportowane z fwpuclnt.dll. Wszystkie funkcje trybu jądra są eksportowane z fwpkclnt.sys.

Typy danych zarządzania (FWPM) i objaśnień (FWPS)

Większość typów danych FWPM, które są używane do zadań zarządzania, takich jak dodawanie filtrów lub objaśnień z aplikacji lub sterownika, mają odpowiedniki FWPS. Typy danych FWPS są używane podczas rzeczywistego filtrowania ruchu sieciowego w kontekście procedury objaśnienia klasyfikacji.

Aby na przykład dodać filtr do określonej warstwy aparatu filtrowania, programista powinien użyć typu FWPM, takiego jak: filter.layerKey = FWPM_LAYER_INBOUND_IPPACKET. Aby sprawdzić, z której warstwy jest wywoływane objaśnienie, programista powinien użyć odpowiedniego typu FWPS: if (inFixedValues->layerId == FWPS_LAYER_INBOUND_IPPACKET).

Niektóre odpowiedniki FWPS z typami danych FWPM rozszerzają oryginalne typy danych FWPM. Aby na przykład dodać warunek filtru w wielu warstwach aparatu filtrowania, programista określa filterCondition.fieldKey = FWPM_CONDITION_IP_PROTOCOL niezależnie od warstwy aparatu filtrowania. Aby znaleźć wartość warunku filtru, programista określa typ FWPS specyficzny dla warstwy, na przykład: inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL].

Typy danych FWPS są zazwyczaj mniejsze niż ich odpowiedniki FWPM. Na przykład identyfikatory warstw filtrowania FWPM identyfikatorami GUID(16 bajtów), natomiast identyfikatory warstw filtrowania FWPS FWPS UINT16 (16-bitowe). Mniejszy rozmiar typów danych FWPS poprawia wydajność systemu, ponieważ porównania liczb całkowitych przewyższają identyfikator GUID porównania ruchu w czasie rzeczywistym. Ponadto pamięć jądra jest używana wydajnie, ponieważ typy FWPS są używane w jądrze do zarządzania filtrami, podczas gdy typy FWPM są przechowywane w trybie użytkownika do zarządzania różnymi warstwami.

modelu obiektów interfejsu API programu WFP

WFP API Object Management