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

通过调用 将注入流数据 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 层(*MAC_FRAME_NATIVE、*MAC_FRAME_ETHERNET、*VSWITCH_ETHERNET),可以使用通过FWPS_INJECTION_TYPE_L2标志获取的相同注入句柄。 注入类型比层更接近注入函数。

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

要求

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

另请参阅

FwpsInjectionHandleDestroy0

FwpsQueryPacketInjectionState0

数据包注入函数