Реализация свойств FormatProperties
Сетевой монитор вызывает функцию FormatProperties для форматирования данных, отображаемых в области сведений пользовательского интерфейса сетевого монитора. Как правило, FormatProperties вызывается для форматирования строки сводки для протокола, а затем для форматирования всех экземпляров свойств протокола в кадре. Однако монитор сети не определяет количество вызовов FormatProperties для конкретного средства синтаксического анализа.
При вызове FormatProperties сетевой монитор предоставляет структуру PROPERTYINST для каждого отображаемого свойства. Структура PROPERTYINST предоставляет сведения о отображаемых данных, включая указатель на структуру PROPERTYINFO , которая указывает функцию, используемую для форматирования отображаемого свойства данных.
Примечание
Структура PROPERTYINFO указывается при добавлении свойства в базу данных свойств средства синтаксического анализа.
Монитор сети определяет функцию форматирования, вызываемую для каждого экземпляра свойства. Элемент InstanceData структуры PROPERTYINFO может указать следующее:
Функция FormatPropertyInstance для использования универсального модуля форматирования , который предоставляет сетевой монитор.
— или —
Имя пользовательской функции форматирования, которую предоставляет средство синтаксического анализа.
Функции FormatPropertyInstance и пользовательские функции форматирования возвращают отформатированные данные, отображаемые в области сведений пользовательского интерфейса сетевого монитора.
На следующем рисунке показано, как сетевой монитор определяет функцию, вызываемую для каждого экземпляра свойства.
В следующей процедуре определены шаги, необходимые для реализации свойств FormatProperties.
Реализация свойств FormatProperties
- Используя структуру цикла, вызовите функцию форматирования для каждой структуры PROPERTYINST , которая передается средству синтаксического анализа в параметре lpPropInst функции FormatProperties .
Ниже приведена базовая реализация FormatProperties.
#include <windows.h>
DWORD BHAPI MyProtocolFormatProperties( HFRAME hFrame,
LPBYTE pMacFrame,
LPBYTE pBLRPLATEFrame,
DWORD nPropertyInsts
LPPROPERTYINST p)
{
while( nPropertyInsts-- > 0)
{
( (FORMAT) p->lpPropertyInfo->InstanceData) ) (p);
p++;
}
return BHERR_SUCCESS;
}