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.

Beachten SieFWPS_INCOMING_METADATA_VALUES0 eine bestimmte Version von FWPS_INCOMING_METADATA_VALUES ist. Weitere Informationen finden Sie unter WFP-Version-Independent Namen und Spezifische Windows-Versionen .
 

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.

Hinweis Dieser Member enthält nur gültige Daten, wenn das flag FWPS_METADATA_FIELD_PACKET_DIRECTION im currentMetadataValues-Element festgelegt ist.
 

headerIncludeHeader

Ein Zeiger auf den IP-Header, wenn das Paket von einem unformatierten Socket gesendet wird.

Hinweis Nur verfügbar in Windows Server 2008, Windows Vista SP1 und höheren Versionen von Windows.
 

headerIncludeHeaderLength

Die Länge des IP-Headers in Bytes, auf den headerIncludeHeader verweist.

Hinweis Nur verfügbar in Windows Server 2008, Windows Vista SP1 und höheren Versionen von Windows.
 

destinationPrefix

Das Zielpräfix.

Hinweis Nur in Windows 7 und höheren Versionen von Windows verfügbar.
 

frameLength

Die Framelänge.

Hinweis Nur in Windows 7 und höheren Versionen von Windows verfügbar.
 

parentEndpointHandle

Das Handle des übergeordneten Endpunkts.

Hinweis Nur in Windows 7 und höheren Versionen von Windows verfügbar.
 

icmpIdAndSequence

Der ICMP-Bezeichner und die Sequenz.

Hinweis Nur in Windows 7 und höheren Versionen von Windows verfügbar.
 

localRedirectTargetPID

Die PID des Prozesses, der für eine umgeleitete Verbindung verantwortlich ist.

Hinweis Nur in Windows 7 und höheren Versionen von Windows verfügbar.
 

originalDestination

Das ursprüngliche Ziel einer umgeleiteten Verbindung.

Hinweis Nur in Windows 7 und höheren Versionen von Windows verfügbar.
 

redirectRecords

Ein Umleitungsdatensatzhandle, das an die FwpsQueryConnectionRedirectState0-Funktion übergeben werden kann, um den Umleitungszustand abzurufen.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 

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.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 
Wert Bedeutung
FWPS_L2_METADATA_FIELD_ETHERNET_MAC_HEADER_SIZE
Der Wert des ethernetMacHeaderSize-Elements gibt die Größe des MAC-Headers an.
FWPS_L2_METADATA_FIELD_WIFI_OPERATION_MODE
Der Wert des wiFiOperationMode-Members gibt den aktuellen Native 802.11-Betriebsmodus an.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_PORT_ID
Der Wert des vSwitchSourcePortId-Members gibt den Bezeichner für den Quellport auf dem virtuellen Switch an.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_NIC_INDEX
Der Wert des vSwitchSourceNicIndex-Members gibt den Index für die Quell-NIC auf dem virtuellen Switch an.
FWPS_L2_METADATA_FIELD_VSWITCH_PACKET_CONTEXT
Der Wert des vSwitchPacketContext-Members gibt einen HANDLE-Wert für den Paketkontext des virtuellen Switches an.
FWPS_L2_METADATA_FIELD_VSWITCH_DESTINATION_PORT_ID
Der Wert des vSwitchDestinationPortId-Members gibt den Bezeichner für den Zielport auf dem virtuellen Switch an.

l2Flags

Eine Bitmaske, die Ebenen-2-Flags enthält, die mit einem bitweisen OR kombiniert werden können.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 
Wert Bedeutung
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV4_FRAMING
Gibt unformatierte IP4-Framing an.
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV6_FRAMING
Gibt unformatierte IP6-Framing an.
FWPS_L2_INCOMING_FLAG_RECLASSIFY_MULTI_DESTINATION
Dieses Flag gibt an, dass eine NBL, die einmal beim Eingang gesehen wurde, in mehrere NBLs verteilt wurde, von denen jede für einen anderen virtuellen Computer bestimmt ist, und dass die erste NBL dieser Verteilung bereits ihrem Callouttreiber angezeigt wurde.

Für die erste NBL der verteilten Gruppe ist dieses Flag nicht festgelegt. Für alle nachfolgenden NBLs für die Gruppe ist dieses Flag festgelegt.

Für die Einschleusung sollte Ihr Legendentreiber die NBL klonen, das ursprüngliche Paket blockieren und absorbieren und das FWPS_RIGHT_ACTION_WRITE-Flag für die erste Indikation löschen. Ändern Sie dann den Klon, und fügen Sie ihn in den Eingangspfad ein.

Für alle nachfolgenden Hinweise sollten Sie das ursprüngliche Paket blockieren und absorbieren und das FWPS_RIGHT_ACTION_WRITE Flag für den Klon deaktivieren. Wenn der injizierte Klon aus dem Eingang kommt, wird er erneut verteilt, und alle Hinweise weisen einen Injektionszustand von FWPS_PACKET_INJECTED_BY_SELF oder FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF auf.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 

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.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 

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.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 

vSwitchSourcePortId

Ein eindeutiger Bezeichner für den Quellport auf dem virtuellen Switch.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 

vSwitchSourceNicIndex

Ein Index für die Quell-NIC auf dem virtuellen Switch.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 

vSwitchDestinationPortId

Ein eindeutiger Bezeichner für den Zielport auf dem virtuellen Switch.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 

padding0

Reserviert.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 

padding1

Reserviert.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 

padding2

Reserviert.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 

vSwitchPacketContext

Ein Handle für den Paketkontext des virtuellen Switches.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 

subProcessTag

Reserviert.

Hinweis Nur in Windows 8 und höheren Versionen von Windows verfügbar.
 

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

CMSGHDR

FWPS_DISCARD_METADATA0

FWPS_INBOUND_FRAGMENT_METADATA0

FWP_BYTE_BLOB

FWP_DIRECTION

FwpsQueryConnectionRedirectState0

NET_BUFFER_LIST

klassifizierenFn