标注类型

以下类型的标注可用于 WFP:

内联检查标注
这种类型的标注始终从分类Fn 函数返回FWP_ACTION_CONTINUE,并且不会以任何方式修改网络流量。 收集网络统计信息的标注就是此类标注的一个示例。

对于此类型的标注,由FWPS_ACTION0结构) Type 成员指定的筛选操作类型 (应设置为FWP_ACTION_CALLOUT_INSPECTION

带外检查标注
这种类型的标注不会修改网络流量。 相反,它会通过“挂起”指示的数据,然后使用其中一个数据包注入函数将插入的数据重新注入到 TCP/IP 堆栈中,来延迟在分类Fn 函数之外执行的任何检查。 挂起是通过首先克隆指示的数据来实现的,然后从设置了 FWPS_CLASSIFY_OUT_FLAG_ABSORB 位的 分类Fn 函数返回 FWP_ACTION_BLOCK

内联修改标注
这种类型的标注通过首先克隆指示的数据,然后修改克隆,最后从 分类Fn 函数将修改后的克隆注入到 TCP/IP 堆栈中来修改网络流量。 这种类型的标注还会从设置了 FWPS_CLASSIFY_OUT_FLAG_ABSORB 位的 分类Fn 函数返回 FWP_ACTION_BLOCK

此类型标注的筛选器操作类型应设置为 FWP_ACTION_CALLOUT_TERMINATING

带外修改标注
此类型的标注首先使用将 intentToModify 参数设置为 TRUE的 FwpsReferenceNetBufferList0 函数引用指示的数据包。 然后,标注返回FWP_ACTION_BLOCK,其中包含从分类Fn 函数设置的FWPS_CLASSIFY_OUT_FLAG_ABSORB位。 当数据包准备好在 分类Fn 外部修改时,标注会在克隆后立即克隆引用的数据包 (,然后可以在) 取消引用原始数据包。 然后,标注会修改克隆,并将修改后的数据包注入回 TCP/IP 堆栈。

此类型标注的筛选器操作类型应设置为 FWP_ACTION_CALLOUT_TERMINATING

重定向标注
有关此类标注的详细信息,请参阅 使用绑定或连接重定向

有两种类型的重定向标注:

  • 绑定重定向标注允许标注驱动程序修改套接字的本地地址和本地端口。
  • 连接重定向标注允许标注驱动程序修改连接的远程地址和远程端口。

此类型标注的筛选器操作类型应设置为 FWP_ACTION_PERMIT

有关 FWPS_CLASSIFY_OUT_FLAG_ABSORB的详细信息,请参阅 FWPS_CLASSIFY_OUT0。 此标志在任何 WFP 放弃层中都无效。 返回从分类Fn 函数中设置FWPS_CLASSIFY_OUT_FLAG_ABSORB标志的FWP_ACTION_BLOCK会导致数据包被无提示丢弃,这样数据包就不会到达任何 WFP 放弃层,也不会生成审核事件。

尽管可以修改克隆的 net 缓冲区列表(例如,通过添加或删除网络缓冲区或 MDL,或者两者),但标注在调用 FwpsFreeCloneNetBufferList0 函数之前必须撤消此类修改。

若要与其他执行数据包检查、数据包修改或连接重定向的标注共存,在使用 reference/clone-drop-reinject 机制向数据包笔下之前,标注必须通过清除分类Fn 函数返回的 FWPS_CLASSIFY_OUT0 结构的权限成员中的FWPS_RIGHT_ACTION_WRITE标志来“硬”删除原始数据包。 如果在调用分类Fn 时设置了FWPS_RIGHT_ACTION_WRITE标志 (这意味着数据包可以进行笔划,然后重新注入或修改) ,则标注不得插入指示,也不应更改当前操作类型;并且它必须等待更高权重的标注来注入可能修改的克隆。

每当标注标记分类时,都应设置 FWPS_RIGHT_ACTION_WRITE 标志。 标注驱动程序应测试FWPS_RIGHT_ACTION_WRITE标志,以检查标注返回操作的权限。 如果未设置此标志,则标注仍可返回 FWP_ACTION_BLOCK 操作,以否决先前标注返回 的FWP_ACTION_PERMIT 操作。 在 “使用标注进行深度检查”中所示的示例中,如果未设置标志,函数将退出。

FwpsPendOperation0 函数用于对源自 FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_XXXFWPM_LAYER_ALE_AUTH_LISTEN_XXX 或 FWPM_LAYER_ALE_AUTH_CONNECT_XXX管理筛选层的数据包进行笔画。

FwpsPendClassify0 函数用于对源自以下运行时筛选层的数据包进行笔式处理:

FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V4 FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V6 FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 FWPS_LAYER_ALE_BIND_REDIRECT_V4 FWPS_LAYER_ALE_BIND_REDIRECT_V6