Partager via


Fonction FwpsInjectionHandleCreate0 (fwpsk.h)

La fonction FwpsInjectionHandleCreate0 crée un handle qui peut être utilisé par les fonctions d’injection de paquets pour injecter des données de paquets ou de flux dans la pile réseau TCP/IP et par la fonction FwpsQueryPacketInjectionState0 pour interroger l’état d’injection de paquets.

RemarqueFwpsInjectionHandleCreate0 est une version spécifique de FwpsInjectionHandleCreate. Pour plus d’informations , consultez WFP Version-Independent Names and Targeting Specific Versions of Windows .
 

Syntaxe

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

Paramètres

[in, optional] addressFamily

Famille d’adresses pour laquelle le handle d’injection est créé. Il peut s’agir de l’une des familles d’adresses suivantes :

AF_UNSPEC

La famille d’adresses n’est pas spécifiée.

AF_INET

Famille d’adresses IPv4.

AF_INET6

Famille d’adresses IPv6.

Pour les injections de transport, de flux et de transfert, ce paramètre est facultatif et peut être défini sur AF_UNSPEC, ce qui indique une famille d’adresses non spécifiée. Cette valeur est définie dans Ws2def.h.

[in] flags

Valeur d’indicateur définie par un pilote de légende pour indiquer le type de données à injecter. Cet indicateur peut avoir une ou plusieurs des valeurs suivantes :

FWPS_INJECTION_TYPE_FORWARD

Les données de paquets seront injectées en appelant le Fonction FwpsInjectForwardAsync0 .

FWPS_INJECTION_TYPE_NETWORK

Les données réseau sont injectées en appelant le Fonction FwpsInjectNetworkReceiveAsync0 ou Fonction FwpsInjectNetworkSendAsync0 .

FWPS_INJECTION_TYPE_STREAM

Stream données seront injectées en appelant le Fonction FwpsStreamInjectAsync0 .

FWPS_INJECTION_TYPE_TRANSPORT

Les données de transport seront injectées en appelant l’un des Fonction FwpsInjectTransportReceiveAsync0 ou Fonction FwpsInjectTransportSendAsync0 .

Pour créer un handle d’injection à utiliser par plusieurs fonctions d’injection, combinez les bits de type d’injection avec les opérations OR au niveau du bit. Si la valeur de l’indicateur est définie sur zéro, le handle d’injection résultant peut être utilisé pour les injections de transport, de flux et de transfert.

[out] injectionHandle

Pointeur vers une variable qui reçoit le handle.

Valeur retournée

La fonction FwpsInjectionHandleCreate0 retourne l’un des codes NTSTATUS suivants.

Code de retour Description
STATUS_SUCCESS
Le handle d’injection a été créé avec succès.
STATUS_FWP_TCPIP_NOT_READY
La pile réseau TCP/IP n’est pas prête. Un pilote de légende doit appeler à nouveau la fonction FwpsInjectionHandleCreate0 ultérieurement pour créer un handle d’injection.
Autres codes status
Une erreur est survenue.

Remarques

Un pilote de légende appelle la fonction FwpsInjectionHandleCreate0 pour créer un handle qui peut être utilisé pour injecter des données de paquets ou de flux dans la pile réseau TCP/IP et pour interroger l’état d’injection de paquets. Un pilote de légende transmet le handle créé aux fonctions d’injection de paquets et FwpsQueryPacketInjectionState0.

Une fois qu’un pilote de légende a fini d’utiliser un handle d’injection, il doit appeler la fonction FwpsInjectionHandleDestroy0 pour détruire le handle. Si les injections en attente ne sont pas encore terminées, cette fonction attend leur achèvement avant de revenir.

Lorsque des injections sont effectuées dans la couche réseau et que les familles d’adresses IPv4 et IPv6 sont filtrées, le pilote de légende doit créer deux handles d’injection en appelant la fonction FwpsInjectionHandleCreate0 deux fois : un appel avec addressFamily défini sur AF_INET et un deuxième appel avec addressFamily défini sur AF_INET6.

Pour les couches MAC ( *MAC_FRAME_NATIVE, *MAC_FRAME_ETHERNET, *VSWITCH_ETHERNET), vous pouvez utiliser la même poignée d’injection acquise avec l’indicateur FWPS_INJECTION_TYPE_L2. Le type d’injection est lié plus près des fonctions d’injection que des couches.

Pour obtenir un exemple de code, consultez PAMSampler HelperFunctions_InjectionData.cpp.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows Vista.
Plateforme cible Universal
En-tête fwpsk.h (include Fwpsk.h)
Bibliothèque Fwpkclnt.lib
IRQL PASSIVE_LEVEL

Voir aussi

FwpsInjectionHandleDestroy0

FwpsQueryPacketInjectionState0

Fonctions d’injection de paquets