FWPS_CALLOUT_CLASSIFY_FN2回调函数 (fwpsk.h)
每当有要由标注处理的数据时,筛选器引擎都会调用标注的 分类Fn2 标注函数。
语法
FWPS_CALLOUT_CLASSIFY_FN2 FwpsCalloutClassifyFn2;
void FwpsCalloutClassifyFn2(
[in] const FWPS_INCOMING_VALUES0 *inFixedValues,
[in] const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues,
[in, out, optional] void *layerData,
[in, optional] const void *classifyContext,
[in] const FWPS_FILTER2 *filter,
[in] UINT64 flowContext,
[in, out] FWPS_CLASSIFY_OUT0 *classifyOut
)
{...}
参数
[in] inFixedValues
指向 FWPS_INCOMING_VALUES0 结构的指针。 此结构包含要筛选的层中每个数据字段的值。
[in] inMetaValues
指向 的指针 FWPS_INCOMING_METADATA_VALUES0 结构。 此结构包含要筛选的层中每个元数据字段的值。
[in, out, optional] layerData
指向结构的指针,该结构描述要筛选的层中的原始数据。 此参数可能为 NULL,具体取决于要筛选的层和调用 分类Fn2 标注函数的条件。 对于流层,此参数指向 FWPS_STREAM_CALLOUT_IO_PACKET0 结构。 对于所有其他层,此参数指向 NET_BUFFER_LIST 结构(如果它不是 NULL)。
[in, optional] classifyContext
指向筛选器引擎与标注驱动程序关联的上下文数据的指针。
[in] filter
指向 FWPS_FILTER2 结构的指针。 此结构描述指定筛选器操作的标注的筛选器。
[in] flowContext
包含与数据流关联的上下文的 UINT64 类型变量。 如果没有上下文与数据流关联,则此参数为零。 如果将标注添加到不支持数据流的筛选层的筛选引擎中, 则分类Fn2 标注函数应忽略此参数。
[in, out] classifyOut
指向 FWPS_CLASSIFY_OUT0 结构的指针,该结构接收 分类Fn2 标注函数返回给调用方的任何数据。
返回值
无
备注
标注驱动程序通过调用 FwpsCalloutRegister2 函数向筛选器引擎注册标注的标注函数。
每当筛选器引擎中指定筛选器操作的标注的所有测试条件都为 true 时,筛选器引擎会调用标注的 分类Fn2 标注函数,并处理要处理的数据。
在以下任一情况下,标注的分类Fn2 标注函数应清除FWPS_CLASSIFY_OUT0结构的权限成员中的FWPS_RIGHT_ACTION_WRITE标志:
- 当分类Fn2 标注函数将 FWPS_CLASSIFY_OUT0 结构的 actionType 成员设置为FWP_ACTION_BLOCK。
- 当分类Fn2 标注函数将FWPS_CLASSIFY_OUT0结构的 actionType 成员设置为 FWP_ACTION_PERMIT并且 FWPS_FILTER_FLAG_CLEAR_ACTION_RIGHT 标志在 FWPS_FILTER2 结构的 Flags 成员中设置。
-
当标注指示它打算通过在调用 中将 intendToModify 参数设置为 TRUE 来修改克隆 net 缓冲区列表时 FwpsReferenceNetBufferList0 函数。
此函数实质上与以前的版本( 分类Fn1)相同。 但是,更新的 FWPS_FILTER2 结构由 筛选器 参数指向, layerData 参数是可选的。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 8开始可用。 |
目标平台 | Windows |
标头 | fwpsk.h (包括 Fwpsk.h) |
IRQL | <= DISPATCH_LEVEL |