Freigeben über


FWPS_INCOMING_METADATA_VALUES0 Struktur (fwpsk.h)

Die FWPS_INCOMING_METADATA_VALUES0 Struktur definiert Metadatenwerte, die das Filtermodul an die klassifizierenFn Legendenfunktion eines Popups übergibt.

Anmerkung

FWPS_INCOMING_METADATA_VALUES0 ist eine bestimmte Version von FWPS_INCOMING_METADATA_VALUES. Weitere Informationen finden Sie unter WFP-Version-Independent Namen und zielspezifische Versionen von Windows.

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;

Angehörige

currentMetadataValues

Ein UINT32-Wert, der ein bitweises ODER eine Kombination aus Metadatenfeldbezeichnern enthält,, die angeben, welche Metadatenwerte in der Struktur festgelegt werden.

flags

Wird intern vom Filtermodul verwendet. Legendentreiber sollten dieses Element ignorieren.

reserved

Reserviert für die Systemverwendung. 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 FWPS_METADATA_FIELD_DISCARD_REASON Flag im currentMetadataValues Member festgelegt ist.

flowHandle

Ein Handle für den Datenfluss. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_FLOW_HANDLE Flag im currentMetadataValues-Element festgelegt ist.

ipHeaderSize

Der Offset (in Byte) des IP-Headers.

Bei eingehenden Pfaden gibt ipHeaderSize, wenn sie in Verbindung mit dem transportHeaderSize Member verwendet wird, die Anzahl der Bytes an, die vom Datenoffsetspeicherort bis zum Anfang des IP-Headers zurückgezogen werden sollen.

In den folgenden eingehenden ICMP-Fehlerebenen gibt ipHeaderSize allein die Gesamtanzahl der Bytes an, die vom Datenoffset bis zum 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

Bei ausgehenden Pfaden, wenn ipHeaderSize größer als Null ist, gibt sie die Anzahl der Bytes an, die vom Datenoffsetspeicherort bis zum Ende des IP-Headers voranschreiten sollen.

Dieses Element 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

Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_IP_HEADER_SIZE Flag im currentMetadataValues Member 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 Datenoffset bis zum Ende des Transportheaders zurückgesetzt werden sollen.

In 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

Bei ausgehenden Pfaden gibt transportHeaderSize die Anzahl der Bytes an, die vom Datenoffsetspeicherort bis zum Ende des Transportheaders voranschreiten sollen.

Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE Flag im currentMetadataValues Member 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. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_PROCESS_PATH Flag im currentMetadataValues Member festgelegt ist.

token

Ein Handle für das Token, das zum Überprüfen der Berechtigungen für den Benutzer verwendet wird. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_TOKEN Flag im currentMetadataValues-Element festgelegt ist.

processId

Die Prozess-ID für den Prozess, der den Endpunkt besitzt. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_PROCESS_ID Flag im currentMetadataValues Member festgelegt ist.

sourceInterfaceIndex

Der Index der Netzwerkschnittstelle, an der ein eingehendes Paket empfangen wurde. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_SOURCE_INTERFACE_INDEX Flag im currentMetadataValues Member festgelegt ist.

destinationInterfaceIndex

Der Index der Netzwerkschnittstelle, an die ein ausgehendes Paket gesendet werden soll. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_DESTINATION_INTERFACE_INDEX Flag im currentMetadataValues Member festgelegt ist.

compartmentId

Der Bezeichner des Routingfachs, in dem das Paket empfangen 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. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_COMPARTMENT_ID Flag im currentMetadataValues Member festgelegt ist.

fragmentMetadata

Eine FWPS_INBOUND_FRAGMENT_METADATA0 Struktur, die die Fragmentdaten für ein empfangenes Paketfragment beschreibt. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_FRAGMENT_DATA Flag im currentMetadataValues Member festgelegt ist.

pathMtu

Die maximale Pfadübertragungseinheit (Path 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, dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_PATH_MTU Flag im currentMetadataValues Member festgelegt ist.

completionHandle

Ein Abschlusshandle, das zum Stiften des aktuellen Filtervorgangs erforderlich ist. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_COMPLETION_HANDLE Flag im currentMetadataValues Member festgelegt ist.

transportEndpointHandle

Ein Endpunkthandle, das das Ende des Pakets angibt, das in die ausgehende Transportebene eingefügt werden soll. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE Flag im currentMetadataValues Member festgelegt ist.

remoteScopeId

Der Remotebereichsbezeichner, der bei der Einfügung ausgehender Transportebene verwendet werden soll. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_REMOTE_SCOPE_ID Flag im currentMetadataValues Member festgelegt ist.

controlData

Ein optionales Socketsteuerelement-Datenobjekt. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA Flag im currentMetadataValues Member festgelegt ist. Informationen zum WSACMSGHDR-Typ finden Sie unter CMSGHDR-.

controlDataLength

Die Länge des controlData- Mitglieds in Bytes.

packetDirection

Die Richtung des Netzwerkdatenverkehrs (eingehend oder ausgehend), wie durch einen der konstanten Werte von FWP_DIRECTIONangegeben. Dieser Member wird bei der ALE-Verbindung (Application Layer Enforcement) oder empfangen/akzeptieren Layer während einer erneuten Autorisierungsklassifizierungsoperation festgelegt. Weitere Informationen finden Sie im Abschnitt "Hinweise".

Anmerkung

Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_PACKET_DIRECTION Flag im currentMetadataValues Member festgelegt ist.

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 headerIncludeHeaderverweist.

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 Umleitungs-Datensatzhandle, 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. Mindestens ein Wert kann mit einem bitweisen OR kombiniert werden.

Wert Bedeutung
FWPS_L2_METADATA_FIELD_ETHERNET_MAC_HEADER_SIZE Der Wert des ethernetMacHeaderSize Member gibt die Größe des MAC-Headers an.
FWPS_L2_METADATA_FIELD_WIFI_OPERATION_MODE Der Wert des wiFiOperationMode Member gibt den aktuellen nativen 802.11-Vorgangsmodus an.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_PORT_ID Der Wert der vSwitchSourcePortId Member gibt den Bezeichner für den Quellport auf dem virtuellen Switch an.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_NIC_INDEX Der Wert des vSwitchSourceNicIndex Member gibt den Index für die Quell-NIC auf dem virtuellen Switch an.
FWPS_L2_METADATA_FIELD_VSWITCH_PACKET_CONTEXT Der Wert des vSwitchPacketContext Member gibt ein HANDLE für den Kontext des virtuellen Switchpakets an.
FWPS_L2_METADATA_FIELD_VSWITCH_DESTINATION_PORT_ID Der Wert der vSwitchDestinationPortId Member gibt den Bezeichner für den Zielport auf dem virtuellen Switch an.

l2Flags

Eine Bitmaske mit Layer 2-Flags, die mit einem bitweisen OR kombiniert werden können.

Wert Bedeutung
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV4_FRAMING Gibt eine unformatierte IP4-Umrahmung an.
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV6_FRAMING Gibt eine rohe IP6-Umrahmung an.
FWPS_L2_INCOMING_FLAG_RECLASSIFY_MULTI_DESTINATION Dieses Kennzeichen gibt an, dass eine NBL, die einmal beim Ingress angezeigt wurde, in mehrere NBLs verteilt wurde, die jeweils an einen anderen virtuellen Computer bestimmt sind, und die erste NBL dieser Verteilung wurde bereits für Ihren Popuptreiber angegeben.

Die erste NBL der verteilten Gruppe hat dieses Flag nicht festgelegt. Alle nachfolgenden NBLs für die Gruppe haben dieses Kennzeichen festgelegt.

Zum Einfügen sollte Ihr Popuptreiber die NBL klonen, das ursprüngliche Paket blockieren und absorbieren und das FWPS_RIGHT_ACTION_WRITE Kennzeichen 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 Indikationen sollten Sie das ursprüngliche Paket blockieren und absorbieren und das FWPS_RIGHT_ACTION_WRITE Flag für den Klon löschen. Wenn der injizierte Klon aus dem Ausgang kommt, wird er dann erneut verteilt, und alle Indikationen haben einen Injektionszustand von FWPS_PACKET_INJECTED_BY_SELF oder FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.

ethernetMacHeaderSize

Die Größe des MAC-Headers in Bytes, wenn das FWPS_L2_METADATA_FIELD_802_3_MAC_HEADER_SIZE Flag festgelegt ist. Dieses Kennzeichen wird nur für die eingehende 802.3-Ebene festgelegt.

wiFiOperationMode

Der aktuelle Native 802.11-Vorgangsmodus, wenn das FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE Flag 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 Kontext des virtuellen Switchpakets.

subProcessTag

Reserviert.

reserved1

Reserviert.

Bemerkungen

Das Filtermodul übergibt einen Zeiger an eine FWPS_INCOMING_METADATA_VALUES0 Struktur an die klassifizierenFn Legendenfunktion einer Legende. Die in der Struktur enthaltenen Metadatenwerte werden nicht vom Filtermodul verarbeitet, sondern an die klassifizierenFn Popupfunktion bereitgestellt, um zusätzliche Informationen bereitzustellen.

Ein Popuptreiber 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 Member an, ob das Paket während eines Erneutautorisierungsklassifizierungsvorgangs eingehend oder ausgehend wurde. Andernfalls ist der FWPS_METADATA_FIELD_PACKET_DIRECTION Metadatenwert nicht vorhanden.

Der Popuptreiber muss die folgenden Richtlinien befolgen, wenn es das Paket überprüft:

  • Bei den ALE-Verbindungs- oder Empfangsebenen sollte der Popuptreiber 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 der FWPS_METADATA_FIELD_PACKET_DIRECTION Metadatenwert nicht vorhanden ist, sollte der Legendentreiber auf der ALE-Verbindungsebene eine Paketrichtung von FWP_DIRECTION_OUTBOUND annehmen.
  • Wenn der FWPS_METADATA_FIELD_PACKET_DIRECTION-Metadatenwert nicht vorhanden ist, sollte der Popuptreiber auf der ALE-Empfangs-/Annahmeebene eine Paketrichtung von FWP_DIRECTION_INBOUND annehmen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows Vista.
Header- fwpsk.h (include Fwpsk.h)

Siehe auch