FwpsInjectionHandleCreate0 函数 (fwpsk.h)

FwpsInjectionHandleCreate0 函数创建一个句柄,数据包注入函数可以使用该句柄将数据包或数据流式传输到 TCP/IP 网络堆栈中,FwpsQueryPacketInjectionState0 函数可以使用该句柄来查询数据包注入状态。

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

语法

NTSTATUS FwpsInjectionHandleCreate0(
  [in, optional] ADDRESS_FAMILY addressFamily,
  [in]           UINT32         flags,
  [out]          HANDLE         *injectionHandle
);

参数

[in, optional] addressFamily

要为其创建注入句柄的地址系列。 可以是以下地址系列之一:

AF_UNSPEC

未指定地址系列。

AF_INET

IPv4 地址系列。

AF_INET6

IPv6 地址系列。

对于传输、流和前向注入,此参数是可选的,可以设置为 AF_UNSPEC,这表示未指定的地址系列。 此值在 Ws2def.h 中定义。

[in] flags

由标注驱动程序设置的标志值,用于指示要注入的数据类型。 此标志可以具有以下一个或多个值:

FWPS_INJECTION_TYPE_FORWARD

数据包数据将通过调用 注入 FwpsInjectForwardAsync0 函数。

FWPS_INJECTION_TYPE_NETWORK

网络数据将通过调用 FwpsInjectNetworkReceiveAsync0 函数或 FwpsInjectNetworkSendAsync0 函数。

FWPS_INJECTION_TYPE_STREAM

Stream数据将通过调用 FwpsStreamInjectAsync0 函数。

FWPS_INJECTION_TYPE_TRANSPORT

传输数据将通过调用 FwpsInjectTransportReceiveAsync0 函数或 FwpsInjectTransportSendAsync0 函数。

若要创建供多个注入函数使用的注入句柄,请将注入类型位与按位 OR 运算组合在一起。 如果标志值设置为零,则生成的注入句柄可用于传输、流和前向注入。

[out] injectionHandle

指向接收句柄的变量的指针。

返回值

FwpsInjectionHandleCreate0 函数返回以下 NTSTATUS 代码之一。

返回代码 说明
STATUS_SUCCESS
已成功创建注入句柄。
STATUS_FWP_TCPIP_NOT_READY
TCP/IP 网络堆栈未就绪。 标注驱动程序应在以后再次调用 FwpsInjectionHandleCreate0 函数以创建注入句柄。
其他状态代码
出现了错误。

注解

标注驱动程序调用 FwpsInjectionHandleCreate0 函数以创建一个句柄,该句柄可用于将数据包或数据流式传输到 TCP/IP 网络堆栈,并查询数据包注入状态。 标注驱动程序将创建的句柄传递给 数据包注入函数 FwpsQueryPacketInjectionState0

标注驱动程序使用注入句柄后,必须调用 FwpsInjectionHandleDestroy0 函数来销毁句柄。 如果挂起的注入尚未完成,此函数将等待其完成,然后再返回。

当向网络层进行注入并且正在筛选 IPv4 和 IPv6 地址系列时,标注驱动程序必须通过调用 FwpsInjectionHandleCreate0 函数两次创建两个注入句柄:一次调用 addressFamily 设置为 AF_INET,另一次调用 addressFamily 设置为 AF_INET6。

对于 ( *MAC_FRAME_NATIVE、*MAC_FRAME_ETHERNET、*VSWITCH_ETHERNET) 的 MAC 层,可以使用通过 FWPS_INJECTION_TYPE_L2 标志获取的相同注入句柄。 与层相比,注入类型更接近注入函数。

有关代码示例,请参阅 WFPSampler HelperFunctions_InjectionData.cpp

要求

要求
最低受支持的客户端 从 Windows Vista 开始可用。
目标平台 通用
标头 fwpsk.h (包括 Fwpsk.h)
Library Fwpkclnt.lib
IRQL PASSIVE_LEVEL

另请参阅

FwpsInjectionHandleDestroy0

FwpsQueryPacketInjectionState0

数据包注入函数