structure FWPS_INCOMING_METADATA_VALUES0 (fwpsk.h)

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

NotezFWPS_INCOMING_METADATA_VALUES0 est une version spécifique de FWPS_INCOMING_METADATA_VALUES. Pour plus d’informations , voir 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é pour le 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’il est utilisé 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.

Sur les couches d’erreur ICMP entrantes suivantes, ipHeaderSize spécifie seul 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 FWPS_METADATA_FIELD_IP_HEADER_SIZE est défini dans le membre currentMetadataValues .

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 des données à la fin de l’en-tête de transport.

Sur 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 FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE est défini dans le membre currentMetadataValues .

processPath

Pointeur vers une structure de 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 le membre currentMetadataValues .

token

Handle pour le jeton utilisé pour valider les autorisations de 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 FWPS_METADATA_FIELD_PROCESS_ID est défini dans le membre currentMetadataValues .

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 le membre currentMetadataValues .

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 le membre currentMetadataValues .

compartmentId

Identificateur du compartiment de routage dans lequel le paquet a été reçu ou est en cours d’envoi. Tous les paquets modifiés doivent être ré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 FWPS_METADATA_FIELD_COMPARTMENT_ID est défini dans le membre currentMetadataValues .

fragmentMetadata

An FWPS_INBOUND_FRAGMENT_METADATA0 structure 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 FWPS_METADATA_FIELD_FRAGMENT_DATA est défini dans le membre currentMetadataValues .

pathMtu

Unité de transmission maximale du chemin d’accès (MTU de chemin) 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 le membre currentMetadataValues .

completionHandle

Un handle de saisie semi-automatique nécessaire pour mettre fin à l’opération de filtrage en cours. Ce membre contient des données valides uniquement si l’indicateur FWPS_METADATA_FIELD_COMPLETION_HANDLE est défini dans le membre currentMetadataValues .

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 FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE est défini dans le membre currentMetadataValues .

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 le membre currentMetadataValues .

controlData

Objet de données de contrôle de socket facultatif. Ce membre contient des données valides uniquement si l’indicateur FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA est défini dans le membre currentMetadataValues . 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 des couches de connexion ou de réception/acceptation de la couche application (ALE) lors d’une opération de classification de réautorisation. Pour plus d'informations, consultez la section Notes.

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

headerIncludeHeader

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

Note Disponible uniquement dans Windows Server 2008, Windows Vista SP1 et versions ultérieures de Windows.
 

headerIncludeHeaderLength

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

Note Disponible uniquement dans Windows Server 2008, Windows Vista SP1 et versions ultérieures de Windows.
 

destinationPrefix

Préfixe de destination.

Note Disponible uniquement dans Windows 7 et versions ultérieures de Windows.
 

frameLength

Longueur du cadre.

Note Disponible uniquement dans Windows 7 et versions ultérieures de Windows.
 

parentEndpointHandle

Handle du parent du point de terminaison.

Note Disponible uniquement dans Windows 7 et versions ultérieures de Windows.
 

icmpIdAndSequence

Identificateur et séquence ICMP.

Note Disponible uniquement dans Windows 7 et versions ultérieures de Windows.
 

localRedirectTargetPID

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

Note Disponible uniquement dans Windows 7 et versions ultérieures de Windows.
 

originalDestination

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

Note Disponible uniquement dans Windows 7 et versions ultérieures de Windows.
 

redirectRecords

Un handle d’enregistrement de redirection qui peut être passé à la fonction FwpsQueryConnectionRedirectState0 pour obtenir l’état de redirection.

Note Disponible uniquement dans les versions Windows 8 et ultérieures de Windows.
 

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 un OR au niveau du bit.

Note Disponible uniquement dans les versions Windows 8 et ultérieures de Windows.
 
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 pour 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 un or au niveau du bit.

Note Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
 
Valeur Signification
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV4_FRAMING
Indique un cadrage IP4 brut.
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV6_FRAMING
Indique un 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é en plusieurs NBL, chacune d’elles étant destinée à une machine virtuelle différente, et que le premier NBL de cette distribution a déjà été indiqué à votre pilote de légende.

Cet indicateur n’est pas défini sur le premier NBL du groupe distribué. Tous les NCL suivants pour le groupe auront cet indicateur défini.

Pour l’injection, votre pilote de légende doit cloner le NBL, bloquer et absorber le paquet d’origine, puis 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 FWPS_RIGHT_ACTION_WRITE pour le clone. Lorsque le clone injecté sort de l’entrée, il est redistribué et toutes les indications ont un état d’injection de FWPS_PACKET_INJECTED_BY_SELF ou de FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.

Note Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
 

ethernetMacHeaderSize

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

Note Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
 

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.

Note Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
 

vSwitchSourcePortId

Identificateur unique du port source sur le commutateur virtuel.

Note Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
 

vSwitchSourceNicIndex

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

Note Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
 

vSwitchDestinationPortId

Identificateur unique du port de destination sur le commutateur virtuel.

Note Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
 

padding0

Réservé.

Note Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
 

padding1

Réservé.

Note Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
 

padding2

Réservé.

Note Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
 

vSwitchPacketContext

Handle pour le contexte de paquet de commutateur virtuel.

Note Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
 

subProcessTag

Réservé.

Note Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
 

reserved1

Remarques

Le moteur de filtre transmet un pointeur vers une structure de FWPS_INCOMING_METADATA_VALUES0 à la fonction de légende classifyFn d’une légende. Les valeurs de métadonnées contenues dans la structure ne sont pas traitées par le moteur de filtre, mais sont fournies à la fonction de légende classifyFn d’une 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 de 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 de FWPS_INCOMING_METADATA_VALUES0, le membre packetDirection spécifie si le paquet a été entrant ou sortant lors d’une opération de classification de réauthentification. Sinon, la valeur de 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 de 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 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_INBOUND.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows Vista.
En-tête fwpsk.h (include Fwpsk.h)

Voir aussi

CMSGHDR

FWPS_DISCARD_METADATA0

FWPS_INBOUND_FRAGMENT_METADATA0

FWP_BYTE_BLOB

FWP_DIRECTION

FwpsQueryConnectionRedirectState0

NET_BUFFER_LIST

classifyFn