Práticas recomendadas (Plataforma de Filtragem do Windows)
A lista a seguir contém as práticas recomendadas para o desenvolvimento de aplicativos usando a API da Plataforma de Filtragem do Windows (WFP).
Use sessões dinâmicas.
Muitos aplicativos adicionam objetos de política de filtragem no início e, em seguida, excluem esses objetos em parada. Usando uma sessão dinâmica, você garante que esses objetos sejam excluídos mesmo que o aplicativo falhe. Além disso, simplesmente fechar o identificador do mecanismo em parada é mais eficiente do que fazer chamadas individuais para excluir cada objeto.
Manipule os tempos limite de transação normalmente ou defina a sessão txnWaitTimeoutInMSec como infinita para evitar tempos limite.
Mesmo que você não use transações explícitas, a maioria das chamadas ainda será executada em uma transação implícita e, portanto, poderá atingir o tempo limite.
Use transações explícitas para combinar operações relacionadas de adição ou exclusão em uma única transação.
Isso é mais eficiente e facilita limpo resultados parciais em caminhos de erro.
Use cadeias de caracteres compatíveis com MUI.
Todas as cadeias de caracteres localizáveis são armazenadas em uma estrutura de dados comum: FWPM_DISPLAY_DATA0. As cadeias de caracteres dentro dessa estrutura podem ser cadeias de caracteres indiretas do tipo com suporte por SHLoadIndirectString. Antes que uma estrutura de FWPM_DISPLAY_DATA0 seja retornada por qualquer uma das funções, as cadeias de caracteres indiretas são resolvidas para o recurso de cadeia de caracteres especificado usando a localidade do chamador.
Associe todos os objetos a um provedor.
Quando vários provedores são instalados no sistema, isso torna mais fácil para as ferramentas de diagnóstico determinar quem adicionou o quê.
Adicione filtros à sua própria subcaminha.
Depois que um filtro de terminação em uma subcamada for atingido, não serão avaliados mais filtros nessa subcamada. Portanto, se você adicionar seus filtros à mesma subcamada que outro provedor, poderá impedir que os filtros uns dos outros sejam invocados, resultando em resultados inesperados.
Use o ALE (Application Layer Enforcement) em vez de filtragem orientada a pacotes.
A filtragem na camada de pacotes é lenta.
Filtre erros de ICMP e eventos RST antes de serem gerados.
Isso é mais eficiente que filtrar esses eventos depois que eles são gerados.
Execute a inspeção de pacotes na camada Dados do Stream/Datagram em vez de na camada Transporte.
Isso se aplica ao desenvolvimento de textos explicativos. Para obter mais informações, consulte Considerações sobre programação de driver de texto explicativo no WDK (Kit de Driver do Windows).
Considere as implicações de desempenho ao usar filtros complexos.
A partir do Windows 7 e do Windows Server 2008 R2, os filtros podem ser criados com várias condições que usam a mesma chave de campo. Isso permite que políticas complexas sejam criadas com menos filtros. No entanto, esses filtros complexos podem incorrer em um desempenho mais lento para o mecanismo de filtro WFP classificar. Uma avaliação deve ser feita para determinar se o uso desses filtros causa um efeito adverso no desempenho geral da sua solução.