Fonction FwpsInjectMacReceiveAsync0 (fwpsk.h)

La fonction FwpsInjectMacReceiveAsync0 peut réinjecter une image de contrôle d’accès multimédia (MAC) précédemment absorbée (ou un clone de l’image) vers le chemin de données entrantes de couche 2 à partir de laquelle elle a été interceptée, ou injecter une image MAC inventée.

RemarqueFwpsInjectMacReceiveAsync0 est une version spécifique de FwpsInjectMacReceiveAsync. Pour plus d’informations , voir PAM Version-Independent noms et Ciblage de versions spécifiques de Windows .

 

Syntaxe

NTSTATUS FwpsInjectMacReceiveAsync0(
  [in]           HANDLE               injectionHandle,
  [in, optional] HANDLE               injectionContext,
  [in]           UINT32               flags,
  [in]           UINT16               layerId,
  [in]           IF_INDEX             interfaceIndex,
  [in]           NDIS_PORT_NUMBER     NdisPortNumber,
  [in, out]      NET_BUFFER_LIST      *netBufferLists,
  [in]           FWPS_INJECT_COMPLETE completionFn,
  [in, optional] HANDLE               completionContext
);

Paramètres

[in] injectionHandle

Handle d’injection précédemment obtenu par un appel à la fonction FwpsInjectionHandleCreate0 avec le paramètre flags défini sur FWPS_INJECTION_TYPE_L2.

Note Définissez le paramètre addressFamily de la fonction FwpsInjectionHandleCreate0 sur AF_UNSPEC.
 

[in, optional] injectionContext

Handle facultatif pour 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é. Doit être défini sur zéro.

[in] layerId

Identificateur au moment de l’exécution de la couche de filtrage à laquelle le flux de données est traité.

[in] interfaceIndex

Index d’interface transmis à la valeur entrante classFn du pilote de légende FWPS_FIELD_XxxMAC_FRAMEXxx_INTERFACE_INDEX.

[in] NdisPortNumber

Numéro de port NDIS transmis à la valeur entrante classFn du pilote de légende FWPS_FIELD_XxxMAC_FRAMEXxx_NDIS_PORT.

[in, out] netBufferLists

Pointeur vers une structure de NET_BUFFER_LIST qui décrit les données de paquet injectées. Un pilote de légende alloue une structure NET_BUFFER_LIST à utiliser pour injecter des données de paquets en appelant la fonction FwpsAllocateCloneNetBufferList0 ou la fonction FwpsAllocateNetBufferAndNetBufferList0 .

Quand (layerId == FWPS_LAYER_INBOUND_MAC_FRAME_ETHERNET), le NET_BUFFER_LIST doit commencer par un en-tête Ethernet.

Quand (layerId == FWPS_LAYER_INBOUND_MAC_FRAME_NATIVE), le NET_BUFFER_LIST doit commencer par un en-tête MAC.

[in] completionFn

Pointeur vers une fonction de légende completionFn fournie par le pilote de légende. Le moteur de filtre appelle cette fonction après que les données de paquet, décrites par le paramètre netBufferLists , ont été injectées dans la pile réseau. Ce pointeur doit être spécifié lors de l’injection de structures clonées ou créées NET_BUFFER_LIST. Lors de l’injection de structures NET_BUFFER_LIST d’origine, ce paramètre peut avoir la valeur NULL si les structures d’origine ne sont pas modifiées.

[in, optional] completionContext

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

Valeur retournée

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

Code de retour Description
STATUS_SUCCESS
L’injection de données de trame MAC 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 trame MAC ou lorsqu’une erreur s’est produite par la suite. En cas d’erreur, le membre Status de la structure NET_BUFFER_LIST terminée indique la raison de l’échec.
STATUS_FWP_TCPIP_NOT_READY
La couche MAC n’est pas prête à accepter l’injection de données de paquet.
STATUS_FWP_INJECT_HANDLE_CLOSING
La poignée d’injection est en cours de fermeture.
STATUS_FWP_INJECT_HANDLE_STALE
Le handle d’injection n’a pas été créé avec le paramètre flags du Fonction FwpsInjectionHandleCreate0 définie sur FWPS_INJECTION_TYPE_L2.
Autres codes status
Une erreur est survenue.

Remarques

Un pilote de rappel appelle la fonction FwpsInjectMacReceiveAsync0 pour réinjecter une image MAC précédemment absorbée (ou un clone de l’image) vers le chemin de données entrantes de couche 2 à partir de laquelle elle a été interceptée, ou pour injecter un cadre MAC inventé.

Le paramètre netBufferLists peut être une chaîne NET_BUFFER_LIST . Toutefois, la fonction d’achèvement peut être appelée plusieurs fois chacune, complétant un segment (ou un seul NET_BUFFER_LIST) de la chaîne.

Les images injectées peuvent être classées à nouveau si les paquets correspondent au même filtre que celui initialement classé. Par conséquent, comme pour les légendes des couches IP, les légendes de couche 2 doivent également protéger contre l’inspection infinie des paquets en appelant FwpsQueryPacketInjectionState0.

Configuration requise

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

Voir aussi

FwpsAllocateCloneNetBufferList0 FwpsAllocateNetBufferAndNetBufferList0 FwpsInjectionHandleCreate0

FwpsQueryPacketInjectionState0

NET_BUFFER_LIST

classFn

completionFn