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 |
|