WFP API

A API WFP (Plataforma de Filtragem do Windows) é dividida nos componentes a seguir.

Componente Descrição Arquivos de cabeçalho
API de texto explicativo (FWPS)${REMOVE}$
Tipos de dados usados por textos explicativos. Nota Esses tipos de dados estão documentados no DDK (Microsoft Windows Driver Development Kit).
fwpstypes.h
fwpstypes.idl
Funções e tipos enumerados usados para implementar textos explicativos. Nota Essas funções e tipos enumerados estão documentados no DDK.
fwpsu.h
fwpsk.h
API IKE/AuthIP (IKEEXT)${REMOVE}$
Tipos e estruturas enumeradosusados para gerenciar a política e as associações de segurança do modo de main de IKE e AuthIP (MM).
iketypes.h
iketypes.idl
Funções usadas para gerenciar associações de segurança e política mm de IKE e AuthIP.
fwpmu.h
fwpmk.h
IPSEC (API IPsec)${REMOVE}$
Tipos e estruturas enumeradosusados para gerenciar políticas IPsec e associações de segurança.
ipsectypes.h
ipsectypes.idl
Funções usadas para gerenciar políticas IPsec e associações de segurança.
fwpmu.h
fwpmk.h
API de Gerenciamento (FWPM)${REMOVE}$
Tipos e estruturas enumeradosusados para gerenciar o mecanismo de filtro.
fwpmtypes.h
fwpmtypes.idl
Funções usadas 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 IPsec.
  • Configurar a Plataforma de Filtragem do Windows.
fwpmu.h
fwpmk.h
FWP (API Compartilhada) Tipos e estruturas enumerados fundamentais compartilhados na Plataforma de Filtragem do Windows.
fwptypes.h
fwptypes.idl

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

Os nomes de função são mistos e delimitados por 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 modo de main de IKE (MM) são definidas no componente IKEEXT, mas são armazenadas em um contexto de provedor e estã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 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 do modo kernel retornam um valor NTSTATUS que representa um código NT status. 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 apenas no DDK.
fwpmu.h Protótipos de função no modo de usuário para componentes FWPM, IPsec e IKEEXT. Disponível apenas no Microsoft Windows Software Development Kit (SDK).
fwpsk.h Protótipos de função no modo kernel e tipos enumerados para o componente FWPS. Disponível apenas no DDK.
fwpsu.h Protótipos de função do modo de usuário e tipos enumerados para o componente FWPS. Disponível apenas no SDK do Windows. Nota 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.
Nota 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 marcar 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 aos tipos de dados FWPM estão expandindo os tipos de dados FWPM originais. Por exemplo, para adicionar uma condição de filtro em 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 da camada de filtragem FWPM são GUIDs (16 bytes), enquanto os identificadores da 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 as comparações de GUID para 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

Gerenciamento de objetos da API do WFP