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) |