Funzione FwpmFilterAdd0 (fwpmu.h)
La funzione FwpmFilterAdd0 aggiunge un nuovo oggetto filtro al sistema.
Sintassi
DWORD FwpmFilterAdd0(
[in] HANDLE engineHandle,
[in] const FWPM_FILTER0 *filter,
[in, optional] PSECURITY_DESCRIPTOR sd,
[out, optional] UINT64 *id
);
Parametri
[in] engineHandle
Tipo: HANDLE
Handle per una sessione aperta al motore di filtro. Chiamare FwpmEngineOpen0 per aprire una sessione al motore di filtro.
[in] filter
Tipo: FWPM_FILTER0*
Oggetto filtro da aggiungere.
[in, optional] sd
Tipo: SECURITY_DESCRIPTOR
Informazioni di sicurezza sull'oggetto filtro.
[out, optional] id
Tipo: UINT64*
Identificatore di runtime per questo filtro.
Valore restituito
Tipo: DWORD
Codice/valore restituito | Descrizione |
---|---|
ERROR_SUCCESS 0 |
Il filtro è stato aggiunto correttamente. |
ERROR_INVALID_SECURITY_DESCR 0x8007053A |
La struttura del descrittore di sicurezza non è valida. In alternativa, una condizione di filtro contiene un descrittore di sicurezza in formato assoluto. |
FWP_E_CALLOUT_NOTIFICATION_FAILED 0x80320037 |
Il chiamante ha aggiunto un filtro callout e il callout ha restituito un errore dalla routine di notifica. |
FWP_E_* codice di errore 0x80320001: 0x80320039 |
Errore specifico di Windows Filtering Platform (WFP). Per informazioni dettagliate, vedere Codici di errore del WFP . |
RPC_* codice di errore 0x80010001: 0x80010122 |
Errore di comunicazione con il motore firewall remoto o locale. |
Commenti
FwpmFilterAdd0 aggiunge il filtro al livello secondario specificato a ogni livello di filtro nel sistema.
Alcuni campi nella struttura FWPM_FILTER0 vengono assegnati dal sistema, non dal chiamante e vengono ignorati nella chiamata a FwpmFilterAdd0.
Se il chiamante fornisce un descrittore di sicurezza NULL , il sistema assegnerà un descrittore di sicurezza predefinito.
Per bloccare le connessioni a posizioni specifiche, aggiungere un filtro FWP_ACTION_BLOCK che specifica l'indirizzo locale al livello FWPM_LAYER_ALE_AUTH_CONNECT_V* oppure aggiungere un filtro FWP_ACTION_BLOCK senza specificare l'indirizzo locale al livello FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V*.
Nota
Se viene specificato un indirizzo locale al livello di assegnazione delle risorse, un binding implicito avrà esito positivo perché indirizzo, tipo di indirizzo e porta potrebbe tornare come FWP_EMPTY.
La struttura FWPM_FILTER0 può etichettare un filtro come filtro di avvio o persistente. I filtri di avvio vengono aggiunti al motore di filtro di base (BFE) all'avvio del driver TCP/IP e vengono rimossi al termine dell'inizializzazione BFE. Gli oggetti persistenti vengono aggiunti all'avvio del BFE.
Questa funzione non può essere chiamata dall'interno di una transazione di sola lettura. L'errore avrà esito negativo con FWP_E_INCOMPATIBLE_TXN. Per altre informazioni sulle transazioni, vedere Gestione oggetti.
Il chiamante deve disporre dei diritti di accesso seguenti:
- FWPM_ACTRL_ADD l'accesso al contenitore del filtro
- FWPM_ACTRL_ADD_LINK l'accesso al provider (se presente)
- FWPM_ACTRL_ADD_LINK l'accesso al livello applicabile
- FWPM_ACTRL_ADD_LINK l'accesso al sotto layer applicabile
- FWPM_ACTRL_ADD_LINK l'accesso al callout (se presente)
- FWPM_ACTRL_ADD_LINK l'accesso al contesto del provider (se presente).
Per altre informazioni, vedere Controllo di accesso.
Per aggiungere un filtro che fa riferimento a un callout, richiamare le funzioni nell'ordine seguente.
- Chiamare FwpsCalloutRegister0 (documentato in Windows Driver Kit (WDK) per registrare il callout con il motore di filtro.
- Chiamare FwpmCalloutAdd0 per aggiungere il callout al sistema.
- Chiamare FwpmFilterAdd0 per aggiungere il filtro che fa riferimento al callout al sistema.
Per impostazione predefinita, i filtri che fanno riferimento ai callout aggiunti ma che non sono ancora stati registrati con il motore di filtro vengono considerati filtri di blocco.
FwpmFilterAdd0 è un'implementazione specifica di FwpmFilterAdd. Per altre informazioni, vedere Wfp Version-Independent Names and Targeting Specific Versions of Windows .See WFP Version-Independent Names and Targeting Specific Versions of Windows.See WFP Version-Independent Names and Targeting Specific Versions of Windows for more information.
Esempio
L'esempio C++ seguente illustra come inizializzare e aggiungere un filtro usando FwpmFilterAdd0 che
blocca in modo specifico il traffico su IP V4 per tutte le applicazioni.
// Add filter to block traffic on IP V4 for all applications.
//
FWPM_FILTER0 fwpFilter;
FWPM_SUBLAYER0 fwpFilterSubLayer;
RtlZeroMemory(&fwpFilter, sizeof(FWPM_FILTER0));
fwpFilter.layerKey = FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4;
fwpFilter.action.type = FWP_ACTION_BLOCK;
if (&fwpFilterSubLayer.subLayerKey != NULL)
fwpFilter.subLayerKey = fwpFilterSubLayer.subLayerKey;
fwpFilter.weight.type = FWP_EMPTY; // auto-weight.
fwpFilter.numFilterConditions = 0; // this applies to all application traffic
fwpFilter.displayData.name = L"Receive/Accept Layer Block";
fwpFilter.displayData.description = L"Filter to block all inbound connections.";
printf("Adding filter to block all inbound connections.\n");
result = FwpmFilterAdd0(engineHandle, &fwpFilter, NULL, NULL);
if (result != ERROR_SUCCESS)
printf("FwpmFilterAdd0 failed. Return value: %d.\n", result);
else
printf("Filter added successfully.\n");
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2008 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | fwpmu.h |
Libreria | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |