FWPS_INCOMING_METADATA_VALUES0-Struktur (fwpsu.h)
Definiert Metadatenwerte, die die Filter-Engine an die Calloutfunktion klassifizierenFn übergibt.
Hinweis
FWPS_INCOMING_METADATA_VALUES0 ist eine bestimmte Version von FWPS_INCOMING_METADATA_VALUES. Weitere Informationen finden Sie unter Versionsunabhängige WFP-Namen und für bestimmte 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;
HANDLE vSwitchPacketContext;
PVOID subProcessTag;
UINT64 reserved1;
} FWPS_INCOMING_METADATA_VALUES0;
Member
currentMetadataValues
Ein UINT32-Wert , der einen bitweisen 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 diesen Member ignorieren.
reserved
Ist für das System reserviert. Legendentreiber sollten diesen Member 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-Element 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 des IP-Headers in Bytes.
Bei eingehenden Pfaden gibt ipHeaderSize bei Verwendung in Verbindung mit dem transportHeaderSize-Member die Anzahl der Bytes an, die vom Speicherort des Datenoffsets an den Anfang des IP-Headers zurückgezogen werden sollen.
Auf den folgenden ICMP-Fehlerebenen für eingehenden Datenverkehr 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 bei ausgehenden Pfaden größer als 0 ist, gibt es die Anzahl der Bytes an, die vom Speicherort des Datenoffsets an das Ende des IP-Headers weitergeleitet werden sollen.
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
Dieses Element 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 an das Ende des Transportheaders zurückzuziehen werden sollen.
Auf den folgenden ICMP-Fehlerebenen für eingehenden Datenverkehr 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 Speicherort des Datenoffsets bis zum Ende des Transportheaders verschoben werden sollen.
Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE-Flag 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. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_PROCESS_PATH-Flag 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 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-Element 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-Element 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-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 dasselbe 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-Element 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-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 FWPS_METADATA_FIELD_PATH_MTU-Flag im currentMetadataValues-Member festgelegt ist.
completionHandle
Ein Vervollständigungshandle, das erforderlich ist, um den aktuellen Filtervorgang zu erstellen. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_COMPLETION_HANDLE-Flag im currentMetadataValues-Element festgelegt ist.
transportEndpointHandle
Ein Endpunkthandle, das das Ende des Pakets angibt, das in die ausgehende Transportschicht eingefügt werden soll. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE-Flag im currentMetadataValues-Element festgelegt ist.
remoteScopeId
Der Remotebereichsbezeichner, der für die Einschleusung ausgehender Transportebenen verwendet werden soll. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_REMOTE_SCOPE_ID-Flag im currentMetadataValues-Element festgelegt ist.
controlData
Ein optionales Socketsteuerelementdatenobjekt. Dieses Element enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA-Flag im currentMetadataValues-Element festgelegt ist. Informationen zum WSACMSGHDR-Typ finden Sie unter CMSGHDR.
controlDataLength
Die Länge des controlData-Members in Bytes.
packetDirection
Die Richtung des Netzwerkdatenverkehrs (eingehender oder ausgehender Datenverkehr), wie durch einen der konstanten Werte von FWP_DIRECTION angegeben. Dieses Element wird bei der ALE-Verbindung (Application Layer Erzwingung) oder beim Empfangen/Akzeptieren von Ebenen während eines Vorgangs zum Klassifizieren der erneuten Autorisierung festgelegt. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.
Dieser Member enthält nur gültige Daten, wenn das FWPS_METADATA_FIELD_PACKET_DIRECTION-Flag im currentMetadataValues-Element festgelegt ist.
headerIncludeHeader
Ein Zeiger auf den IP-Header, wenn das Paket von einem unformatierten Socket gesendet wird.
Nur in Windows Server 2008, Windows Vista SP1 und höheren Versionen von Windows verfügbar.
headerIncludeHeaderLength
Die Länge des IP-Headers in Bytes, auf den headerIncludeHeader verweist.
Nur in Windows Server 2008, Windows Vista SP1 und höheren Versionen von Windows verfügbar.
destinationPrefix
Das Zielpräfix.
Nur in Windows 7 und höheren Versionen von Windows verfügbar.
frameLength
Die Framelänge.
Nur in Windows 7 und höheren Versionen von Windows verfügbar.
parentEndpointHandle
Das Handle des übergeordneten Endpunkts.
Nur in Windows 7 und höheren Versionen von Windows verfügbar.
icmpIdAndSequence
Der ICMP-Bezeichner und die Sequenz.
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.
Nur in Windows 7 und höheren Versionen von Windows verfügbar.
originalDestination
Das ursprüngliche Ziel einer umgeleiteten Verbindung.
Nur in Windows 7 und höheren Versionen von Windows verfügbar.
redirectRecords
Ein Umleitungsdatensatzhandle, das an die Funktion FwpsQueryConnectionRedirectState0 übergeben werden kann, um den Umleitungszustand abzurufen.
Nur in Windows 8 und höheren Versionen von Windows verfügbar.
currentL2MetadataValues
Eine Bitmaske, die Flags enthält, die angeben, welche Ebenen-2-Werte festgelegt werden. Ein oder mehrere Werte können mit einem bitweisen OR kombiniert werden.
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-Members 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-Elements gibt den Index für die Quell-NIC auf dem virtuellen Switch an. |
FWPS_L2_METADATA_FIELD_VSWITCH_PACKET_CONTEXT | Der Wert des vSwitchPacketContext-Elements gibt ein HANDLE für den Paketkontext des virtuellen Switches an. |
FWPS_L2_METADATA_FIELD_VSWITCH_DESTINATION_PORT_ID | Der Wert des vSwitchDestinationPortId-Elements 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.
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-Rahmenstruktur an. |
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV6_FRAMING | Gibt eine unformatierte IP6-Rahmenstruktur an. |
FWPS_L2_INCOMING_FLAG_RECLASSIFY_MULTI_DESTINATION | Dieses Flag gibt an, dass eine NBL, die einmal beim Eingang angezeigt wurde, in mehrere NBLs verteilt wurde, von denen jede für eine andere VM 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 Callout-Treiber die NBL klonen, das ursprüngliche Paket blockieren und absorbieren und das flag FWPS_RIGHT_ACTION_WRITE für die erste Anzeige 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 den Injektionszustand FWPS_PACKET_INJECTED_BY_SELF oder FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF auf. 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 Ebene 802.3 festgelegt.
Nur in Windows 8 und höheren Versionen von Windows verfügbar.
wiFiOperationMode
Der aktuelle native 802.11-Vorgangsmodus, wenn das flag FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE festgelegt ist. Weitere Informationen finden Sie unter DOT11_CURRENT_OPERATION_MODE.
Nur in Windows 8 und höheren Versionen von Windows verfügbar.
vSwitchPacketContext
Ein Handle für den Paketkontext des virtuellen Switches.
Nur in Windows 8 und höheren Versionen von Windows verfügbar.
subProcessTag
Reserviert.
reserved1
Reserviert.
Hinweise
Die Filter-Engine übergibt einen Zeiger auf eine FWPS_INCOMING_METADATA_VALUES0-Struktur an die Legendenfunktion klassifizierenFn einer Legende. Die in der -Struktur enthaltenen Metadatenwerte werden nicht von der Filter-Engine verarbeitet, sondern für die Beschriftungsfunktion 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 einer erneuten Autorisierungsklassifizierung ein- oder ausgehend wurde. Andernfalls ist der Metadatenwert FWPS_METADATA_FIELD_PACKET_DIRECTION nicht vorhanden.
Der Legendentreiber muss diese Richtlinien befolgen, wenn er das Paket überprüft:
- Auf den ALE-Verbindungs- oder Empfangs-/Annahmeebenen 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 eine Paketrichtung von FWP_DIRECTION_INBOUND annehmen.
Anforderungen
Anforderung | Wert |
---|---|
Header | fwpsu.h |