Partager via


FwpsInjectionHandleCreate0, fonction (fwpsk.h)

La fonction FwpsInjectionHandleCreate0 crée un handle qui peut être utilisé par fonctions d’injection de paquets pour injecter des données de paquets ou diffuser des données 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 PAM Version-Independent noms et ciblage de versions spécifiques de 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 seront injectées en appelant l’une ou l’autre des fonction FwpsInjectNetworkReceiveAsync0 ou fonction FwpsInjectNetworkSendAsync0.

FWPS_INJECTION_TYPE_STREAM

Les données de flux seront injectées en appelant le fonction FwpsStreamInjectAsync0.

FWPS_INJECTION_TYPE_TRANSPORT

Les données de transport seront injectées en appelant l’une ou l’autre 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, la poignée d’injection résultante peut être utilisée pour les injections de transport, de flux et de transfert.

[out] injectionHandle

Pointeur vers une variable qui reçoit le handle.

Valeur de retour

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

Retourner le code 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 plus tard pour créer un handle d’injection.
Autres codes d’état
Une erreur s’est produite.

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 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 terminé d’utiliser un handle d’injection, il doit appeler la fonction FwpsInjectionHandleDestroy0 pour détruire le handle. Si les injections en attente n’ont pas encore été effectuées, cette fonction attend sa fin avant de retourner.

Lorsque des injections sont effectuées sur 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 de FWPS_INJECTION_TYPE_L2. Le type d’injection est lié plus près des fonctions d’injection que les couches.

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

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows Vista.
plateforme cible Universel
d’en-tête fwpsk.h (include Fwpsk.h)
bibliothèque Fwpkclnt.lib
IRQL PASSIVE_LEVEL

Voir aussi

FwpsInjectionHandleDestroy0

FwpsQueryPacketInjectionState0

fonctions d’injection de paquets