structure FWPS_INCOMING_METADATA_VALUES0 (fwpsu.h)
Définit les valeurs de métadonnées que le moteur de filtre transmet à la fonction de légende classifyFn d’une légende.
Notes
FWPS_INCOMING_METADATA_VALUES0 est une version spécifique de FWPS_INCOMING_METADATA_VALUES. Pour plus d’informations, consultez Noms indépendants de la version du PAM 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;
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 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
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 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.
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.
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.
Disponible uniquement dans Windows Server 2008, Windows Vista SP1 et versions ultérieures de Windows.
destinationPrefix
Préfixe de destination.
Disponible uniquement dans Windows 7 et versions ultérieures de Windows.
frameLength
Longueur du cadre.
Disponible uniquement dans Windows 7 et versions ultérieures de Windows.
parentEndpointHandle
Handle du parent du point de terminaison.
Disponible uniquement dans Windows 7 et versions ultérieures de Windows.
icmpIdAndSequence
Identificateur et séquence ICMP.
Disponible uniquement dans Windows 7 et versions ultérieures de Windows.
localRedirectTargetPID
PID du processus responsable d’une connexion redirigée.
Disponible uniquement dans Windows 7 et versions ultérieures de Windows.
originalDestination
Destination d’origine d’une connexion redirigée.
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.
Disponible uniquement dans Windows 8 et versions 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.
Disponible uniquement dans Windows 8 et versions 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 de fonctionnement 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.
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 NL, chacune d’elles étant destinée à une machine virtuelle différente, et la première NBL de cette distribution a déjà été indiquée à votre pilote de légende. La première NBL du groupe distribué n’aura pas cet indicateur défini. Tous les NNB suivants pour le groupe auront cet indicateur défini. À des fins d’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 FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF. 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.
Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
wiFiOperationMode
Mode de fonctionnement 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.
Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
vSwitchPacketContext
Handle du contexte de paquet de commutateur virtuel.
Disponible uniquement dans Windows 8 et versions ultérieures de Windows.
subProcessTag
Réservé.
reserved1
Réservé.
Remarques
Le moteur de filtre transmet un pointeur vers une structure de 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 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 supposer une direction de paquet de FWP_DIRECTION_INBOUND.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | fwpsu.h |