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.
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 |
---|---|
|
Le handle d’injection a été créé avec succès. |
|
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. |
|
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 |