ExpertGetFrame 函数

ExpertGetFrame 函数从加载的捕获返回请求的帧。

语法

DWORD WINAPI ExpertGetFrame(
  _In_  HEXPERTKEY              hExpertKey,
  _In_  DWORD                   Direction,
  _In_  DWORD                   RequestFlags,
  _In_  DWORD                   RequestedFrameNumber,
  _In_  HFILTER                 hFilter,
  _Out_ LPEXPERTFRAMEDESCRIPTOR pEFrameDescriptor
);

参数

hExpertKey [in]

唯一的专家标识符。 网络监视器在调用 Run 函数时将 hExpertKey 标识符传递给专家。

方向 [in]

一个 值,该值标识网络监视器如何搜索帧。

含义
GET_SPECIFIED_FRAME
返回请求的帧。
GET_FRAME_NEXT_FORWARD
返回下一帧。
GET_FRAME_NEXT_BACKWARD
返回上一帧。

RequestFlags [in]

指定网络监视器应如何处理请求的标志。 指定以下一个或多个标志。

含义
FLAGS_DEFER_TO_UI_FILTER
在应用 hFilter 中指定的专家的显示筛选器参数之前,请应用网络监视器在专家启动时使用的显示筛选器。
FLAGS_ATTACH_PROPERTIES
所有协议分析程序在此帧的声明部分中找到的属性将附加到帧。 如果未设置标志,pEFrameDescriptor () 返回的 EXPERTFRAMEDESCRIPTOR 结构的 lpPropertyTable 字段将设置为 NULL

RequestedFrameNumber [in]

请求的帧数。

hFilter [in]

专家显示筛选器的句柄。 如果专家没有显示筛选器,请将 参数设置为 NULL

pEFrameDescriptor [out]

返回时描述帧的 EXPERTFRAMEDESCRIPTOR 结构。 专家必须分配并释放此结构使用的内存。

返回值

如果函数成功,则返回值NMERR_SUCCESS。

如果函数不成功,则返回值指示失败的原因。 如果返回值为NMERR_EXPERT_TERMINATE,专家必须立即清理并返回:用户已中止专家运行。

备注

如果设置FLAGS_ATTACH_PROPERTIES,则调用所需的资源比未设置标志的资源多。 如果未设置标志,指针将指向原始帧和有关该帧的数据。 如果设置了此标志,则网络监视器通过调用声明帧部分的每个分析程序,将所有属性附加到帧。 此过程可能很慢。

除非专家需要分析程序附加到框架的属性,否则专家不应设置FLAGS_ATTACH_PROPERTIES标志。 如果可能,专家应调用不带 标志的 ExpertGetFrame 函数,然后直接从帧中提取所需的数据。

如果专家在没有FLAGS_ATTACH_PROPERTIES标志的情况下调用 ExpertGetFrame ,并且要求 (事件 (与该帧关联的属性(例如) ),则专家调用 ExpertGetFrame ,参数相同,但以下参数除外:

Direction = EXPERT_GET_SPECIFIED_FRAME;
RequestFlags &= (~EXPERT_DEFER_TO_UI_FILTER) | EXPERT_ATTACH_PROPERTIES;
RequestedFrameNumber= (The actual frame number you want);
hFilter = NULL;
pEFrameDescriptor = (The same one as last time);

使用上述代码可确保专家获取所需的帧,而无需再次调用筛选器代码。

可以将 hFilter 参数设置为 LPVOID。 如果存在,则返回的帧会传递此筛选器。 如果专家没有要传递给函数的显示筛选器 (如果 hFilterNULL ) ,则不筛选返回的帧。

专家GetFrame 函数只能由实现 RunConfigure 导出函数的专家调用。

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Netmon.h

Nmapi.lib
DLL
Nmapi.dll