Partager via


structure FWPS_INCOMING_METADATA_VALUES0 (fwpsk.h)

La structure FWPS_INCOMING_METADATA_VALUES0 définit les valeurs de métadonnées que le moteur de filtre transmet à la fonction de légende classifiezFn fonction de légende.

Note

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

Syntaxe

typedef struct FWPS_INCOMING_METADATA_VALUES0_ {
  UINT32                          currentMetadataValues;
  UINT32                          flags;
  UINT64                          reserved;
  FWPS_DISCARD_METADATA0          discardMetadata;
  UINT64                          flowHandle;
  UINT32                          ipHeaderSize;
  UINT32                          transportHeaderSize;
  FWP_BYTE_BLOB                   *processPath;
  UINT64                          token;
  UINT64                          processId;
  UINT32                          sourceInterfaceIndex;
  UINT32                          destinationInterfaceIndex;
  ULONG                           compartmentId;
  FWPS_INBOUND_FRAGMENT_METADATA0 fragmentMetadata;
  ULONG                           pathMtu;
  HANDLE                          completionHandle;
  UINT64                          transportEndpointHandle;
  SCOPE_ID                        remoteScopeId;
  WSACMSGHDR                      *controlData;
  ULONG                           controlDataLength;
  FWP_DIRECTION                   packetDirection;
  PVOID                           headerIncludeHeader;
  ULONG                           headerIncludeHeaderLength;
  IP_ADDRESS_PREFIX               destinationPrefix;
  UINT16                          frameLength;
  UINT64                          parentEndpointHandle;
  UINT32                          icmpIdAndSequence;
  DWORD                           localRedirectTargetPID;
  SOCKADDR                        *originalDestination;
  HANDLE                          redirectRecords;
  UINT32                          currentL2MetadataValues;
  UINT32                          l2Flags;
  UINT32                          ethernetMacHeaderSize;
  UINT32                          wiFiOperationMode;
  NDIS_SWITCH_PORT_ID             vSwitchSourcePortId;
  NDIS_SWITCH_NIC_INDEX           vSwitchSourceNicIndex;
  NDIS_SWITCH_PORT_ID             vSwitchDestinationPortId;
  UINT32                          padding0;
  USHORT                          padding1;
  UINT32                          padding2;
  HANDLE                          vSwitchPacketContext;
  PVOID                           subProcessTag;
  UINT64                          reserved1;
} FWPS_INCOMING_METADATA_VALUES0;

Membres

currentMetadataValues

Valeur UINT32 qui contient une or au niveau du bit d’une combinaison d’identificateurs de champ de métadonnées qui spécifient les valeurs de métadonnées définies dans la structure.

flags

Utilisé en interne par le moteur de filtre. Les pilotes de légende doivent ignorer ce membre.

reserved

Réservé à l’utilisation du système. Les pilotes de légende doivent ignorer ce membre.

discardMetadata

Structure FWPS_DISCARD_METADATA0 qui décrit la raison pour laquelle les données ont été ignorées. Ce membre contient des données valides uniquement si l’indicateur FWPS_METADATA_FIELD_DISCARD_REASON est défini dans le membre currentMetadataValues.

flowHandle

Handle pour le flux de données. Ce membre contient des données valides uniquement si l’indicateur FWPS_METADATA_FIELD_FLOW_HANDLE est défini dans le membre currentMetadataValues.

ipHeaderSize

Décalage, en octets, de l’en-tête IP.

Sur les chemins d’accès entrants, ipHeaderSize, lorsqu’elle est utilisée conjointement avec le membre transportHeaderSize, spécifie le nombre d’octets à retirer de l’emplacement de décalage de données au début de l’en-tête IP.

Dans les couches d’erreur ICMP entrantes suivantes, ipHeaderSize seul spécifie le nombre total d’octets à retirer du décalage de données au début de l’en-tête IP :

FWPS_LAYER_INBOUND_ICMP_ERROR_V4

FWPS_LAYER_INBOUND_ICMP_ERROR_V6

FWPS_LAYER_INBOUND_ICMP_ERROR_V4_DISCARD

FWPS_LAYER_INBOUND_ICMP_ERROR_V6_DISCARD

Sur les chemins sortants, si ipHeaderSize est supérieur à zéro, il spécifie le nombre d’octets à passer de l’emplacement de décalage de données à la fin de l’en-tête IP.

Ce membre n’est pas applicable au chemin d’accès sortant aux couches suivantes :

FWPS_LAYER_DATAGRAM_DATA_V4

FWPS_LAYER_DATAGRAM_DATA_V6

FWPS_LAYER_DATAGRAM_DATA_V4_DISCARD

FWPS_LAYER_DATAGRAM_DATA_V6_DISCARD

Ce membre contient des données valides uniquement si l’indicateur de FWPS_METADATA_FIELD_IP_HEADER_SIZE est défini dans la currentMetadataValues membre.

transportHeaderSize

Décalage ou taille, en octets, de l’en-tête de transport.

Sur les chemins d’accès entrants, transportHeaderSize spécifie le nombre d’octets à retirer de l’emplacement de décalage de données à la fin de l’en-tête de transport.

Dans les couches d’erreur ICMP entrantes suivantes, transportHeaderSize spécifie la taille de l’en-tête ICMP :

  • FWPS_LAYER_INBOUND_ICMP_ERROR_V4
  • FWPS_LAYER_INBOUND_ICMP_ERROR_V6
  • FWPS_LAYER_INBOUND_ICMP_ERROR_V4_DISCARD
  • FWPS_LAYER_INBOUND_ICMP_ERROR_V6_DISCARD

Sur les chemins sortants, transportHeaderSize spécifie le nombre d’octets à passer de l’emplacement de décalage de données à la fin de l’en-tête de transport.

Ce membre contient des données valides uniquement si l’indicateur de FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE est défini dans la currentMetadataValues membre.

processPath

Pointeur vers une structure FWP_BYTE_BLOB qui contient le chemin d’accès complet au processus propriétaire du point de terminaison. Ce membre contient des données valides uniquement si l’indicateur FWPS_METADATA_FIELD_PROCESS_PATH est défini dans la currentMetadataValues membre.

token

Handle pour le jeton utilisé pour valider les autorisations pour l’utilisateur. Ce membre contient des données valides uniquement si l’indicateur FWPS_METADATA_FIELD_TOKEN est défini dans le membre currentMetadataValues.

processId

ID de processus du processus propriétaire du point de terminaison. Ce membre contient des données valides uniquement si l’indicateur de FWPS_METADATA_FIELD_PROCESS_ID est défini dans la currentMetadataValues membre.

sourceInterfaceIndex

Index de l’interface réseau où un paquet entrant a été reçu. Ce membre contient des données valides uniquement si l’indicateur FWPS_METADATA_FIELD_SOURCE_INTERFACE_INDEX est défini dans la currentMetadataValues membre.

destinationInterfaceIndex

Index de l’interface réseau où un paquet sortant doit être envoyé. Ce membre contient des données valides uniquement si l’indicateur FWPS_METADATA_FIELD_DESTINATION_INTERFACE_INDEX est défini dans la currentMetadataValues membre.

compartmentId

Identificateur du compartiment de routage dans lequel le paquet a été reçu ou est envoyé. Tous les paquets modifiés doivent être injectés dans le même compartiment de routage que celui indiqué pour le paquet d’origine. Ce membre contient des données valides uniquement si l’indicateur de FWPS_METADATA_FIELD_COMPARTMENT_ID est défini dans la currentMetadataValues membre.

fragmentMetadata

Structure FWPS_INBOUND_FRAGMENT_METADATA0 qui décrit les données de fragment d’un fragment de paquet reçu. Ce membre contient des données valides uniquement si l’indicateur de FWPS_METADATA_FIELD_FRAGMENT_DATA est défini dans la currentMetadataValues membre.

pathMtu

Unité de transmission maximale de chemin d’accès (MTU) pour un paquet sortant. Cette valeur indique la plus grande taille de paquet physique, en octets, qu’un réseau peut transmettre sans fragmentation, ce membre contient des données valides uniquement si l’indicateur FWPS_METADATA_FIELD_PATH_MTU est défini dans la currentMetadataValues membre.

completionHandle

Handle d’achèvement requis pour mettre en pendant l’opération de filtrage actuelle. Ce membre contient des données valides uniquement si l’indicateur FWPS_METADATA_FIELD_COMPLETION_HANDLE est défini dans la currentMetadataValues membre.

transportEndpointHandle

Handle de point de terminaison qui indique la fin du paquet à injecter dans la couche de transport sortante. Ce membre contient des données valides uniquement si l’indicateur de FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE est défini dans la currentMetadataValues membre.

remoteScopeId

Identificateur d’étendue distante à utiliser dans l’injection de couche de transport sortante. Ce membre contient des données valides uniquement si l’indicateur FWPS_METADATA_FIELD_REMOTE_SCOPE_ID est défini dans la currentMetadataValues membre.

controlData

Objet de données de contrôle de socket facultatif. Ce membre contient des données valides uniquement si l’indicateur de FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA est défini dans la currentMetadataValues membre. Pour plus d’informations sur le type WSACMSGHDR, consultez CMSGHDR.

controlDataLength

Longueur, en octets, du membre controlData .

packetDirection

Direction du trafic réseau (entrant ou sortant) spécifiée par l’une des valeurs constantes de FWP_DIRECTION. Ce membre est défini au niveau de la connexion de la couche Application (ALE) ou de réception/acceptation de couches lors d’une opération de classification de réauthorisation. Pour plus d’informations, consultez la section Remarques.

Note

Ce membre contient des données valides uniquement si l’indicateur FWPS_METADATA_FIELD_PACKET_DIRECTION est défini dans la currentMetadataValues membre.

headerIncludeHeader

Pointeur vers l’en-tête IP si le paquet est envoyé à partir d’un socket brut.

headerIncludeHeaderLength

Longueur, en octets, de l’en-tête IP pointé par headerIncludeHeader.

destinationPrefix

Préfixe de destination.

frameLength

Longueur du cadre.

parentEndpointHandle

Handle du parent du point de terminaison.

icmpIdAndSequence

Identificateur et séquence ICMP.

localRedirectTargetPID

PID du processus responsable d’une connexion redirigée.

originalDestination

Destination d’origine d’une connexion redirigée.

redirectRecords

Handle d’enregistrements de redirection qui peut être transmis à la fonction FwpsQueryConnectionRedirectState0 pour obtenir l’état de redirection.

currentL2MetadataValues

Masque de bits qui contient des indicateurs qui spécifient les valeurs de couche 2 définies. Une ou plusieurs valeurs peuvent être combinées avec une or au niveau du bit.

Valeur Signification
FWPS_L2_METADATA_FIELD_ETHERNET_MAC_HEADER_SIZE La valeur du membre ethernetMacHeaderSize indique la taille de l’en-tête MAC.
FWPS_L2_METADATA_FIELD_WIFI_OPERATION_MODE La valeur du membre wiFiOperationMode indique le mode d’opération Natif 802.11 actuel.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_PORT_ID La valeur du membre vSwitchSourcePortId indique l’identificateur du port source sur le commutateur virtuel.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_NIC_INDEX La valeur du membre vSwitchSourceNicIndex indique l’index de la carte réseau source sur le commutateur virtuel.
FWPS_L2_METADATA_FIELD_VSWITCH_PACKET_CONTEXT La valeur du membre vSwitchPacketContext indique un HANDLE dans le contexte de paquet de commutateur virtuel.
FWPS_L2_METADATA_FIELD_VSWITCH_DESTINATION_PORT_ID La valeur du membre vSwitchDestinationPortId indique l’identificateur du port de destination sur le commutateur virtuel.

l2Flags

Masque de bits contenant des indicateurs de couche 2 qui peuvent être combinés avec une or au niveau du bit.

Valeur Signification
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV4_FRAMING Indique le cadrage IP4 brut.
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV6_FRAMING Indique le cadrage IP6 brut.
FWPS_L2_INCOMING_FLAG_RECLASSIFY_MULTI_DESTINATION Cet indicateur indique qu’un NBL qui a été vu une fois à l’entrée a été distribué dans plusieurs listes NBL, chacune destinée à une machine virtuelle différente, et le premier NBL de cette distribution a déjà été indiqué à votre pilote de légende.

Le premier NBL du groupe distribué n’aura pas cet indicateur défini. Tous les NBL suivants pour le groupe auront cet indicateur défini.

Dans le but d’injecter, votre pilote de légende doit cloner le NBL, bloquer et absorber le paquet d’origine, et effacer l’indicateur FWPS_RIGHT_ACTION_WRITE pour la première indication. Modifiez ensuite le clone et injectez-le dans le chemin d’entrée.

Pour toutes les indications suivantes, vous devez bloquer et absorber le paquet d’origine et effacer l’indicateur de FWPS_RIGHT_ACTION_WRITE pour le clone. Lorsque le clone injecté sort de l’entrée, il sera redistribué à nouveau, et toutes les indications auront un état d’injection de FWPS_PACKET_INJECTED_BY_SELF ou de FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.

ethernetMacHeaderSize

Taille, en octets, de l’en-tête MAC si l’indicateur de FWPS_L2_METADATA_FIELD_802_3_MAC_HEADER_SIZE est défini. Cet indicateur est défini pour la couche entrante 802.3 uniquement.

wiFiOperationMode

Mode d’opération natif 802.11 actuel si l’indicateur FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE est défini. Pour plus d’informations, consultez DOT11_CURRENT_OPERATION_MODE.

vSwitchSourcePortId

Identificateur unique pour le port source sur le commutateur virtuel.

vSwitchSourceNicIndex

Index de la carte réseau source sur le commutateur virtuel.

vSwitchDestinationPortId

Identificateur unique pour le port de destination sur le commutateur virtuel.

padding0

Réservé.

padding1

Réservé.

padding2

Réservé.

vSwitchPacketContext

Handle vers le contexte de paquet de commutateur virtuel.

subProcessTag

Réservé.

reserved1

Réservé.

Remarques

Le moteur de filtre transmet un pointeur vers une structure de FWPS_INCOMING_METADATA_VALUES0 à la fonction de légende classifierFn fonction de légende. Les valeurs de métadonnées contenues dans la structure ne sont pas traitées par le moteur de filtre, mais elles sont fournies à la fonction de légende classifieFn de légende pour fournir des informations supplémentaires.

Un pilote de légende peut utiliser la macro suivante pour tester si une valeur de métadonnées spécifique est présente dans une structure FWPS_INCOMING_METADATA_VALUES0 :

FWPS_IS_METADATA_FIELD_PRESENT(metadataValues, metadataField)

Si la valeur de métadonnées FWPS_METADATA_FIELD_PACKET_DIRECTION est présente dans une structure FWPS_INCOMING_METADATA_VALUES0, le membre packetDirection spécifie si le paquet était entrant ou sortant lors d’une opération de classification de réauthentification. Sinon, la valeur des métadonnées FWPS_METADATA_FIELD_PACKET_DIRECTION n’est pas présente.

Le pilote de légende doit suivre ces instructions lorsqu’il inspecte le paquet :

  • Au niveau des couches ale connect ou receive/accept, le pilote de légende ne doit pas supposer que le paquet contient un en-tête IP valide si packetDirection est défini sur FWP_DIRECTION_OUTBOUND et que la valeur des métadonnées FWPS_METADATA_FIELD_PACKET_DIRECTION est présente.
  • Au niveau de la couche de connexion ALE, si la valeur de métadonnées FWPS_METADATA_FIELD_PACKET_DIRECTION n’est pas présente, le pilote de légende doit prendre une direction de paquet de FWP_DIRECTION_OUTBOUND.
  • Au niveau de la couche réception/acceptation ALE, si la valeur des métadonnées FWPS_METADATA_FIELD_PACKET_DIRECTION n’est pas présente, le pilote de légende doit prendre une direction de paquet de FWP_DIRECTION_INBOUND.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows Vista.
d’en-tête fwpsk.h (include Fwpsk.h)

Voir aussi