实现 FormatProperties

网络监视器调用 FormatProperties 函数来设置网络监视器 UI 的详细信息窗格中显示的数据的格式。 通常,调用 FormatProperties 以设置协议的摘要行的格式,然后设置框架中协议的所有属性实例的格式。 但是,网络监视器不会识别为特定分析程序调用 FormatProperties 的次数。

调用 FormatProperties 时,网络监视器为其显示的每个属性提供 PROPERTYINST 结构。 PROPERTYINST 结构提供有关要显示的数据的信息,包括指向 PROPERTYINFO 结构的指针,该结构指定要用于设置所显示数据属性格式的函数。

注意

将属性添加到分析程序的属性数据库时,会指定 PROPERTYINFO 结构。

 

网络监视器标识要为每个属性实例调用的格式函数。 PROPERTYINFO 结构的 InstanceData 成员可以指定以下内容:

FormatPropertyInstance 和自定义格式函数返回在网络监视器 UI 的详细信息窗格中显示的格式化数据。

下图显示了网络监视器如何标识要为每个属性实例调用的函数。

网络监视器如何标识要调用的函数

以下过程标识实现 FormatProperties 所需的步骤。

实现 FormatProperties

  • 使用循环结构,为在 FormatProperties 函数的 lpPropInst 参数中传递给分析程序的每个 PROPERTYINST 结构调用 format 函数。

下面是 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;
  }