FWPS_INCOMING_METADATA_VALUES0-Struktur (fwpsk.h)
Die FWPS_INCOMING_METADATA_VALUES0-Struktur definiert Metadatenwerte, die die Filter-Engine an die Beschriftungsfunktion klassifizierenFn einer Legende übergibt.
Syntax
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;
Member
currentMetadataValues
Ein UINT32-Wert, der ein bitweises OR einer Kombination von Metadatenfeldbezeichnern enthält, die angeben, welche Metadatenwerte in der Struktur festgelegt werden.
flags
Wird intern von der Filter-Engine verwendet. Legendentreiber sollten dieses Element ignorieren.
reserved
Ist für das System reserviert. Legendentreiber sollten dieses Element ignorieren.
discardMetadata
Eine FWPS_DISCARD_METADATA0 Struktur, die den Grund beschreibt, warum die Daten verworfen wurden. Dieses Element enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_DISCARD_REASON im currentMetadataValues-Element festgelegt ist.
flowHandle
Ein Handle für den Datenfluss. Dieser Member enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_FLOW_HANDLE im currentMetadataValues-Element festgelegt ist.
ipHeaderSize
Der Offset des IP-Headers in Byte.
Bei eingehenden Pfaden gibt ipHeaderSize bei Verwendung mit dem transportHeaderSize-Member die Anzahl der Bytes an, die vom Speicherort des Datenoffsets an den Anfang des IP-Headers zurückgesetzt werden sollen.
Auf den folgenden eingehenden ICMP-Fehlerebenen gibt ipHeaderSize allein die Gesamtzahl der Bytes an, die vom Datenoffset an den Anfang des IP-Headers zurückgesetzt werden sollen:
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
Wenn ipHeaderSize auf ausgehenden Pfaden größer als 0 (null) ist, wird die Anzahl der Bytes angegeben, die vom Speicherort des Datenoffsets bis zum Ende des IP-Headers voranzuschreiten sind.
Dieser Member gilt nicht für den ausgehenden Pfad auf den folgenden Ebenen:
FWPS_LAYER_DATAGRAM_DATA_V4
FWPS_LAYER_DATAGRAM_DATA_V6
FWPS_LAYER_DATAGRAM_DATA_V4_DISCARD
FWPS_LAYER_DATAGRAM_DATA_V6_DISCARD
Dieser Member enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_IP_HEADER_SIZE-Flag im currentMetadataValues-Element festgelegt ist.
transportHeaderSize
Der Offset oder die Größe des Transportheaders in Bytes.
Bei eingehenden Pfaden gibt transportHeaderSize die Anzahl der Bytes an, die vom Speicherort des Datenoffsets bis zum Ende des Transportheaders zurückgesetzt werden sollen.
Auf den folgenden eingehenden ICMP-Fehlerebenen gibt transportHeaderSize die Größe des ICMP-Headers an:
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
Auf ausgehenden Pfaden gibt transportHeaderSize die Anzahl der Bytes an, die vom Speicherort des Datenoffsets bis zum Ende des Transportheaders weitergeleitet werden sollen.
Dieser Member enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE im currentMetadataValues-Element festgelegt ist.
processPath
Ein Zeiger auf eine FWP_BYTE_BLOB-Struktur , die den vollständigen Pfad zu dem Prozess enthält, der den Endpunkt besitzt. Dieser Member enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_PROCESS_PATH im currentMetadataValues-Element festgelegt ist.
token
Ein Handle für das Token, das zum Überprüfen der Berechtigungen für den Benutzer verwendet wird. Dieser Member enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_TOKEN im currentMetadataValues-Element festgelegt ist.
processId
Die Prozess-ID für den Prozess, der besitzer des Endpunkts ist. Dieser Member enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_PROCESS_ID-Flag im currentMetadataValues-Element festgelegt ist.
sourceInterfaceIndex
Der Index der Netzwerkschnittstelle, an der ein eingehendes Paket empfangen wurde. Dieser Member enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_SOURCE_INTERFACE_INDEX-Flag im currentMetadataValues-Element festgelegt ist.
destinationInterfaceIndex
Der Index der Netzwerkschnittstelle, an die ein ausgehendes Paket gesendet werden soll. Dieser Member enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_DESTINATION_INTERFACE_INDEX im currentMetadataValues-Element festgelegt ist.
compartmentId
Der Bezeichner des Routingfachs, in dem das Paket entweder empfangen wurde oder gesendet wird. Alle geänderten Pakete sollten wieder in das gleiche Routingfach eingefügt werden, das für das ursprüngliche Paket angegeben ist. Dieser Member enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_COMPARTMENT_ID im currentMetadataValues-Element festgelegt ist.
fragmentMetadata
Eine FWPS_INBOUND_FRAGMENT_METADATA0 Struktur, die die Fragmentdaten für ein empfangenes Paketfragment beschreibt. Dieser Member enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_FRAGMENT_DATA-Flag im currentMetadataValues-Element festgelegt ist.
pathMtu
Die maximale Übertragungseinheit des Pfads (Pfad-MTU) für ein ausgehendes Paket. Dieser Wert gibt die größte physische Paketgröße in Bytes an, die ein Netzwerk ohne Fragmentierung übertragen kann. Dieser Member enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_PATH_MTU im currentMetadataValues-Element festgelegt ist.
completionHandle
Ein Vervollständigungshandle, das zum Stiften des aktuellen Filtervorgangs erforderlich ist. Dieser Member enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_COMPLETION_HANDLE im currentMetadataValues-Element festgelegt ist.
transportEndpointHandle
Ein Endpunkthandle, das das Ende des Pakets angibt, das in die ausgehende Transportschicht eingefügt werden soll. Dieser Member enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE im currentMetadataValues-Element festgelegt ist.
remoteScopeId
Der Remotebereichsbezeichner, der für die Einschleusung ausgehender Transportebenen verwendet werden soll. Dieser Member enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_REMOTE_SCOPE_ID im currentMetadataValues-Element festgelegt ist.
controlData
Ein optionales Socketsteuerelement-Datenobjekt. Dieser Member enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA im currentMetadataValues-Element festgelegt ist. Informationen zum WSACMSGHDR-Typ finden Sie unter CMSGHDR.
controlDataLength
Die Länge des controlData-Elements in Bytes.
packetDirection
Die Richtung des Netzwerkdatenverkehrs (eingehender oder ausgehender Datenverkehr), wie durch einen der konstanten Werte von angegeben
FWP_DIRECTION. Dieser Member wird während eines Klassifizierungsvorgangs für die erneute Autorisierung auf die Verbindungs- oder Empfangs-/Annahmeebene (Application Layer Enforcement, ALE) festgelegt. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.
headerIncludeHeader
Ein Zeiger auf den IP-Header, wenn das Paket von einem unformatierten Socket gesendet wird.
headerIncludeHeaderLength
Die Länge des IP-Headers in Bytes, auf den headerIncludeHeader verweist.
destinationPrefix
Das Zielpräfix.
frameLength
Die Framelänge.
parentEndpointHandle
Das Handle des übergeordneten Endpunkts.
icmpIdAndSequence
Der ICMP-Bezeichner und die Sequenz.
localRedirectTargetPID
Die PID des Prozesses, der für eine umgeleitete Verbindung verantwortlich ist.
originalDestination
Das ursprüngliche Ziel einer umgeleiteten Verbindung.
redirectRecords
Ein Umleitungsdatensatzhandle, das an die FwpsQueryConnectionRedirectState0-Funktion übergeben werden kann, um den Umleitungszustand abzurufen.
currentL2MetadataValues
Eine Bitmaske, die Flags enthält, die angeben, welche Layer-2-Werte festgelegt werden. Ein oder mehrere Werte können mit einem bitweisen OR kombiniert werden.
l2Flags
Eine Bitmaske, die Ebenen-2-Flags enthält, die mit einem bitweisen OR kombiniert werden können.
ethernetMacHeaderSize
Die Größe des MAC-Headers in Bytes, wenn das flag FWPS_L2_METADATA_FIELD_802_3_MAC_HEADER_SIZE festgelegt ist. Dieses Flag ist nur für die eingehende 802.3-Ebene festgelegt.
wiFiOperationMode
Der aktuelle Native 802.11-Betriebsmodus, wenn das flag FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE festgelegt ist. Weitere Informationen finden Sie unter DOT11_CURRENT_OPERATION_MODE.
vSwitchSourcePortId
Ein eindeutiger Bezeichner für den Quellport auf dem virtuellen Switch.
vSwitchSourceNicIndex
Ein Index für die Quell-NIC auf dem virtuellen Switch.
vSwitchDestinationPortId
Ein eindeutiger Bezeichner für den Zielport auf dem virtuellen Switch.
padding0
Reserviert.
padding1
Reserviert.
padding2
Reserviert.
vSwitchPacketContext
Ein Handle für den Paketkontext des virtuellen Switches.
subProcessTag
Reserviert.
reserved1
Hinweise
Die Filter-Engine übergibt einen Zeiger auf eine FWPS_INCOMING_METADATA_VALUES0-Struktur an die Legendenfunktion klassifizierenFn . Die in der Struktur enthaltenen Metadatenwerte werden nicht von der Filter-Engine verarbeitet, sondern für die Calloutfunktion klassifizierenFn einer Legende bereitgestellt, um zusätzliche Informationen bereitzustellen.
Ein Legendentreiber kann das folgende Makro verwenden, um zu testen, ob ein bestimmter Metadatenwert in einer FWPS_INCOMING_METADATA_VALUES0-Struktur vorhanden ist:
FWPS_IS_METADATA_FIELD_PRESENT(metadataValues, metadataField)
Wenn der FWPS_METADATA_FIELD_PACKET_DIRECTION Metadatenwert in einer FWPS_INCOMING_METADATA_VALUES0-Struktur vorhanden ist, gibt das packetDirection-Element an, ob das Paket während eines Vorgangs zur Klassifizierung der erneuten Autorisierung eingehender oder ausgehender Daten war. Andernfalls ist der FWPS_METADATA_FIELD_PACKET_DIRECTION Metadatenwert nicht vorhanden.
Der Legendentreiber muss die folgenden Richtlinien befolgen, wenn er das Paket überprüft:
- Bei der ALE-Verbindungs- oder Empfangs-/Annahmeebene sollte der Legendentreiber nicht davon ausgehen, dass das Paket einen gültigen IP-Header enthält, wenn packetDirection auf FWP_DIRECTION_OUTBOUND festgelegt ist und der FWPS_METADATA_FIELD_PACKET_DIRECTION Metadatenwert vorhanden ist.
- Wenn auf der ALE-Verbindungsschicht der FWPS_METADATA_FIELD_PACKET_DIRECTION Metadatenwert nicht vorhanden ist, sollte der Legendentreiber eine Paketrichtung von FWP_DIRECTION_OUTBOUND annehmen.
- Wenn auf der ALE-Empfangs-/Annahmeebene der FWPS_METADATA_FIELD_PACKET_DIRECTION Metadatenwert nicht vorhanden ist, sollte der Legendentreiber von einer Paketrichtung FWP_DIRECTION_INBOUND ausgehen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar ab Windows Vista. |
Kopfzeile | fwpsk.h (include fwpsk.h) |
Weitere Informationen
FWPS_INBOUND_FRAGMENT_METADATA0Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für