Udostępnij przez


Najlepsze rozwiązania (platforma filtrowania systemu Windows)

Poniższa lista zawiera najlepsze rozwiązania dotyczące tworzenia aplikacji przy użyciu interfejsu API platformy filtrowania systemu Windows (WFP).

  • Użyj sesji dynamicznych.

    Wiele aplikacji dodaje obiekty zasad filtrowania podczas uruchamiania, a następnie usuwa te obiekty podczas zatrzymywania. Korzystając z sesji dynamicznej, gwarantujesz, że te obiekty zostaną usunięte, nawet jeśli aplikacja ulegnie awarii. Ponadto po prostu zamknięcie uchwytu silnika przy zatrzymaniu jest bardziej wydajne niż wykonywanie poszczególnych wywołań w celu usunięcia każdego obiektu.

  • Obsłuż limity czasu transakcji w sposób płynny lub ustaw sesję txnWaitTimeoutInMSec na nieskończoność, aby zapobiec limitom czasu.

    Nawet jeśli nie używasz jawnych transakcji, większość wywołań jest nadal wykonywana w ramach niejawnej transakcji, co może skutkować przekroczeniem limitu czasu.

  • Użyj jawnych transakcji, aby połączyć powiązane operacje dodawania lub usuwania w jedną transakcję.

    Jest to bardziej wydajne i ułatwia czyszczenie częściowych wyników w ścieżkach błędów.

  • Użyj ciągów zgodnych z interfejsem MUI.

    Wszystkie ciągi lokalizowalne są przechowywane w wspólnej strukturze danych: FWPM_DISPLAY_DATA0. Ciągi w tej strukturze mogą być ciągami pośrednimi typu obsługiwanymi przez SHLoadIndirectString. Zanim struktura FWPM_DISPLAY_DATA0 zostanie zwrócona przez dowolną z funkcji, ciągi pośrednie są rozpoznawane jako określony zasób ciągu przy użyciu ustawień regionalnych obiektu wywołującego.

  • Skojarz wszystkie obiekty z dostawcą.

    Gdy w systemie jest zainstalowanych wielu dostawców, ułatwia to określenie, kto dodał, co.

  • Dodaj filtry do własnej warstwy podrzędnej.

    Po trafieniu filtru kończącego w podwarstwowej warstwie nie są oceniane żadne filtry w tej warstwie podrzędnej. W związku z tym, jeśli dodasz filtry do tej samej warstwy podrzędnej co inny dostawca, możesz uniemożliwić wywoływanie filtrów nawzajem, co spowoduje nieoczekiwane wyniki.

  • Użyj wymuszania warstwy aplikacji (ALE), a nie filtrowania zorientowanego na pakiety.

    Filtrowanie w warstwie pakietów działa wolno.

  • Filtruj błędy protokołu ICMP i zdarzenia RST przed ich wygenerowaniem.

    Jest to bardziej wydajne niż filtrowanie tych zdarzeń po ich wygenerowaniu.

  • Przeprowadź inspekcję pakietów w warstwie danych Stream/Datagram, a nie w warstwie transportowej.

    Dotyczy to opracowywania objaśnień. Aby uzyskać więcej informacji, zobacz Callout Driver Programming Considerations w zestawie sterowników systemu Windows (WDK).

  • Rozważ implikacje dotyczące wydajności podczas korzystania ze złożonych filtrów.

    Począwszy od systemów Windows 7 i Windows Server 2008 R2, można tworzyć filtry z wieloma warunkami, które używają tego samego klucza pola. Dzięki temu można tworzyć złożone zasady z mniejszą liczbą filtrów. Jednak takie złożone filtry mogą powodować wolniejsze działanie silnika filtrującego WFP przy klasyfikowaniu. Należy przeprowadzić ocenę, aby określić, czy użycie takich filtrów powoduje negatywny wpływ na ogólną wydajność rozwiązania.