|
|||||||||||
|
|
CommView for WiFi ermöglicht die Verwendung von zwei Arten selbstdefinierter Decoder: Einfacher Decoder Wenn Sie diesen Decodertyp wählen wird der Decoderoutput in einer Extraspalt im Bereich Pakete angezeigt. Der Decoder sollte dabei einw 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 Applikationsverzeichnis befinden. Beim Start von CommView sucht es nach "Custom.dll" im Applikationsverzeichnis 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. Wenn nun ein neues Paket empfanen wurde und angezeigt werden soll 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 Paketpointer zu den Paketdaten, das zweite Argument die Datenlänge und das dritte Argument der Pointer zum Puffer, wo die Ergebnisse des Decodings hinkopiert werden sollen. Das vierte Argument ist die Puffergröße (derzeit stets 1024 Bytes). Der Puffer ist von CommView allociert, so dass er nicht reallociert oder frei gesetzt ewrden sollte. Das in den Speicher kopierte Ergebnis wird dann als String in der Spalte "Selbstdefiniert" angezeigt. Ihre Prozedur sollte schnell genug sein um tausende Pakete pro Sekunde zu verarbeiten. Sonst wird die Anwendung unnötig langsam. Bitte halten Sie sich auch an die Konvention "STDCALL calling". Tzwei Demo DLLs sind verfügbar. Sie zeigen eine einach Operation: Der Output der "Decode" Funktion ist der Hexcode der letzten Byte des Paketes. Ihr eigener Decoder kann natürlich beliebig komplex sein:
Komplexer Decoder Bei der Verwendung dieses Decodertypes wird der Decoderoutput als zusätzliche Items im Paketdecoderbaum angezeigt. Mehr zur Implementation dieses Decoders erhalten Sie durch das Herunterladen folgender Datei: http://www.tamos.com/products/commview/complex_decoder_c6.zip Diese Decoderart kann nur in Microsoft Visual C++ geschrieben werden, da es mit C++ Klassen erzeugt wurde. Technischer Support Technischer 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. |