CommView ermöglicht die Verwendung von zwei selbstdefinierten
Decoder-Arten:
Einfacher Decoder
Wenn Sie diesen Decodertyp wählen wird die Decoder-Ausgabe in einer
Extraspalte im Register
Pakete
angezeigt. Der Decoder sollte dabei eine 32-bit DLL-Datei namens
"Custom.dll" sein, die nur eine Prozedur namens "Decode"
exportiert. Der Grundtyp dieser Prozedur wird im folgenden für C
und Pascal gezeigt:
extern "C"
{ void __stdcall Decode(unsigned char *PacketData, int PacketLen,
char *Buffer, int BufferLen); }
procedure Decode (PacketData: PChar; PacketLen: integer; Buffer:
PChar; BufferLen: integer); stdcall;
Die DLL muß sich dabei im CommView Installationsverzeichnis
befinden. Beim Start von CommView sucht es nach der Custom.dll im
Installationsverzeichnis und lädt diese in den Speicher. Wenn der
Eingangspunkt für Decode gefunden wurde, fügt CommView eine neue
Spalte namens Custom (Selbstdefiniert) der Paketliste hinzu.
Wird ein neues Paket empfangen und angezeigt, ruft CommView die
Decode-Prozedur auf und gibt die Paketinhalte an die DLL weiter.
Die Decode-Prozedur muß nun die Paketinformation verarbeiten und
kopiert dann das Ergebnis in den Puffer. Das erste Argument ist der
Paket-Pointer zu den Paketdaten, das zweite Argument die Datenlänge
und das dritte Argument der Pointer zum Puffer, in den die
Ergebnisse des Decodings kopiert werden sollen. Das vierte Argument
ist die Puffergröße (derzeit stets 1024 Bytes). Der gesamte Puffer
ist für CommView zugeteilt und freigegeben. Sie sollten nicht
versuchen diese Zuteilung zu ändern. Das in den Speicher kopierte
Ergebnis wird dann als String in der Spalte Custom
angezeigt.
Ihre Prozedur sollte schnell genug sein um tausende von
Paketen/Sekunde zu verarbeiten. Sonst wird die Anwendung unnötig
langsam. Bitte halten Sie sich auch an die Konvention
STDCALL.
Zwei Demo-DLL’s sind verfügbar. Sie zeigen eine einfache Operation.
Die Ausgabe der Decode-Funktion ist der Hexcode der letzten Byte
des Paketes. Ihr eigener Decoder kann natürlich beliebig komplex
sein:
·http://www.tamos.com/products/commview/cust_decoder_c.zip.
Dies ist ein Visual Studio Projekt mit C++ Quellcode.
·http://www.tamos.com/products/commview/cust_decoder_d.zip.
Dies ist ein Delphi-Project mit Pascal Sourcecode.
Komplexer Decoder
Bei der Verwendung dieses Decodertypes wird die Decoderausgabe als
zusätzliche Objekte im Paketdecoderbaum angezeigt. Mehr zur
Implementation dieses Decoders erhalten Sie durch das Herunterladen
folgender Datei:
http://www.tamos.com/products/commview/complex_decoder_c7.zip
Diese Decoderart kann nur in Microsoft Visual C++ geschrieben
werden, da es mit C++ erzeugte Klassen benutzt.
Technischer Support
Technischen Support für maßgeschneiderte Decoder gibt es auf der
Basis von "Besten Ergebnissen". Wir sind leider nicht in der Lage
auf Ihre Programmierfragen einzugehen.
|