Meilleures pratiques (plateforme de filtrage Windows)
La liste suivante contient les meilleures pratiques pour le développement d’applications à l’aide de l’API de plateforme de filtrage Windows (PAM).
Utilisez des sessions dynamiques.
De nombreuses applications ajoutent des objets de stratégie de filtrage au début, puis suppriment ces objets à l’arrêt. En utilisant une session dynamique, vous garantissez que ces objets sont supprimés même si l’application se bloque. En outre, la simple fermeture du handle du moteur à l’arrêt est plus efficace que d’effectuer des appels individuels pour supprimer chaque objet.
Gérez normalement les délais d’expiration des transactions ou définissez la session txnWaitTimeoutInMSec sur infini pour éviter les délais d’expiration.
Même si vous n’utilisez pas de transactions explicites, la plupart des appels sont toujours exécutés sous une transaction implicite et peuvent donc expirer.
Utilisez des transactions explicites pour combiner des opérations d’ajout ou de suppression associées en une seule transaction.
Cela est plus efficace et facilite l’propre résultats partiels dans les chemins d’erreur.
Utilisez des chaînes compatibles MUI.
Toutes les chaînes localisables sont stockées dans une structure de données commune : FWPM_DISPLAY_DATA0. Les chaînes au sein de cette structure peuvent être des chaînes indirectes du type pris en charge par SHLoadIndirectString. Avant qu’une structure FWPM_DISPLAY_DATA0 ne soit retournée par l’une des fonctions, les chaînes indirectes sont résolues en ressource de chaîne spécifiée à l’aide des paramètres régionaux de l’appelant.
Associez tous les objets à un fournisseur.
Lorsque plusieurs fournisseurs sont installés sur le système, il est plus facile pour les outils de diagnostic de déterminer qui a ajouté quoi.
Ajoutez des filtres à votre propre sous-couche.
Une fois qu’un filtre de fin dans une sous-couche est atteint, plus aucun filtre de cette sous-couche n’est évalué. Par conséquent, si vous ajoutez vos filtres au même sous-couche qu’un autre fournisseur, vous pouvez empêcher l’appel des filtres des uns et des autres, ce qui entraîne des résultats inattendus.
Utilisez Application Layer Enforcement (ALE) plutôt que le filtrage orienté paquets.
Le filtrage au niveau de la couche de paquets est lent.
Filtrez les erreurs ICMP et les événements RST avant leur génération.
Cela est plus efficace que le filtrage de ces événements après leur génération.
Effectuez une inspection des paquets au niveau de la couche de données stream/datagramme plutôt qu’au niveau de la couche transport.
Cela s’applique au développement de légendes. Pour plus d’informations, consultez Considérations relatives à la programmation des pilotes de légende dans le Kit de pilotes Windows (WDK).
Tenez compte des implications en matière de performances lors de l’utilisation de filtres complexes.
À compter de Windows 7 et Windows Server 2008 R2, des filtres peuvent être créés avec plusieurs conditions qui utilisent la même clé de champ. Cela permet de créer des stratégies complexes avec moins de filtres. Toutefois, ces filtres complexes peuvent entraîner des performances plus lentes pour le moteur de filtre PAM à classifier. Une évaluation doit être effectuée pour déterminer si l’utilisation de ces filtres a un effet négatif sur les performances globales de votre solution.