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 classifyFn d’une légende.
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 un 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 des 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 jusqu’à 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 des 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 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 pour le 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 envoyé. 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 (MTU) de chemin d’accès 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
Handle d’achèvement requis 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
La 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) au cours d’une opération de classification de réautorisation. Pour plus d'informations, consultez la section Notes.
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 des enregistrements de redirection qui peut être passé à 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 un OR au niveau du bit.
l2Flags
Masque de bits contenant des indicateurs de couche 2 qui peuvent être combinés avec un OR au niveau du bit.
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.
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 du port de destination sur le commutateur virtuel.
padding0
Réservé.
padding1
Réservé.
padding2
Réservé.
vSwitchPacketContext
Handle du contexte de paquet de commutateur virtuel.
subProcessTag
Réservé.
reserved1
Réservé.
Remarques
Le moteur de filtre transmet un pointeur vers une structure FWPS_INCOMING_METADATA_VALUES0 vers la fonction de légende classFn 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 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 était entrant ou sortant lors d’une opération de classification de réautorisation. 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 de connexion ale ou de réception/acceptation, 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 des métadonnées FWPS_METADATA_FIELD_PACKET_DIRECTION n’est pas présente, le pilote de légende doit assumer 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.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows Vista. |
En-tête | fwpsk.h (inclure Fwpsk.h) |
Voir aussi
FWPS_INBOUND_FRAGMENT_METADATA0Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour