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/cust_decoder_c.zip.
Проект Visual Studio с исходниками на C++.
·http://www.tamos.com/products/commview/cust_decoder_d.zip.
Проект Delphi с исходниками на Pascal.
Сложный декодер
При реализации этого типа декодера, результат будет отображаться,
как дополнительные элементы основного дерева декодера в окне
пакетов. Подробное руководство по созданию такого декодера можно
получить здесь:
http://www.tamos.com/products/commview/complex_decoder_c7.zip
Сложный декодер может быть написан только на Microsoft Visual C++,
так как он основан на классах C++.
Техническая поддержка
Техническая поддержка пользовательских декодеров осуществляется "по
мере сил", но мы не всегда сможем оказаться в состоянии разрешить
любую вашу проблему.
|