Compartilhar via


WFP API

A API da Plataforma de Filtragem do Windows (WFP) é dividida nos seguintes componentes.

Componente Descrição Arquivos de cabeçalho
de API de Texto Explicativo (FWPS)${REMOVE}$
tipos de dados usados por textos explicativos.Observação Esses tipos de dados estão documentados no DDK (Microsoft Windows Driver Development Kit).
fwpstypes.h
fwpstypes.idl
functions e tipos enumerados usados para implementar textos explicativos.Observação Essas funções e tipos enumerados estão documentados no DDK.
fwpsu.h
fwpsk.h
API IKE/AuthIP (IKEEXT)${REMOVE}$
tipos enumerados e estruturas de usadas para gerenciar associações de política e segurança do MM (modo principal de IKE e AuthIP).
iketypes.h
iketypes.idl
Functions usados para gerenciar associações de política e segurança do IKE e do AuthIP MM.
fwpmu.h
fwpmk.h
API IPsec (IPSEC)${REMOVE}$
tipos enumerados e estruturas de usadas para gerenciar políticas IPsec e associações de segurança.
ipsectypes.h
ipsectypes.idl
Functions usados para gerenciar políticas IPsec e associações de segurança.
fwpmu.h
fwpmk.h
API de gerenciamento (FWPM)${REMOVE}$
tipos enumerados e estruturas usadas para gerenciar o mecanismo de filtro.
fwpmtypes.h
fwpmtypes.idl
Functions usados para gerenciar o mecanismo de filtro. Essas funções são usadas para executar as seguintes tarefas:
  • Definir e consultar filtros, provedores e textos explicativos.
  • Recuperar estatísticas do IPsec.
  • Configure a Plataforma de Filtragem do Windows.
fwpmu.h
fwpmk.h
FWP (API Compartilhada) Tipos fundamentais enumerados e estruturas de compartilhados na Plataforma de Filtragem do Windows.
fwptypes.h
fwptypes.idl

Os nomes de tipo de dados são todos maiúsculas e minúsculas e delimitados por sublinhado. O nome sempre começa com um prefixo que identifica seu grupo de componentes, como FWPM_PROVIDER0.

Os nomes de função são delimitados por maiúsculas de minúsculas e maiúsculas de minúsculas. O nome sempre começa com um prefixo que identifica seu grupo de componentes, como FwpmProviderContextAdd0.

A maioria dos nomes de dados e funções termina com um número de versão. O arquivo de cabeçalho fwpvi.h mapeia dados independentes de versão e nomes de função para a versão apropriada para uso com um determinado sistema operacional. Para obter mais informações, consulte nomes de Version-Independent WFP e direcionamento de versões específicas do Windows.

Cada componente não fica sozinho. Por exemplo, as políticas de MM (modo principal) IKE são definidas no componente IKEEXT, mas são armazenadas em um contexto de provedor e são associadas a um filtro que é encontrado no componente da API FWPM.

arquivos de cabeçalho público User-Mode e Kernel-Mode

A maioria das funções do WFP pode ser chamada do modo de usuário ou do modo kernel. No entanto, as funções de modo de usuário retornam um valor DWORD que representa um código de erro Win32, enquanto as funções de modo kernel retornam um valor de NTSTATUS que representa um código de status NT. Como resultado, nomes de função e semântica são idênticos entre o modo de usuário e o modo kernel, mas as assinaturas de função não são. Isso requer cabeçalhos específicos do modo de usuário e do modo kernel separados para os protótipos de função. Os nomes de arquivo de cabeçalho do modo de usuário terminam em "u" e os nomes de arquivo de cabeçalho no modo kernel terminam em "k".

A tabela a seguir lista os arquivos de cabeçalho Win32 que definem as funções WFP.

Arquivos de cabeçalho Descrição
fwpmk.h Protótipos de função no modo kernel para componentes FWPM, IPsec e IKEEXT. Disponível somente no DDK.
fwpmu.h Protótipos de função do modo de usuário para componentes FWPM, IPsec e IKEEXT. Disponível apenas no SDK (Microsoft Windows Software Development Kit).
fwpsk.h Protótipos de função no modo kernel e tipos enumerados para componente FWPS. Disponível somente no DDK.
fwpsu.h Protótipos de função do modo de usuário e tipos enumerados para componente FWPS. Disponível somente no SDK do Windows.Observação os tipos enumerados FWPS no modo de usuário são idênticos aos tipos enumerados FWPS no modo kernel. Em consequência, esses tipos são documentados apenas no DDK.
Observação Os protótipos de função FWPS no modo de usuário são idênticos aos protótipos de função FWPS no modo kernel, com exceção do código de retorno. As funções FWPS no modo de usuário retornam um DWORD, enquanto as funções FWPS no modo kernel retornam um NTSTATUS. Em consequência, essas funções são documentadas apenas no DDK.

Todas as funções de modo de usuário são exportadas de fwpuclnt.dll. Todas as funções do modo kernel são exportadas de fwpkclnt.sys.

Tipos de dados FWPM (gerenciamento) e FWPS (texto explicativo)

A maioria dos tipos de dados FWPM, que são usados para tarefas de gerenciamento, como adicionar filtros ou textos explicativos de um aplicativo ou driver, tem equivalentes FWPS. Os tipos de dados FWPS são usados durante a filtragem real do tráfego de rede, no contexto de uma rotina de texto explicativo para classificação.

Por exemplo, para adicionar um filtro a uma determinada camada do mecanismo de filtragem, o programador deve usar um tipo FWPM, como: filter.layerKey = FWPM_LAYER_INBOUND_IPPACKET. Para verificar de qual camada um texto explicativo está sendo chamado, o programador deve usar o tipo FWPS correspondente: if (inFixedValues->layerId == FWPS_LAYER_INBOUND_IPPACKET).

Alguns equivalentes do FWPS para tipos de dados FWPM estão expandindo os tipos de dados FWPM originais. Por exemplo, para adicionar uma condição de filtro a muitas camadas do mecanismo de filtragem, o programador especifica o filterCondition.fieldKey = FWPM_CONDITION_IP_PROTOCOL independentemente da camada do mecanismo de filtragem. Para encontrar um valor de condição de filtro, o programador especifica um tipo FWPS específico da camada, como: inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL].

Os tipos de dados FWPS geralmente são menores do que seus equivalentes do FWPM. Por exemplo, os identificadores de camada de filtragem FWPM são guids (16 bytes), enquanto os identificadores de camada de filtragem FWPS são UINT16 (16 bits). O tamanho menor para tipos de dados FWPS melhora o desempenho do sistema, uma vez que comparações de inteiros superam GUID comparações de tráfego em tempo real. Além disso, a memória do kernel é usada com eficiência, pois os tipos FWPS são todos usados no kernel para gerenciar os filtros, enquanto os tipos FWPM são armazenados no modo de usuário para gerenciar as diferentes camadas.

modelo de objeto da API WFP

de Gerenciamento de Objetos da API WFP