FWPS_CALLOUT_CLASSIFY_FN0回调函数 (fwpsu.h)

每当有要由标注处理的数据时,筛选器引擎都会调用标注的 分类Fn0 标注函数。

注意

classifyFn0 是 Windows Vista 及更高版本中使用的特定 分类Fn 版本。 有关详细信息,请参阅 WFP 版本无关的名称和面向特定版本的 Windows。 对于 Windows 8, 可以使用分类Fn2 。 对于 Windows 7,可以使用 分类Fn1

语法

FWPS_CALLOUT_CLASSIFY_FN0 FwpsCalloutClassifyFn0;

void FwpsCalloutClassifyFn0(
  const FWPS_INCOMING_VALUES0 *inFixedValues,
  const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues,
  void *layerData,
  const FWPS_FILTER0 *filter,
  UINT64 flowContext,
  FWPS_CLASSIFY_OUT0 *classifyOut
)
{...}

参数

inFixedValues

指向 FWPS_INCOMING_VALUES0 结构的指针。 此结构包含要筛选的层中的每个数据字段的值。

inMetaValues

指向 FWPS_INCOMING_METADATA_VALUES0 结构的指针。 此结构包含要筛选的层中的每个元数据字段的值。

layerData

指向结构的指针,该结构描述要筛选的层的原始数据。 此参数可能为 NULL,具体取决于要筛选的层和调用 分类Fn0 标注函数的条件。 对于流层,此参数指向 FWPS_STREAM_CALLOUT_IO_PACKET0 结构。 对于所有其他层,此参数指向 NET_BUFFER_LIST 结构(如果结构不为 NULL)。

filter

指向 FWPS_FILTER0 结构的指针。 此结构描述指定筛选器操作的标注的筛选器。

flowContext

包含与数据流关联的上下文的 UINT64 类型变量。 如果没有上下文与数据流关联,则此参数为零。 如果将标注添加到不支持数据流的筛选层的筛选引擎中, 则分类Fn0 标注函数应忽略此参数。

classifyOut

指向 FWPS_CLASSIFY_OUT0 结构的指针,该结构接收 分类Fn0 标注函数返回给调用方的任何数据。

返回值

备注

标注驱动程序通过调用 FwpsCalloutRegister0 函数向筛选器引擎注册标注的标注函数。

每当筛选器引擎中指定筛选器操作的标注的所有测试条件都为 true 时,筛选器引擎都会调用标注的 分类Fn0 标注函数,并处理数据。

在以下任一情况下,标注的分类Fn0 标注函数都应清除FWPS_CLASSIFY_OUT0结构的权限成员中的FWPS_RIGHT_ACTION_WRITE标志:

  • 分类Fn0 标注函数将FWPS_CLASSIFY_OUT0结构的 actionType 成员设置为FWP_ACTION_BLOCK
  • 分类Fn0 标注函数将FWPS_CLASSIFY_OUT0结构的 actionType 成员设置为FWP_ACTION_PERMIT并且FWPS_FILTER_FLAG_CLEAR_ACTION_RIGHT标志在FWPS_FILTER0结构的标志成员中设置时。
  • 当标注指示它打算通过在调用 FwpsReferenceNetBufferList0 函数中将 intendToModify 参数设置为 TRUE 来修改克隆 net 缓冲区列表时。

要求

要求
Header fwpsu.h