CommView for
WiFi позволяет подключить два типа пользовательских модулей
декодирования.
Простой декодер
Если он
используется, то результаты его работы будут показаны в
дополнительной колонке закладки Пакеты.
Пользовательский декодер должен быть 32-bit DLL с именем файла
"Custom.dll" и экспортировать единственную процедуру - "Decode".
Ниже показан ее прототип на языках C и Pascal:
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;
Данная DLL
должна располагаться в той же директории, что и CommView for WiFi.
При запуске CommView for WiFi ищет файл с именем
"Custom.dll"
и загружает его в память. Если в нем найдена точка входа "Decode" -
CommView for WiFi добавляет новую колонку с именем "Custom" в
списке пакетов.
Перед тем как
отобразить новый пакет, CommView for WiFi вызывает процедуру
"Decode" и передает содержимое пакета в DLL. Процедура "Decode"
должна обработать пакет и записать его в буфер. Первый аргумент -
указатель на содержимое пакета, второй - длина, третий аргумент -
указатель на буфер, в котором хранится результат обработки,
четвертый аргумент - размер буфера (в данной версии - всегда 1024
байта). Буфер выделяется и освобождается самой программой CommView
for WiFi, так что не следует управлять распределением памяти под
этот буфер самостоятельно. Содержимое буфера будет отображено в
виде строки в колонке "Custom".
Ваша
процедура должна быть достаточно
быстрой и обрабатывать тысячи пакетов в секунду; в противном случае
снизится производительность программы. Не забывайте использовать
STDCALL при вызове. Две DLL представлены как пример. Они выполняют
простейшие операции: "результатом" работы функции "Decode" является
шестнадцатеричный код последнего байта пакета. Пользовательский
декодер может быть сколь угодно сложным.
Сложный декодер
При реализации
этого типа декодера, результат будет отображаться, как
дополнительные элементы основного дерева декодера в окне пакетов.
Подробное руководство по созданию такого декодера можно получить
здесь:
http://www.tamos.com/products/commview/complex_decoder_c7.zip
Сложный
декодер может быть написан только на Microsoft Visual C++, так как
он основан на классах C++.
Техническая поддержка
Техническая поддержка
пользовательских декодеров осуществляется "по мере сил", но мы не
всегда сможем оказаться в состоянии разрешить любую вашу
проблему.
|