FwpsInjectMacReceiveAsync0, fonction (fwpsk.h)
La fonction FwpsInjectMacReceiveAsync0 peut réinjecter une trame MAC (ou un clone du frame) précédemment absorbé vers le chemin de données entrant de couche 2 à partir duquel il a été intercepté, ou injecter une trame MAC inventée.
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 les indicateurs de défini sur FWPS_INJECTION_TYPE_L2.
[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é. Doit être défini sur zéro.
[in] layerId
Identificateur d’exécution de la couche de filtrage à laquelle le flux de données est traité.
[in] interfaceIndex
Index d’interface transmis au classifieFn valeur entrante FWPS_FIELD_XxxMAC_FRAMEXxx_INTERFACE_INDEX.
[in] NdisPortNumber
Numéro de port NDIS transmis au du pilote de légende classifiezFn valeur entrante FWPS_FIELD_XxxMAC_FRAMEXxx_NDIS_PORT.
[in, out] netBufferLists
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 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 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 les netBufferLists paramètre, a été injectée dans la pile réseau. Ce pointeur doit être spécifié lors de l’injection de structures NET_BUFFER_LIST clonées ou créées. Lors de l’injection de structures de NET_BUFFER_LIST d’origine, ce paramètre peut être 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 transmis à 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 FwpsInjectMacReceiveAsync0 retourne l’un des codes NTSTATUS suivants.
Retourner le code | Description |
---|---|
|
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, l’état membre de la structure de NET_BUFFER_LIST terminée indique la raison de l’échec. |
|
La couche MAC n’est pas prête à accepter l’injection de données de paquets. |
|
La poignée d’injection est fermée. |
|
Le handle d’injection n’a pas été créé avec les indicateurs de paramètre du fonction FwpsInjectionHandleCreate0 définie sur FWPS_INJECTION_TYPE_L2. |
|
Une erreur s’est produite. |
Remarques
Un pilote de rappel appelle la fonction FwpsInjectMacReceiveAsync0 pour réinjecter une trame MAC précédemment absorbé (ou un clone de l’image) vers le chemin de données entrant de couche 2 à partir duquel il a été intercepté, ou pour injecter une trame MAC inventée.
Le paramètre netBufferLists peut être une chaîne de NET_BUFFER_LIST. Toutefois, la fonction d’achèvement peut être appelée plusieurs fois chacune, en effectuant un segment (ou un seul NET_BUFFER_LIST) de la chaîne.
Les images injectées peuvent être classifiées à nouveau si les paquets correspondent au même filtre qu’à l’origine classé. Par conséquent, comme avec les légendes sur les couches IP, les légendes de couche 2 doivent également se protéger contre l’inspection infinie des paquets en appelant FwpsQueryPacketInjectionState0.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 8. |
plateforme cible | Universel |
d’en-tête | fwpsk.h (include Fwpsk.h) |
bibliothèque | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |