Partilhar via


API do PAM

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

Componente Descrição Arquivos de cabeçalho
API de texto explicativo (FWPS)${REMOVE}$
Os tipos de dados usados por textos explicativos.Observação Esses tipos de dados estão documentados no Microsoft Windows Driver Development Kit (DDK).
fwpstypes.h
fwpstypes.idl
Funções 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 usados para gerenciar diretivas de modo principal (MM) IKE e AuthIP e associações de segurança.
iketypes.h
iketypes.idl
Funções usadas para gerenciar políticas e associações de segurança IKE e AuthIP MM.
fwpmu.h
fwpmk.h
API IPsec (IPSEC)${REMOVE}$
Tipos enumerados e estruturas usados para gerenciar diretivas IPsec e associações de segurança.
ipsectypes.h
ipsectypes.idl
Funções usadas para gerenciar diretivas IPsec e associações de segurança.
fwpmu.h
fwpmk.h
API de gerenciamento (FWPM)${REMOVE}$
Tipos enumerados e estruturas usados 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:
  • Defina e consulte filtros, provedores e textos explicativos.
  • Recupere estatísticas IPsec.
  • Configure a Plataforma de Filtragem do Windows.
fwpmu.h
fwpmk.h
API compartilhada (FWP) Fundamental tipos enumerados e estruturas compartilhadas na Plataforma de Filtragem do Windows.
fwptypes.h
fwptypes.idl

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

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

A maioria dos dados e nomes de funções terminam 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 WFP Version-Independent Names and Targeting Specific Versions of Windows.

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

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

A maioria das funções do WFP pode ser chamada a partir do modo de usuário ou do modo kernel. No entanto, as funções de modo de usuário retornam um valor de 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, os 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. Isso requer cabeçalhos específicos separados do modo de usuário e do modo kernel para os protótipos de função. Os nomes dos arquivos de cabeçalho do modo de usuário terminam em "u" e os nomes dos arquivos de cabeçalho do 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 de modo kernel para componentes FWPM, IPsec e IKEEXT. Disponível apenas no DDK.
fwpmu.h Protótipos de função de 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 de modo kernel e tipos enumerados para o componente FWPS. Disponível apenas no DDK.
fwpsu.h Protótipos de função de modo de usuário e tipos enumerados para o componente FWPS. Disponível apenas no SDK do Windows.Nota Os tipos enumerados FWPS de modo de usuário são idênticos aos tipos enumerados FWPS de modo kernel. Em consequência, estes tipos são documentados apenas no DDK.
Nota Os protótipos de função FWPS de modo de usuário são idênticos aos protótipos de função FWPS de modo kernel, com exceção do código de retorno. As funções FWPS de modo de usuário retornam um DWORD, enquanto as funções FWPS de modo kernel retornam um NTSTATUS. Em consequência, estas funções são documentadas apenas no DDK.

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

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

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, têm 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).

Algumas contrapartes 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 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 de FWPS específico da camada, como: inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL].

Os tipos de dados FWPS são geralmente menores do que seus homólogos 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 as comparações de inteiros superam comparações de GUID para tráfego em tempo real. Além disso, a memória do kernel é usada de forma eficiente, uma vez que 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 do WFP

de gerenciamento de objetos da API do WFP