Поделиться через


Реализация свойств FormatProperties

Сетевой монитор вызывает функцию FormatProperties для форматирования данных, отображаемых в области сведений пользовательского интерфейса сетевого монитора. Как правило, FormatProperties вызывается для форматирования строки сводки для протокола, а затем для форматирования всех экземпляров свойств протокола в кадре. Однако монитор сети не определяет количество вызовов FormatProperties для конкретного средства синтаксического анализа.

При вызове FormatProperties сетевой монитор предоставляет структуру PROPERTYINST для каждого отображаемого свойства. Структура PROPERTYINST предоставляет сведения о отображаемых данных, включая указатель на структуру PROPERTYINFO , которая указывает функцию, используемую для форматирования отображаемого свойства данных.

Примечание

Структура PROPERTYINFO указывается при добавлении свойства в базу данных свойств средства синтаксического анализа.

 

Монитор сети определяет функцию форматирования, вызываемую для каждого экземпляра свойства. Элемент InstanceData структуры PROPERTYINFO может указать следующее:

Функции 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;
  }