FwpsInjectionHandleCreate0 函数 (fwpsk.h)
FwpsInjectionHandleCreate0 函数创建一个句柄,该句柄可由 数据包注入函数 将数据包或流式传输到 TCP/IP 网络堆栈,并通过 FwpsQueryPacketInjectionState0 函数来查询数据包注入状态。
语法
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
通过调用
FWPS_INJECTION_TYPE_NETWORK
通过调用以下任一项来注入网络数据 FwpsInjectNetworkReceiveAsync0 函数或 FwpsInjectNetworkSendAsync0 函数。
FWPS_INJECTION_TYPE_STREAM
通过调用
FWPS_INJECTION_TYPE_TRANSPORT
通过调用以下任一项来注入传输数据 FwpsInjectTransportReceiveAsync0 函数或 FwpsInjectTransportSendAsync0 函数。
若要创建供多个注入函数使用的注入句柄,请结合注入类型位和按位 OR作。 如果标志值设置为零,则生成的注入句柄可用于传输、流和转发注入。
[out] injectionHandle
指向接收句柄的变量的指针。
返回值
FwpsInjectionHandleCreate0 函数返回以下 NTSTATUS 代码之一。
返回代码 | 描述 |
---|---|
|
已成功创建注入句柄。 |
|
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 |