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
数据包数据将通过调用 注入 FwpsInjectForwardAsync0 函数。
FWPS_INJECTION_TYPE_NETWORK
网络数据将通过调用 FwpsInjectNetworkReceiveAsync0 函数或 FwpsInjectNetworkSendAsync0 函数。
FWPS_INJECTION_TYPE_STREAM
Stream数据将通过调用 FwpsStreamInjectAsync0 函数。
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_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 |