WFP API
L'API Windows Filtering Platform (WFP) è suddivisa nei componenti seguenti.
Componente | Descrizione | File di intestazione |
---|---|---|
API callout (FWPS)${REMOVE}$ |
Tipi di dati usati dai callout. Nota Questi tipi di dati sono documentati in Microsoft Windows Driver Development Kit (DDK). |
fwpstypes.idl |
Funzioni e tipi enumerati usati per implementare i callout. Nota Queste funzioni e tipi enumerati sono documentate in DDK. |
fwpsk.h |
|
API IKE/AuthIP (IKEEXT)${REMOVE}$ |
Tipi e strutture enumerati usati per la gestione dei criteri e delle associazioni di sicurezza IKE e AuthIP main mode (MM). |
iketypes.idl |
Funzioni usate per la gestione dei criteri MM IKE e AuthIP e delle associazioni di sicurezza. |
fwpmk.h |
|
API IPsec (IPSEC)${REMOVE}$ |
Tipi e struttureenumerati usati per la gestione dei criteri IPsec e delle associazioni di sicurezza. |
ipsectypes.idl |
Funzioni usate per la gestione dei criteri IPsec e delle associazioni di sicurezza. |
fwpmk.h |
|
API di gestione (FWPM)${REMOVE}$ |
Tipi e struttureenumerati usati per la gestione del motore di filtro. |
fwpmtypes.idl |
Funzioni usate per la gestione del motore di filtro. Queste funzioni vengono usate per eseguire le attività seguenti:
|
fwpmk.h |
|
API condivisa (FWP) | Tipi e struttureenumerati fondamentali condivisi in Windows Filtering Platform. |
fwptypes.idl |
I nomi dei tipi di dati sono tutti delimitati da maiuscole e caratteri di sottolineatura. Il nome inizia sempre con un prefisso che identifica il relativo gruppo di componenti, ad esempio FWPM_PROVIDER0.
I nomi delle funzioni sono maiuscole e minuscole e delimitati da maiuscole e minuscole. Il nome inizia sempre con un prefisso che identifica il relativo gruppo di componenti, ad esempio FwpmProviderContextAdd0.
La maggior parte dei nomi di dati e funzioni termina con un numero di versione. Il file di intestazione fwpvi.h esegue il mapping dei nomi di dati e funzioni indipendenti dalla versione alla versione appropriata per l'uso con un determinato sistema operativo. Per altre informazioni, vedere Wfp Version-Independent Names and Targeting Specific Versions of Windows.For more information, see WFP Version-Independent Names and Targeting Specific Versions of Windows.For more information, see WFP Version-Independent Names and Targeting Specific Versions of Windows.
Ogni componente non è autonomo. Ad esempio, i criteri della modalità principale IKE (MM) sono definiti nel componente IKEEXT, ma vengono archiviati in un contesto del provider e sono associati a un filtro che si trovano nel componente API FWPM.
User-Mode e Kernel-Mode file di intestazione pubblica
La maggior parte delle funzioni WFP può essere chiamata dalla modalità utente o dalla modalità kernel. Tuttavia, le funzioni in modalità utente restituiscono un valore DWORD che rappresenta un codice di errore Win32, mentre le funzioni in modalità kernel restituiscono un valore NTSTATUS che rappresenta un codice di stato NT. Di conseguenza, i nomi delle funzioni e la semantica sono identici tra la modalità utente e la modalità kernel, ma le firme della funzione non sono. Ciò richiede intestazioni specifiche della modalità utente e della modalità kernel separate per i prototipi di funzione. I nomi dei file di intestazione in modalità utente terminano in "u" e i nomi dei file di intestazione in modalità kernel terminano in "k".
La tabella seguente elenca i file di intestazione Win32 che definiscono le funzioni WFP.
File di intestazione | Descrizione |
---|---|
fwpmk.h | Prototipi di funzioni in modalità kernel per i componenti FWPM, IPsec e IKEEXT. Disponibile solo in DDK. |
fwpmu.h | Prototipi di funzioni in modalità utente per i componenti FWPM, IPsec e IKEEXT. Disponibile solo in Microsoft Windows Software Development Kit (SDK). |
fwpsk.h | Prototipi di funzioni in modalità kernel e tipi enumerati per il componente FWPS. Disponibile solo in DDK. |
fwpsu.h | Prototipi di funzioni in modalità utente e tipi enumerati per il componente FWPS. Disponibile solo in Windows SDK. Nota I tipi enumerati FWPS in modalità utente sono identici ai tipi enumerati FWPS in modalità kernel. Di conseguenza, questi tipi sono documentati solo in DDK. Nota I prototipi di funzione FWPS in modalità utente sono identici ai prototipi di funzione FWPS in modalità kernel, ad eccezione del codice restituito. Le funzioni FWPS in modalità utente restituiscono un DWORD, mentre le funzioni FWPS in modalità kernel restituiscono un NTSTATUS. Di conseguenza, queste funzioni sono documentate solo in DDK. |
Tutte le funzioni in modalità utente vengono esportate da fwpuclnt.dll. Tutte le funzioni in modalità kernel vengono esportate da fwpkclnt.sys.
Tipi di dati Di gestione (FWPM) e Callout (FWPS)
La maggior parte dei tipi di dati FWPM, usati per le attività di gestione, ad esempio l'aggiunta di filtri o callout da un'applicazione o un driver, hanno controparti FWPS. I tipi di dati FWPS vengono usati durante il filtro effettivo del traffico di rete, nel contesto di una routine di callout per la classificazione.
Ad esempio, per aggiungere un filtro a un determinato livello del motore di filtro, il programmatore deve usare un tipo FWPM, ad esempio: filter.layerKey = FWPM_LAYER_INBOUND_IPPACKET
. Per verificare da quale livello viene chiamato un callout, il programmatore deve usare il tipo FWPS corrispondente: if (inFixedValues->layerId == FWPS_LAYER_INBOUND_IPPACKET)
.
Alcune controparti FWPS ai tipi di dati FWPM stanno espandendo i tipi di dati FWPM originali. Ad esempio, per aggiungere una condizione di filtro a molti livelli del motore di filtro, il programmatore specifica indipendentemente filterCondition.fieldKey = FWPM_CONDITION_IP_PROTOCOL
dal livello del motore di filtro. Per trovare un valore di condizione di filtro, il programmatore specifica un tipo FWPS specifico del livello, ad esempio: inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL]
.
I tipi di dati FWPS sono in genere più piccoli rispetto alle controparti FWPM. Ad esempio, gli identificatori del livello di filtro FWPM sono GUIDs (16 byte), mentre gli identificatori del livello di filtro FWPS sono UINT16 (16 bit). Le dimensioni inferiori per i tipi di dati FWPS migliorano le prestazioni di sistema, poiché i confronti tra numeri interi superano i confronti GUID per il traffico in tempo reale. Inoltre, la memoria del kernel viene usata in modo efficiente poiché i tipi FWPS vengono tutti usati nel kernel per la gestione dei filtri, mentre i tipi FWPM vengono archiviati in modalità utente per gestire i diversi livelli.