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 documentati in DDK. |
fwpsk.h |
|
API IKE/AuthIP (IKEEXT)${REMOVE}$ |
tipi enumerati e strutture di usate per la gestione dei criteri e delle associazioni di sicurezza in modalità principale IKE e AuthIP. |
iketypes.idl |
Funzioni usate per la gestione dei criteri MM IKE e AuthIP e delle associazioni di sicurezza. |
fwpmk.h |
|
API IPsec (IPSEC)${REMOVE}$ |
i tipi enumerati e le strutture di usati per la gestione dei criteri e delle associazioni di sicurezza IPsec. |
ipsectypes.idl |
Funzioni usate per la gestione dei criteri E delle associazioni di sicurezza IPsec. |
fwpmk.h |
|
API di gestione (FWPM)${REMOVE}$ |
tipi enumerati e strutture usate 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) | I tipi enumerati fondamentali e strutture condivise nella piattaforma di filtro di Windows. |
fwptypes.idl |
I nomi dei tipi di dati sono tutti delimitati da caratteri maiuscoli e 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 con maiuscole e minuscole e delimitate 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 e 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) vengono definiti nel componente IKEEXT, ma vengono archiviati in un contesto del provider e sono associati a un filtro che si trovano entrambi 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 in modalità utente e in modalità kernel separate per i prototipi di funzione. I nomi dei file di intestazione in modalità utente terminano con i nomi dei file di intestazione "u" e in modalità kernel terminano con "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 nel 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 il filterCondition.fieldKey = FWPM_CONDITION_IP_PROTOCOL
indipendentemente 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 perché i confronti di interi superano GUID confronti 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.