Bewährte Methoden (Windows-Filterplattform)

Die folgende Liste enthält bewährte Methoden für die Entwicklung von Anwendungen mithilfe der WFP-API (Windows Filtering Platform).

  • Verwenden Sie dynamische Sitzungen.

    Viele Anwendungen fügen filterungsrichtlinienobjekte beim Start hinzu und löschen diese Objekte dann beim Beenden. Durch die Verwendung einer dynamischen Sitzung können Sie sicherstellen, dass diese Objekte auch dann gelöscht werden, wenn die Anwendung abstürzt. Darüber hinaus ist das einfache Schließen des Engine-Handles beim Beenden effizienter als einzelne Aufrufe zum Löschen jedes Objekts.

  • Behandeln Sie Transaktionstimeouts ordnungsgemäß, oder legen Sie die Sitzung txnWaitTimeoutInMSec auf unendlich fest, um Timeouts zu verhindern.

    Selbst wenn Sie keine expliziten Transaktionen verwenden, werden die meisten Aufrufe weiterhin im Rahmen einer impliziten Transaktion ausgeführt und können daher ein Timeout haben.

  • Verwenden Sie explizite Transaktionen, um verwandte Add- oder Delete-Vorgänge in einer einzelnen Transaktion zu kombinieren.

    Dies ist effizienter und erleichtert das sauber von Teilergebnissen in Fehlerpfaden.

  • Verwenden Sie MUI-konforme Zeichenfolgen.

    Alle lokalisierbaren Zeichenfolgen werden in einer gemeinsamen Datenstruktur gespeichert: FWPM_DISPLAY_DATA0. Die Zeichenfolgen innerhalb dieser Struktur können indirekte Zeichenfolgen des Typs sein, der von SHLoadIndirectString unterstützt wird. Bevor eine FWPM_DISPLAY_DATA0-Struktur von einer der Funktionen zurückgegeben wird, werden die indirekten Zeichenfolgen mithilfe des Gebietsschemas des Aufrufers in die angegebene Zeichenfolgenressource aufgelöst.

  • Ordnen Sie alle Objekte einem Anbieter zu.

    Wenn mehrere Anbieter auf dem System installiert sind, ist dies für Diagnosetools einfacher zu bestimmen, wer was hinzugefügt hat.

  • Fügen Sie Ihrer eigenen Unterschicht Filter hinzu.

    Sobald ein Abbruchfilter in einer Unterschicht erreicht wird, werden keine Filter mehr in dieser Unterschicht ausgewertet. Wenn Sie Also Ihre Filter derselben Sublayer wie ein anderer Anbieter hinzufügen, können Sie verhindern, dass die Filter des jeweils anderen Anbieters aufgerufen werden, was zu unerwarteten Ergebnissen führt.

  • Verwenden Sie die Anwendungsebenenerzwingung (Application Layer Enforcement, ALE) anstelle der paketorientierten Filterung.

    Die Filterung auf Paketebene ist langsam.

  • Filtern Sie ICMP-Fehler und RST-Ereignisse, bevor sie generiert werden.

    Dies ist effizienter als das Filtern dieser Ereignisse, nachdem sie generiert wurden.

  • Führen Sie die Paketüberprüfung auf der Datenebene Stream/Datagram statt auf der Transportebene durch.

    Dies gilt für die Entwicklung von Legenden. Weitere Informationen finden Sie unter Überlegungen zur Programmierung von Beschriftungstreibern im Windows Driver Kit (WDK).

  • Berücksichtigen Sie die Auswirkungen auf die Leistung bei der Verwendung komplexer Filter.

    Ab Windows 7 und Windows Server 2008 R2 können Filter mit mehreren Bedingungen erstellt werden, die denselben Feldschlüssel verwenden. Dadurch können komplexe Richtlinien mit weniger Filtern erstellt werden. Solche komplexen Filter können jedoch eine langsamere Leistung für die WFP-Filter-Engine zur Klassifizierung verursachen. Es sollte eine Bewertung durchgeführt werden, um festzustellen, ob die Verwendung solcher Filter eine negative Auswirkung auf die Gesamtleistung Ihrer Lösung hat.