Partager via


FwpsInjectForwardAsync0, fonction (fwpsk.h)

La fonction FwpsInjectForwardAsync0 injecte des données de paquets dans le chemin de données de transfert.

RemarqueFwpsInjectForwardAsync0 est une version spécifique de FwpsInjectForwardAsync. Pour plus d’informations, consultez PAM Version-Independent noms et ciblage de versions spécifiques de Windows.
 

Syntaxe

NTSTATUS FwpsInjectForwardAsync0(
  [in]           HANDLE                injectionHandle,
  [in, optional] HANDLE                injectionContext,
  [in]           UINT32                flags,
  [in]           ADDRESS_FAMILY        addressFamily,
  [in]           COMPARTMENT_ID        compartmentId,
  [in]           IF_INDEX              interfaceIndex,
  [in, out]      NET_BUFFER_LIST       *netBufferList,
  [in]           FWPS_INJECT_COMPLETE0 completionFn,
  [in, optional] HANDLE                completionContext
);

Paramètres

[in] injectionHandle

Handle d’injection qui a été créé précédemment par un appel au fonction FwpsInjectionHandleCreate0.

[in, optional] injectionContext

Handle facultatif dans le contexte d’injection. S’il est spécifié, il peut être obtenu en appelant le fonction FwpsQueryPacketInjectionState0 lorsque l’état d’injection de paquets FWPS_PACKET_INJECTION_STATE est FWPS_PACKET_INJECTED_BY_SELF ou FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.

[in] flags

Réservé. Les pilotes de légende doivent définir ce paramètre sur zéro.

[in] addressFamily

Une des familles d’adresses suivantes :

AF_INET

Famille d’adresses IPv4.

AF_INET6

Famille d’adresses IPv6.

[in] compartmentId

Identificateur du compartiment de routage dans lequel les données de paquets sont injectées, spécifiée en tant que type COMPARTMENT_ID. Cet identificateur est fourni à une légende par le biais du compartimentId membre du FWPS_INCOMING_METADATA_VALUES0 structure passée à la fonction de légende classifierFn fonction de légende du pilote de légende. Si le compartimentId membre est disponible pour les légendes, FWPS_METADATA_FIELD_COMPARTMENT_ID est défini dans le membre currentMetadataValues. Sinon, définissez ce paramètre sur UNSPECIFIED_COMPARTMENT_ID.

[in] interfaceIndex

Index de l’interface de destination (sur laquelle les données de paquet doivent être envoyées). L’index est une valeur 32 bits. Un pilote de légende doit utiliser la valeur de l’index d’interface qui est transmis en tant qu’une des valeurs de données entrantes à son classifiezFn fonction de légende pour ce paramètre si le paquet doit être injecté dans la même interface que celle où le paquet d’origine a été indiqué.

[in, out] netBufferList

Pointeur vers une structure NET_BUFFER_LIST qui décrit les données de paquet en cours d’injection. Un pilote de légende alloue une structure de NET_BUFFER_LIST pour injecter des données de paquets en appelant l’un ou l’autre fonction FwpsAllocateCloneNetBufferList0 ou fonction FwpsAllocateNetBufferAndNetBufferList0. La structure NET_BUFFER_LIST doit commencer par un en-tête IP.

[in] completionFn

Pointeur vers un completionFn fonction de légende fournie par le pilote de légende. Le moteur de filtre appelle cette fonction après les données de paquets, décrites par le paramètre netBufferList, a été injectée dans la pile réseau.

[in, optional] completionContext

Pointeur vers un contexte fourni par le pilote de légende passé à la fonction de légende pointée par le paramètre completionFn. Ce paramètre est facultatif et peut être NULL.

Valeur de retour

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

Retourner le code Description
STATUS_SUCCESS
L’injection de données de paquet a été lancée avec succès. Le moteur de filtre appelle la fonction d’achèvement une fois que le moteur de filtre a terminé d’injecter les données de paquets dans la pile réseau, ou lorsqu’une erreur s’est produite par la suite, auquel cas le membre Status membre de la structure de NET_BUFFER_LIST terminée indique la raison de l’échec.
STATUS_FWP_TCPIP_NOT_READY
La pile réseau TCP/IP n’est pas prête à accepter l’injection de données de paquets.
STATUS_FWP_INJECT_HANDLE_CLOSING
La poignée d’injection est fermée.
Autres codes d’état
Une erreur s’est produite.

Remarques

Un pilote de légende appelle la fonction FwpsInjectForwardAsync0 pour injecter des données de paquets ou un fragment de paquet dans le chemin de données de transfert.

Cette fonction peut s’exécuter de façon asynchrone. Les pilotes de légende injectent normalement des données dans la pile réseau lors de la modification des données de paquets. Pour plus d’informations sur la façon dont un pilote de légende peut modifier les données de paquets, consultez opérations du pilote de légende.

Un paquet ou un fragment de paquets injecté avec cette fonction ne sera indiqué à aucune couche PAM pour le filtrage.

Si la valeur de retour n’est pas STATUS_SUCCESS, la fonction d’achèvement n’est pas appelée. Dans ce cas, la liste de mémoires tampons nettes pointée par netBufferList doit être libérée par un appel à FwpsFreeNetBufferList0 ou FwpsFreeCloneNetBufferList0.

Les paquets IP ou les fragments peuvent être clonés, modifiés et injectés dans la pile réseau. Toutefois, un groupe de fragments doit être réassembté par le pilote de légende sous la forme d’une seule NET_BUFFER_LIST avant de pouvoir être réinjecté.

Les paquets injectés vers l’avant ne reententent pas la couche de transfert. Par conséquent, elles ne seront pas reclassifiées.

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 <= DISPATCH_LEVEL

Voir aussi

FWPS_INCOMING_METADATA_VALUES0 FwpsAllocateCloneNetBufferList0 FwpsAllocateNetBufferAndNetBufferList0

FwpsInjectionHandleCreate0

FwpsInjectionHandleDestroy0

NET_BUFFER_LIST

fonctions d’injection de paquets

classifierFn

completionFn