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.idl |
Functions i wyliczane typy używane do implementowania objaśnień.Uwaga Te funkcje i typy wyliczane są udokumentowane w zestawie DDK. |
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.idl |
functions używane do zarządzania zasadami IKE i AuthIP MM i skojarzeniami zabezpieczeń. |
fwpmk.h |
|
Interfejs API protokołu IPsec (IPSEC)${REMOVE}$ |
Wyliczone typy i struktury używane do zarządzania zasadami IPsec i skojarzeniami zabezpieczeń. |
ipsectypes.idl |
Functions używane do zarządzania zasadami IPsec i skojarzeniami zabezpieczeń. |
fwpmk.h |
|
Interfejs API zarządzania (FWPM)${REMOVE}$ |
Wyliczone typy i struktury używane do zarządzania aparatem filtrów. |
fwpmtypes.idl |
Functions używane do zarządzania aparatem filtrów. Te funkcje służą do wykonywania następujących zadań:
|
fwpmk.h |
|
Udostępniony interfejs API (FWP) | Podstawowe wyliczane typy i struktury współużytkowane na platformie filtrowania systemu Windows. |
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 są identyfikatorami GUID(16 bajtów), natomiast identyfikatory warstw filtrowania FWPS FWPS są 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.