Teilen über


Schreiben des PATTERNMATCH-Filters

Der Mustervergleichsfilter benachrichtigt den Treiber, Frames zu akzeptieren, die ein bestimmtes Muster an einem bestimmten Offset aufweisen. Sie können maximal vier detaillierte Mustervergleiche angeben, die in logischen AND- oder OR-Anweisungen für die Netzwerkmonitortreiberauswertung kombiniert werden können.

Verwenden Sie die folgenden Netzwerkmonitorstrukturen, um Mustervergleiche zu implementieren:

Um eine OR-Anweisung auszuwerten, kombinieren Sie zwei bis vier Muster mit einer ANDEXP-Struktur (PatternMatch1 || PatternMatch2 || PatternMatch3). Um eine AND-Anweisung auszuwerten, kombinieren Sie eine bis vier ANDEXP-Strukturen und eine EXPRESSION-Struktur (AndExp1 && AndExp2).

Mustervergleichsdefinitionen

Eine einzelne Musterübereinstimmung wird durch die PATTERNMATCH-Struktur definiert. Eine einzelne Übereinstimmung kann auf eine von zwei Arten ausgeführt werden.

Normalerweise nimmt der Treiber die Offsetbasis (die OFFSET_BASIS_RELATIVE_TO_FRAME, OFFSET_BASIS_RELATIVE_TO_EFFECTIVE_PROTOCOL, OFFSET_BASIS_RELATIVE_TO_IPX oder OFFSET_BASIS_RELATIVE_TO_IP sein kann) und beginnt dort mit der Zählung. Der Treiber zählt Offsetbytes von dort und gleicht dann die gefundenen Daten mit den bytes der ersten Länge in PatternToMatch ab. Wenn sie identisch sind und das flag PATTERN_MATCH_FLAGS_NOT nicht festgelegt ist, wird dieses Muster übergeben. Wenn sie unterschiedlich sind und die PATTERN_MATCH_FLAGS_NOT festgelegt wurde, wird das Muster übergeben. Andernfalls schlägt dieses Muster fehl.

Oder:

Wenn das PATTERN_MATCH_FLAGS_PORT_SPECIFIED-Flag festgelegt ist und die Basis auf OFFSET_BASIS_RELATIVE_TO_IPX oder OFFSET_BASIS_RELATIVE_TO_IP festgelegt ist, ist der Vergleich komplexer. Zunächst stellt der Treiber sicher, dass das Offsetbasisprotokoll vorhanden ist, und dann überprüft der Treiber, ob der angegebene Port mit dem Port im Frame übereinstimmt. Schließlich stellt der Treiber sicher, dass der PatternToMatch-Member wie zuvor übereinstimmt, mit der Ausnahme, dass der Offset vom Ende der IP- oder IPX-Adresse stammt. Beachten Sie, dass das PATTERN_MATCH_FLAGS_PORT_SPECIFIED-Flag ignoriert wird, wenn die Basis nicht eine dieser beiden ist, und das Muster wie oben ausgewertet wird.

Um eine einzelne Mustervergleichung auszuwerten, muss eine EXPRESSION-Struktur über ein AndExp-Element verfügen, das eine einzelne Mustervergleichung enthält.

Das Erstellen des Musterübereinstimmungsfilters umfasst das Erstellen von PATTERNMATCH-Strukturen und deren logische Kombination mit EXPRESSION- und ANDEXP-Strukturen.

So schreiben Sie einen PATTERNMATCH-Filter

  1. Füllen Sie in der ANDEXP-Struktur das Array mit Mustervergleichen auf.
  2. Füllen Sie die EXPRESSION-Struktur mit einem Array von AndExp-Membern auf.
  3. Überschreiten Sie nicht insgesamt vier Mustervergleiche für den Erfassungsfilter.
  4. Wählen Sie in der PATTERNMATCH-Struktur einen Flagtyp aus.
  5. Wählen Sie eine Offsetbasis aus.
  6. Auflisten eines Portwerts.
  7. Definieren Sie den Offsetwert.
  8. Definieren Sie die Musterlänge.
  9. Auflisten des Musterwerts.

PATTERNMATCH-Beispiele

Dieser Frame stellt einen Standardoffset dar.

Standardoffsetrahmen

Das Codefragment wird wie folgt implementiert:

Basis  ->   IP
Offset ->   4 (bytes)
Length ->   2 (bytes)
PatternToMatch[ ] = {x00, x00}

Dieser Frame stellt einen portspezifischen Offset (gegenüber IPX) dar.

Port-angegebener Offsetframe

Der Beispielcode wird wie folgt implementiert:

Port   ->   544
Basis  ->   IPX
Offset ->   2 (bytes)
Length ->   2 (bytes)
PatternToMatch[ ] = {x00, x00}