Freigeben über


RecognizeFrame-Rückruffunktion

Die RecognizeFrame-Exportfunktion gibt an, ob ein Datenteil als das Protokoll erkannt wird, das der Parser erkennt. Die RecognizeFrame-Exportfunktion muss für jeden Parser implementiert werden, den die Parser-DLL unterstützt.

Syntax

LPBYTE RecognizeFrame(
  _In_    HFRAME      hFrame,
  _In_    LPBYTE      lpFrame,
  _In_    LPBYTE      lpProtocol,
  _In_    DWORD       MacType,
  _In_    DWORD       BytesLeft,
  _In_    HPROTOCOL   hPreviousProtocol,
  _In_    DWORD       nPreviousProtocolOffset,
  _Out_   LPDWORD     ProtocolStatusCode,
  _Out_   LPHPROTOCOL phNextProtocol,
  _Inout_ PDWORD_PTR  lpInstData
);

Parameter

hFrame [in]

Handle für den Frame, der die Daten enthält.

lpFrame [in]

Zeiger auf das erste Byte eines Frames. Der Zeiger bietet eine Möglichkeit zum Anzeigen von Daten, die andere Parser erkennen.

lpProtocol [in]

Zeiger auf den Anfang der nicht beanspruchten Daten. In der Regel befinden sich die nicht beanspruchten Daten in der Mitte eines Frames, da ein vorheriger Parser Daten vor diesem Parser beansprucht hat. Der Parser muss zuerst die nicht beanspruchten Daten testen.

MacType [in]

MAC-Wert des ersten Protokolls in einem Frame. In der Regel wird der MacType-Wert verwendet, wenn der Parser das erste Protokoll in einem Frame identifizieren muss. Der MacType-Wert kann einer der folgenden Sein:

Wert Bedeutung
MAC_TYPE_ETHERNET
802.3
MAC_TYPE_TOKENRING
802.5
MAC_TYPE_FDDI
ANSI X3T9.5

BytesLeft [in]

Die verbleibende Anzahl von Bytes von einer Position in einem Frame bis zum Ende des Frames.

hPreviousProtocol [in]

Handle des vorherigen Protokolls.

nPreviousProtocolOffset [in]

Offset des vorherigen Protokollanfangs des Frames.

ProtocolStatusCode [out]

Protokoll-status-Indikator. Die Parser-DLL muss einen der folgenden status-Codes festlegen.

Wert Bedeutung
PROTOCOL_STATUS_RECOGNIZED
Der Parser erkennt die Daten, weiß aber nicht, welches Protokoll folgt. Nachdem Sie den Code festgelegt haben, geben Sie einen Zeiger auf die verbleibenden nicht beanspruchten Daten zurück, die dem erkannten Protokoll folgen. Der Netzwerkmonitor verwendet den folgenden Satz des Protokolls, um die Analyse fortzusetzen.
PROTOCOL_STATUS_NOT_RECOGNIZED
Der Parser erkennt die Daten nicht. Nachdem Sie diesen Code festgelegt haben, geben Sie den Zeiger zum Anfang der Daten mithilfe des Zeigers zurück, den der parameter lpProtocol an die Parser-DLL übergibt. Der Netzwerkmonitor verwendet den folgenden Satz des vorherigen Protokolls, um die Analyse fortzusetzen.
PROTOCOL_STATUS_CLAIMED
Der Parser erkennt die Daten und beansprucht die verbleibenden Daten. Nachdem Sie den Code festgelegt haben, geben Sie NULL für den Netzwerkmonitor zurück, um die Analyse eines Frames zu beenden.
PROTOCOL_STATUS_NEXT_PROTOCOL
Der Parser erkennt die Daten und weiß, welches Protokoll folgt. Legen Sie nach dem Festlegen des Codes den parameter phNextProtocol fest, und geben Sie einen Zeiger auf die verbleibenden nicht beanspruchten Daten zurück, die dem erkannten Protokoll folgen. Der Netzwerkmonitor setzt die Analyse des Frames fort.

phNextProtocol [out]

Zeiger auf das Handle des nächsten Protokolls. Dieser Parameter wird festgelegt, wenn ein Protokoll das Protokoll identifiziert, das auf ein Protokoll folgt. Um das Handle des nächsten Protokolls abzurufen, rufen Sie die GetProtocolFromTable-Funktion auf.

lpInstData [in, out]

Bei der Eingabe ein Zeiger auf die instance Daten aus dem vorherigen Protokoll.

Bei der Ausgabe wird ein Zeiger auf die instance Daten für das aktuelle Protokoll angezeigt. Instanzdaten dürfen nicht länger als eine DWORD_PTR sein.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Zeiger auf das erste Byte nach den erkannten Parserdaten. Wenn der Parser alle verbleibenden Daten beansprucht, ist der Rückgabewert NULL.

Wenn die Funktion nicht erfolgreich ist, ist der Rückgabewert ein anfänglicher Zeiger, den der lpProtocol-Parameter übergibt.

Bemerkungen

Die RecognizeFrame-Funktion bestimmt, ob der Parser die Rohdaten ab dem lpProtocol-Zeiger erkennt.

  • Wenn das Protokoll die Daten erkennt, gibt die RecognizeFrame-Funktion einen Zeiger auf die verbleibenden Daten oder NULL zurück, wenn das aktuelle Protokoll das letzte Protokoll in einem Frame ist.
  • Wenn das Protokoll die Daten nicht erkennt, gibt die RecognizeFrame-Funktion den Zeiger zurück, der an die Parser-DLL im lpProtocol-Parameter übergeben wurde.

Hinweis

RecognizeFrame kann aufgerufen werden, bevor die Register-Funktion aufgerufen wird, um die Protokolleigenschaften zu registrieren. Aus diesem Grund basiert die Implementierung der RecognizeFrame-Funktion nicht auf Eigenschaften oder Strukturen, die während der Implementierung der Protokollfunktion Register erstellt oder initialisiert werden.

Übergabesatz und Nachverfolgungssatz

Ein Parser kann einen Übergabesatz oder einen Folgesatz verwenden, um für den Netzwerkmonitor das Protokoll zu identifizieren, das auf erkannte Daten folgt.

  • Wenn Informationen in erkannten Daten verfügbar sind, verwendet der Parser seinen Übergabesatz, um ein Handle an das nächste Protokoll zu erhalten, und übergibt dieses Handle dann an den Netzwerkmonitor.
  • Wenn keine Informationen verfügbar sind, übergibt der Parser kein Handle, und der Netzwerkmonitor verwendet den Parserfolgesatz, um zu bestimmen, welches Protokoll folgt.

Übergeben von Informationen zwischen Protokollen

Verwenden Sie den lpInstData-Parameter , um Informationen zwischen Protokollen zu übergeben. Bei der Eingabe können Sie die Informationen aus dem vorherigen Protokoll abrufen. Bei der Ausgabe können Sie Informationen an das nächste Protokoll übergeben.

Instanzdaten können daten sein, die kleiner oder gleich einer DWORD_PTR Länge sind, oder ein Zeiger auf Daten, z. B. Rohframedaten, die nicht vom Parser zugeordnet oder freigegeben werden müssen.

Informationen zu Siehe
Was Parser sind und wie sie mit Dem Netzwerkmonitor funktionieren. Parser
Welche Einstiegspunkte sind in der Parser-DLL enthalten? Parser-DLL-Architektur
Die Implementierung von RecognizeFrame enthält ein Beispiel. Implementieren von RecognizeFrame
Hier erfahren Sie, wie Sie einen Übergabesatz und einen Folgesatz angeben. Angeben eines ÜbergabesatzesAngeben eines Folgesatzes

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
Netmon.h

Siehe auch

GetProtocolFromTable