FWPS_CLASSIFY_OUT0 结构 (fwpstypes.h)
FWPS_CLASSIFY_OUT0结构定义返回给标注的分类Fn 标注函数调用方的数据。
语法
typedef struct FWPS_CLASSIFY_OUT0_ {
FWP_ACTION_TYPE actionType;
UINT64 outContext;
UINT64 filterId;
UINT32 rights;
UINT32 flags;
UINT32 reserved;
} FWPS_CLASSIFY_OUT0;
成员
actionType
一个FWP_ACTION_TYPE值,该值指定要根据标注驱动程序的分类Fn 标注函数确定的建议操作。 标注驱动程序将此变量设置为以下值之一:
FWP_ACTION_BLOCK
阻止传输或接收数据。
FWP_ACTION_CONTINUE
将阻止或允许数据传输或接收的决定传递给筛选器引擎中的下一个筛选器。
FWP_ACTION_NONE
不对数据执行任何操作。
FWP_ACTION_NONE_NO_MATCH
不对数据执行任何操作,因为它与枚举的筛选器数据类型不匹配。
FWP_ACTION_PERMIT
允许传输或接收数据。
对此成员的写入访问权限由权限成员中的FWPS_RIGHT_ACTION_WRITE标志控制。 如果设置了 FWPS_RIGHT_ACTION_WRITE 标志,则标注驱动程序可以将上述任何值写入此成员。 如果未设置 FWPS_RIGHT_ACTION_WRITE 标志,则标注驱动程序不应写入此成员,除非它否决了以前由筛选器引擎中较高权重的筛选器返回 的FWP_ACTION_PERMIT 操作。 在这种情况下,标注驱动程序将此成员设置为 FWP_ACTION_BLOCK。
outContext
预留给系统使用。 标注驱动程序不得使用此成员。
filterId
预留给系统使用。 标注驱动程序不得使用此成员。
rights
控制对此结构中其他成员的写入访问权限的标志。 可能的标志包括:
FWPS_RIGHT_ACTION_WRITE
如果设置了此标志,标注驱动程序可以写入此结构的 actionType 成员。 如果未设置此标志,则标注驱动程序只能写入此结构的 actionType 成员,前提是它否决了以前由筛选器引擎中更高权重的筛选器返回 的FWP_ACTION_PERMIT 操作。
flags
影响对数据执行的操作的标志。 可能的标志包括:
FWPS_CLASSIFY_OUT_FLAG_ABSORB
将无提示删除阻止的数据,而无需任何事件日志记录或审核。 这通常用于数据包修改,其中要吸收原始数据包,并进一步处理修改后的数据包。
当 actionType 成员设置为 FWP_ACTION_BLOCK 时,此标志适用于以下层:
- FWPS_LAYER_INBOUND_MAC_FRAME_NATIVE
- FWPS_LAYER_OUTBOUND_MAC_FRAME_NATIVE
- FWPS_LAYER_INBOUND_MAC_FRAME_ETHERNET
- FWPS_LAYER_OUTBOUND_MAC_FRAME_ETHERNET
- FWPS_LAYER_INGRESS_VSWITCH_ETHERNET
- FWPS_LAYER_EGRESS_VSWITCH_ETHERNET
- FWPS_LAYER_INBOUND_IPPACKET_V4
- FWPS_LAYER_INBOUND_IPPACKET_V6
- FWPS_LAYER_OUTBOUND_IPPACKET_V4
- FWPS_LAYER_OUTBOUND_IPPACKET_V6
- FWPS_LAYER_INBOUND_TRANSPORT_V4
- FWPS_LAYER_INBOUND_TRANSPORT_V6
- FWPS_LAYER_OUTBOUND_TRANSPORT_V4
- FWPS_LAYER_OUTBOUND_TRANSPORT_V6
- FWPS_LAYER_INBOUND_ICMP_ERROR_V4
- FWPS_LAYER_INBOUND_ICMP_ERROR_V6
- FWPS_LAYER_OUTBOUND_ICMP_ERROR_V4
- FWPS_LAYER_OUTBOUND_ICMP_ERROR_V6
- FWPS_LAYER_DATAGRAM_DATA_V4
- FWPS_LAYER_DATAGRAM_DATA_V6
- FWPS_LAYER_STREAM_PACKET_V4
- FWPS_LAYER_STREAM_PACKET_V6
- FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V4
- FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V6
- FWPS_LAYER_ALE_AUTH_CONNECT_V4
- FWPS_LAYER_ALE_AUTH_CONNECT_V6
还可以在FWPS_LAYER_ALE_FLOW_ESTABLISHED_V4层和FWPS_LAYER_ALE_FLOW_ESTABLISHED_V6层上设置此标志。 但不建议这样做,因为这些层旨在将上下文与流相关联。
如果未设置此标志,则阻止操作将受到正常的事件日志记录和审核的约束。
FWPS_CLASSIFY_OUT_FLAG_BUFFER_LIMIT_REACHED
当筛选器引擎的流数据缓冲区已满时,筛选器引擎将设置此标志。 如果标注的分类Fn 标注函数通过将 FWPS_STREAM_CALLOUT_IO_PACKET0 结构的 streamAction 成员设置为FWPS_STREAM_ACTION_NEED_MORE_DATA,直到达到缓冲区限制,重复请求更多数据,则可能会出现这种情况。 如果设置了此标志,则标注驱动程序的 分类Fn 标注函数必须允许或阻止所有流数据。
此标志仅适用于流层。
FWPS_CLASSIFY_OUT_FLAG_NO_MORE_DATA
Stream流断开连接后请求了数据。
reserved
预留给系统使用。 标注驱动程序不得使用此成员。
注解
筛选器引擎将指向 FWPS_CLASSIFY_OUT0 结构的指针传递到标注的 分类Fn 标注函数。 标注驱动程序使用此结构将数据返回到调用方。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows Vista 开始可用。 |
标头 | fwpstypes.h (包括 Fwpsk.h、Fwpmtypes.h、Fwpmk.h) |