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