Função FwpmFilterAdd0 (fwpmk.h)
A função
Sintaxe
NTSTATUS FwpmFilterAdd0(
[in] HANDLE engineHandle,
[in] const FWPM_FILTER0 *filter,
[in, optional] PSECURITY_DESCRIPTOR sd,
[out, optional] UINT64 *id
);
Parâmetros
[in] engineHandle
Manipule uma sessão aberta para o mecanismo de filtro. Chame FwpmEngineOpen0 para abrir uma sessão no mecanismo de filtro.
[in] filter
O objeto de filtro a ser adicionado.
[in, optional] sd
Informações de segurança sobre o objeto de filtro.
[out, optional] id
O identificador de runtime para esse filtro.
Valor de retorno
Observações
FwpmFilterAdd0 adiciona o filtro à subcamada especificada em cada camada de filtragem no sistema.
Alguns campos na estrutura FWPM_FILTER0 são atribuídos pelo sistema, não pelo chamador e são ignorados na chamada para FwpmFilterAdd0.
Se o chamador fornecer um descritor de segurança NULL, o sistema atribuirá um descritor de segurança padrão.
Para bloquear conexões a locais específicos, adicione um filtro
Se um endereço local for especificado na camada de atribuição de recurso, uma associação implícita terá êxito porque o endereço, o tipo de endereço e a porta podem voltar como FWP_EMPTY.
A estrutura FWPM_FILTER0 pode rotular um filtro como um filtro de tempo de inicialização ou persistente. Os filtros de tempo de inicialização são adicionados ao BFE (Mecanismo de Filtragem Base) quando o driver TCP/IP é iniciado e removidos quando o BFE conclui a inicialização. Objetos persistentes são adicionados quando o BFE é iniciado.
Essa função não pode ser chamada de dentro de uma transação somente leitura, ela falha com FWP_E_INCOMPATIBLE_TXN. Consulte de Gerenciamento de Objetos para obter mais informações sobre transações.
O chamador precisa dos seguintes direitos de acesso:
- FWPM_ACTRL_ADD acesso ao contêiner do filtro
- FWPM_ACTRL_ADD_LINK acesso ao provedor (se houver)
- FWPM_ACTRL_ADD_LINK acesso à camada aplicável
- FWPM_ACTRL_ADD_LINK acesso à subcaminho aplicável
- FWPM_ACTRL_ADD_LINK acesso ao texto explicativo (se houver)
- FWPM_ACTRL_ADD_LINK acesso ao contexto do provedor (se houver).
Consulte de Controle de Acesso para obter mais informações.
Para adicionar um filtro que faça referência a um texto explicativo, invoque as funções na ordem a seguir.
- Chame FwpsCalloutRegister0 (documentado no WDK (Windows Driver Kit)) para registrar o texto explicativo com o mecanismo de filtro.
- Chame FwpmCalloutAdd0 para adicionar o texto explicativo ao sistema.
- Chame FwpmFilterAdd0 para adicionar o filtro que faz referência ao texto explicativo ao sistema.
Por padrão, os filtros que fazem referência a textos explicativos que foram adicionados, mas que ainda não foram registrados com o mecanismo de filtro, são tratados como filtros de bloco.
FwpmFilterAdd0 é uma implementação específica do FwpmFilterAdd. Consulte nomes de Version-Independent WFP e versões específicas de destino do Windows para obter mais informações.
Exemplos
O exemplo C++ a seguir mostra como inicializar e adicionar um filtro usando FwpmFilterAdd0 que bloqueia especificamente o tráfego no IP V4 para todos os aplicativos.
// 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");
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows Vista. |
da Plataforma de Destino |
Universal |
cabeçalho | fwpmk.h |
biblioteca | fwpkclnt.lib |
IRQL | <= PASSIVE_LEVEL |
Consulte também
- FwpsCalloutRegister0
- FwpmCalloutAdd0
- FWPM_FILTER0
- Funções de gerenciamento de
- do WFP Functions
- nomes de Version-Independent WFP e direcionamento de versões específicas do Windows