FWPS_CALLOUT3结构(fwpsk.h)

FWPS_CALLOUT3 结构定义标注驱动程序向筛选器引擎注册标注所需的数据。

语法

typedef struct FWPS_CALLOUT3_ {
  GUID                                calloutKey;
  UINT32                              flags;
  FWPS_CALLOUT_CLASSIFY_FN3           classifyFn;
  FWPS_CALLOUT_NOTIFY_FN3             notifyFn;
  FWPS_CALLOUT_FLOW_DELETE_NOTIFY_FN0 flowDeleteFn;
} FWPS_CALLOUT3;

成员

calloutKey

标注驱动程序定义的 GUID,用于唯一标识标注。

flags

指定标注特定参数的标志。 可能的标志包括:

价值 意义
FWP_CALLOUT_FLAG_CONDITIONAL_ON_FLOW
0x00000001
标注驱动程序可以在注册将在支持数据流的层中添加的标注时指定此标志。 如果指定了此标志,筛选器引擎将调用标注驱动程序的 分类Fn3 标注函数,前提是存在与数据流关联的上下文。 标注驱动程序通过调用 FwpsFlowAssociateContext0 函数将上下文与数据流相关联。
FWP_CALLOUT_FLAG_ALLOW_OFFLOAD
0x00000002
标注驱动程序指定此标志,以指示标注驱动程序的 分类Fn3 标注函数不受影响,方法是将网络数据处理卸载到支持卸载的网络接口卡(NIC)。 如果未指定此标志,则会禁用网络数据处理的卸载,所有由指定筛选器操作标注的筛选器处理的所有流量都会禁用。
FWP_CALLOUT_FLAG_ENABLE_COMMIT_ADD_NOTIFY
0x00000004
标注驱动程序指定此标志,以指示它可以接收有关在事务中添加的对象和筛选器的通知。 筛选引擎在提交事务后发送通知。
FWP_CALLOUT_FLAG_ALLOW_MID_STREAM_INSPECTION
0x00000008
标注驱动程序指定此标志,以指示它可以在流级别对数据流执行动态流检查。 请参阅 流检查
FWP_CALLOUT_FLAG_ALLOW_RECLASSIFY
0x00000010
标注驱动程序指定在重新分类现有套接字操作时要调用的此标志。
FWP_CALLOUT_FLAG_RESERVED1
0x00000020
保留供系统使用。 标注驱动程序应忽略此标志。
FWP_CALLOUT_FLAG_ALLOW_RSC
0x00000040
标注驱动程序指定此标志,以指示标注支持 TCP 接收段合并(RSC),且数据包最大为 64K。 如果未指定此标志,并且注册了标注,则所有由指定筛选器操作标注的筛选器处理的所有流量都会禁用 RSC。
FWP_CALLOUT_FLAG_ALLOW_L2_BATCH_CLASSIFY
0x00000080
标注驱动程序在注册将在第 2 层添加的标注时指定此标志,以指示其 分类Fn3 标注函数可以对多个链接 NET_BUFFER_LIST 结构进行分类。 有关详细信息,请参阅 使用第 2 层筛选

警告:
如果标注驱动程序设置此标志,则它无法使用以下函数来修改NET_BUFFER_LISTs。

FwpsReferenceNetBufferList0
FwpsDereferenceNetBufferList0
FwpsAllocateCloneNetBufferList0
FwpsFreeCloneNetBufferList0

设置此标志后,FwpsAllocateCloneNetBufferList0 将始终返回 INVALID_PARAMETER 错误。 这可能会导致第三方标注驱动程序无法管理NET_BUFFER_LISTs的引用计数,从而导致发送和接收操作停止。
FWP_CALLOUT_FLAG_ALLOW_USO
0x00000100
标注驱动程序指定此标志,以指示标注支持 UDP 分段卸载(USO),其数据包大于网络介质的 MTU。 如果未指定此标志,并且注册了标注,则所有由为筛选器操作指定标注的筛选器处理的所有流量都禁用 USO。 注意: 支持此标志的最早版本是 Windows Insider Preview 版本 10.0.25876。
FWP_CALLOUT_FLAG_ALLOW_URO
0x00000200
标注驱动程序指定此标志,以指示标注支持 UDP 接收卸载(URO),且数据包最大为 64K。 如果未指定此标志并注册标注,则所有由指定筛选器操作标注的筛选器处理的所有流量都会禁用 URO。 注意: 如果指定了此标志,则标注不得克隆并重新连接入站 URO 数据包。

classifyFn

指向标注驱动程序的 分类Fn3 标注函数的指针。 每当标注要处理网络数据时,筛选器引擎都会调用此函数。

notifyFn

指向标注驱动程序 notifyFn3 函数的指针。 筛选器引擎调用此函数,以通知标注驱动程序与标注关联的事件。

flowDeleteFn

指向标注驱动程序的 flowDeleteFn 标注函数的指针。 每当调用正在处理的数据流终止时,筛选器引擎就会调用此函数。

如果标注驱动程序不将上下文与标注处理的数据流相关联,则应将此成员设置为 NULL。

言论

标注驱动程序在向筛选器引擎注册标注时,将指向初始化的 FWPS_CALLOUT3 结构的指针传递给 FwpsCalloutRegister3 函数。

标注只能为驱动程序有兴趣执行流检查的连接设置 FWP_CALLOUT_FLAG_CONDITIONAL_ON_FLOW 标志。 所有其他连接上将忽略此标注。 性能将得到改进,驱动程序无需维护不必要的状态数据。

FWPS_CALLOUT3FWPS_CALLOUT的特定版本。 有关详细信息,请参阅 WFP Version-Independent 名称和面向特定版本的 Windows

要求

要求 价值
最低支持的客户端 从 Windows 8 开始可用。
标头 fwpsk.h

另请参阅