FwpsInjectvSwitchEthernetIngressAsync0 函数 (fwpsk.h)
FwpsInjectvSwitchEthernetIngressAsync0 (是 FwpsInjectvSwitchIngressAsync0) 函数将以前吸收的虚拟交换机数据包重新注入 (未修改) 回截获的虚拟交换机入口数据路径。 此函数还可以注入使用 FwpsAllocateNetBufferAndNetBufferList0 函数创建的数据包。
语法
NTSTATUS FwpsInjectvSwitchEthernetIngressAsync0(
[in] HANDLE injectionHandle,
[in, optional] HANDLE injectionContext,
[in] UINT32 flags,
[in, optional] void *reserved,
[in] const FWP_BYTE_BLOB *vSwitchId,
[in] NDIS_SWITCH_PORT_ID vSwitchSourcePortId,
[in] NDIS_SWITCH_NIC_INDEX vSwitchSourceNicIndex,
NET_BUFFER_LIST *netBufferLists,
[in] FWPS_INJECT_COMPLETE completionFn,
[in, optional] HANDLE completionContext
);
参数
[in] injectionHandle
以前通过调用 FwpsInjectionHandleCreate0 函数创建的注入句柄, 并将 flags 参数设置为 FWPS_INJECTION_TYPE_L2。
未使用 addressFamily 参数,应将其设置为 AF_UNSPEC。
[in, optional] injectionContext
可使用 FwpsQueryPacketInjectionState0 函数检索的注入上下文的可选句柄。
[in] flags
保留。 必须设置为零。
[in, optional] reserved
保留。 必须设置为 NULL。
[in] vSwitchId
筛选引擎在 FWPS_INCOMING_VALUES0 结构中传递给标注驱动程序的 classifyFn 标注函数的虚拟交换机标识符。 这是在xxx_VSWITCH_ID字段中提供的虚拟交换机的 GUID 。
[in] vSwitchSourcePortId
虚拟交换机源端口标识符。
[in] vSwitchSourceNicIndex
虚拟交换机源 NIC 索引。
netBufferLists
要注入虚拟交换机出口数据路径 的NET_BUFFER_LIST 结构链。
[in] completionFn
指向标注驱动程序提供的 completionFn 标注函数的指针。 在 netBufferLists 参数处的数据包数据已注入虚拟交换机出口数据路径后,筛选器引擎调用此函数。 将为链中的每个NET_BUFFER_LIST调用一次 completionFn 函数。 注入克隆或创建NET_BUFFER_LIST结构时,必须指定 completionFn。 注入从筛选器引擎接收的原始未更改 NET_BUFFER_LIST 结构时,此参数可以为 NULL。
[in, optional] completionContext
指向标注驱动程序提供的上下文的指针,该上下文传递给 completionFn 参数指向的标注函数。 此参数是可选的,可以为 NULL。
返回值
FwpsInjectvSwitchEthernetIngressAsync0 函数返回以下 NTSTATUS 代码之一。
返回代码 | 说明 |
---|---|
|
已成功注入虚拟交换机 NET_BUFFER_LIST 链。 |
|
出现了错误。 |
注解
当标注使用 FwpsInjectvSwitchEthernetIngressAsync0 注入数据包时,如果数据包与最初分类的筛选器匹配,则可再次对注入的数据包进行分类。 因此,与 IP 层的标注一样,虚拟交换机标注必须调用 FwpsQueryPacketInjectionState0 函数,以防止无限数据包检查。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 8开始可用。 |
目标平台 | 通用 |
标头 | fwpsk.h (包括 Fwpsk.h) |
Library | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |
另请参阅
FwpsAllocateNetBufferAndNetBufferList0