实现 FormatProperties
网络监视器调用 FormatProperties 函数来设置网络监视器 UI 的详细信息窗格中显示的数据的格式。 通常,调用 FormatProperties 以设置协议的摘要行的格式,然后设置框架中协议的所有属性实例的格式。 但是,网络监视器不会识别为特定分析程序调用 FormatProperties 的次数。
调用 FormatProperties 时,网络监视器为其显示的每个属性提供 PROPERTYINST 结构。 PROPERTYINST 结构提供有关要显示的数据的信息,包括指向 PROPERTYINFO 结构的指针,该结构指定要用于设置所显示数据属性格式的函数。
注意
将属性添加到分析程序的属性数据库时,会指定 PROPERTYINFO 结构。
网络监视器标识要为每个属性实例调用的格式函数。 PROPERTYINFO 结构的 InstanceData 成员可以指定以下内容:
使用网络监视器提供的泛型格式化程序的FormatPropertyInstance 函数。
- 或 -
分析程序提供的自定义格式函数的名称。
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;
}