Compartir a través de


estructura FWPS_INCOMING_METADATA_VALUES0 (fwpsk.h)

La estructura FWPS_INCOMING_METADATA_VALUES0 define los valores de metadatos que pasa el motor de filtros a la función de llamada classifyFn de una llamada.

NotaFWPS_INCOMING_METADATA_VALUES0 es una versión específica de FWPS_INCOMING_METADATA_VALUES. Para obtener más información, consulte NOMBRES de PMA Version-Independent y versiones específicas de destino de Windows .
 

Sintaxis

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;

Miembros

currentMetadataValues

Valor UINT32 que contiene un OR bit a bit de una combinación de identificadores de campo de metadatos que especifican qué valores de metadatos se establecen en la estructura.

flags

Usado internamente por el motor de filtro. Los controladores de llamada deben omitir este miembro.

reserved

Reservado para uso del sistema. Los controladores de llamada deben omitir este miembro.

discardMetadata

Estructura FWPS_DISCARD_METADATA0 que describe el motivo por el que se descartaron los datos. Este miembro contiene datos válidos solo si la marca de FWPS_METADATA_FIELD_DISCARD_REASON está establecida en el miembro currentMetadataValues .

flowHandle

Identificador del flujo de datos. Este miembro contiene datos válidos solo si la marca de FWPS_METADATA_FIELD_FLOW_HANDLE está establecida en el miembro currentMetadataValues .

ipHeaderSize

Desplazamiento, en bytes, del encabezado IP.

En las rutas de acceso de entrada, ipHeaderSize, cuando se usa junto con el miembro transportHeaderSize , especifica el número de bytes que se retirarán de la ubicación de desplazamiento de datos al principio del encabezado IP.

En las siguientes capas de error icMP de entrada, ipHeaderSize especifica solo el número total de bytes que se van a retirar del desplazamiento de datos al principio del encabezado IP:

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

En las rutas de acceso de salida, si ipHeaderSize es mayor que cero, especifica el número de bytes para avanzar desde la ubicación de desplazamiento de datos hasta el final del encabezado IP.

Este miembro no es aplicable a la ruta de acceso de salida en las capas siguientes:

FWPS_LAYER_DATAGRAM_DATA_V4

FWPS_LAYER_DATAGRAM_DATA_V6

FWPS_LAYER_DATAGRAM_DATA_V4_DISCARD

FWPS_LAYER_DATAGRAM_DATA_V6_DISCARD

Este miembro contiene datos válidos solo si la marca FWPS_METADATA_FIELD_IP_HEADER_SIZE está establecida en el miembro currentMetadataValues .

transportHeaderSize

Desplazamiento o tamaño, en bytes, del encabezado de transporte.

En las rutas de acceso de entrada, transportHeaderSize especifica el número de bytes que se retirarán de la ubicación de desplazamiento de datos al final del encabezado de transporte.

En las siguientes capas de error de ICMP de entrada, transportHeaderSize especifica el tamaño del encabezado ICMP:

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

En las rutas de acceso de salida, transportHeaderSize especifica el número de bytes que se van a avanzar desde la ubicación de desplazamiento de datos hasta el final del encabezado de transporte.

Este miembro contiene datos válidos solo si la marca FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE está establecida en el miembro currentMetadataValues .

processPath

Puntero a una estructura de FWP_BYTE_BLOB que contiene la ruta de acceso completa al proceso que posee el punto de conexión. Este miembro contiene datos válidos solo si la marca FWPS_METADATA_FIELD_PROCESS_PATH está establecida en el miembro currentMetadataValues .

token

Identificador del token usado para validar los permisos del usuario. Este miembro solo contiene datos válidos si la marca FWPS_METADATA_FIELD_TOKEN está establecida en el miembro currentMetadataValues .

processId

Identificador de proceso del proceso que posee el punto de conexión. Este miembro solo contiene datos válidos si la marca FWPS_METADATA_FIELD_PROCESS_ID está establecida en el miembro currentMetadataValues .

sourceInterfaceIndex

Índice de la interfaz de red donde se recibió un paquete entrante. Este miembro contiene datos válidos solo si la marca FWPS_METADATA_FIELD_SOURCE_INTERFACE_INDEX está establecida en el miembro currentMetadataValues .

destinationInterfaceIndex

Índice de la interfaz de red donde se va a enviar un paquete saliente. Este miembro contiene datos válidos solo si la marca FWPS_METADATA_FIELD_DESTINATION_INTERFACE_INDEX está establecida en el miembro currentMetadataValues .

compartmentId

Identificador del compartimiento de enrutamiento en el que se recibió el paquete o se está enviando. Los paquetes modificados deben insertarse de nuevo en el mismo compartimiento de enrutamiento que se indica para el paquete original. Este miembro solo contiene datos válidos si la marca FWPS_METADATA_FIELD_COMPARTMENT_ID está establecida en el miembro currentMetadataValues .

fragmentMetadata

Una FWPS_INBOUND_FRAGMENT_METADATA0 estructura que describe los datos de fragmento de un fragmento de paquete recibido. Este miembro solo contiene datos válidos si la marca FWPS_METADATA_FIELD_FRAGMENT_DATA está establecida en el miembro currentMetadataValues .

pathMtu

Unidad de transmisión máxima de ruta de acceso (MTU de ruta de acceso) para un paquete saliente. Este valor indica el mayor tamaño de paquete físico, en bytes, que una red puede transmitir sin fragmentación. Este miembro contiene datos válidos solo si la marca FWPS_METADATA_FIELD_PATH_MTU está establecida en el miembro currentMetadataValues .

completionHandle

Identificador de finalización necesario para lápiz de la operación de filtrado actual. Este miembro solo contiene datos válidos si la marca FWPS_METADATA_FIELD_COMPLETION_HANDLE está establecida en el miembro currentMetadataValues .

transportEndpointHandle

Identificador de punto de conexión que indica el final del paquete que se va a insertar en la capa de transporte de salida. Este miembro contiene datos válidos solo si la marca FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE está establecida en el miembro currentMetadataValues .

remoteScopeId

Identificador de ámbito remoto que se va a usar en la inyección de capa de transporte saliente. Este miembro contiene datos válidos solo si la marca FWPS_METADATA_FIELD_REMOTE_SCOPE_ID está establecida en el miembro currentMetadataValues .

controlData

Objeto de datos de control de socket opcional. Este miembro contiene datos válidos solo si la marca FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA está establecida en el miembro currentMetadataValues . Para obtener información sobre el tipo WSACMSGHDR, consulte CMSGHDR.

controlDataLength

Longitud, en bytes, del miembro controlData .

packetDirection

Dirección del tráfico de red (entrante o saliente) según lo especificado por uno de los valores constantes de
FWP_DIRECTION. Este miembro se establece en la conexión o recepción o aceptación de capas de aplicación durante una operación de clasificación de reauthorización. Para obtener más información, vea la sección Comentarios.

Nota Este miembro contiene datos válidos solo si la marca FWPS_METADATA_FIELD_PACKET_DIRECTION está establecida en el miembro currentMetadataValues .
 

headerIncludeHeader

Puntero al encabezado IP si el paquete se envía desde un socket sin formato.

Nota Solo está disponible en Windows Server 2008, Windows Vista SP1 y versiones posteriores de Windows.
 

headerIncludeHeaderLength

Longitud, en bytes, del encabezado IP al que apunta headerIncludeHeader.

Nota Solo está disponible en Windows Server 2008, Windows Vista SP1 y versiones posteriores de Windows.
 

destinationPrefix

Prefijo de destino.

Nota Solo está disponible en Windows 7 y versiones posteriores de Windows.
 

frameLength

Longitud del marco.

Nota Solo está disponible en Windows 7 y versiones posteriores de Windows.
 

parentEndpointHandle

Identificador del elemento primario del punto de conexión.

Nota Solo está disponible en Windows 7 y versiones posteriores de Windows.
 

icmpIdAndSequence

Identificador y secuencia ICMP.

Nota Solo está disponible en Windows 7 y versiones posteriores de Windows.
 

localRedirectTargetPID

PID del proceso que es responsable de una conexión redirigida.

Nota Solo está disponible en Windows 7 y versiones posteriores de Windows.
 

originalDestination

Destino original de una conexión redirigida.

Nota Solo está disponible en Windows 7 y versiones posteriores de Windows.
 

redirectRecords

Identificador de registros de redireccionamiento que se puede pasar a la función FwpsQueryConnectionRedirectState0 para obtener el estado de redireccionamiento.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

currentL2MetadataValues

Máscara de bits que contiene marcas que especifican qué valores de nivel 2 se establecen. Uno o varios valores se pueden combinar con un OR bit a bit.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 
Valor Significado
FWPS_L2_METADATA_FIELD_ETHERNET_MAC_HEADER_SIZE
El valor del miembro ethernetMacHeaderSize indica el tamaño del encabezado MAC.
FWPS_L2_METADATA_FIELD_WIFI_OPERATION_MODE
El valor del miembro wiFiOperationMode indica el modo de operación Nativo 802.11 actual.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_PORT_ID
El valor del miembro vSwitchSourcePortId indica el identificador del puerto de origen en el conmutador virtual.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_NIC_INDEX
El valor del miembro vSwitchSourceNicIndex indica el índice de la NIC de origen en el conmutador virtual.
FWPS_L2_METADATA_FIELD_VSWITCH_PACKET_CONTEXT
El valor del miembro vSwitchPacketContext indica un IDENTIFICADOR para el contexto de paquete del conmutador virtual.
FWPS_L2_METADATA_FIELD_VSWITCH_DESTINATION_PORT_ID
El valor del miembro vSwitchDestinationPortId indica el identificador del puerto de destino en el conmutador virtual.

l2Flags

Máscara de bits que contiene marcas de capa 2 que se pueden combinar con un OR bit a bit.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 
Valor Significado
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV4_FRAMING
Indica tramas IP4 sin formato.
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV6_FRAMING
Indica tramas IP6 sin formato.
FWPS_L2_INCOMING_FLAG_RECLASSIFY_MULTI_DESTINATION
Esta marca indica que un NBL que se ha visto una vez en la entrada se ha distribuido en varias NCL, cada una de las cuales está destinada a una máquina virtual diferente y el primer NBL de esta distribución ya se ha indicado al controlador de globo.

El primer NBL del grupo distribuido no tendrá establecido esta marca. Todas las N NBL posteriores del grupo tendrán esta marca establecida.

Con el fin de insertar, el controlador de llamada debe clonar el NBL, bloquear y absorber el paquete original y borrar la marca FWPS_RIGHT_ACTION_WRITE para la primera indicación. A continuación, modifique el clon e inyecte en la ruta de acceso de entrada.

Para todas las indicaciones posteriores, debe bloquear y absorber el paquete original y borrar la marca FWPS_RIGHT_ACTION_WRITE para el clon. Cuando el clon insertado sale de la entrada, se redistribuirá de nuevo y todas las indicaciones tendrán un estado de inyección de FWPS_PACKET_INJECTED_BY_SELF o FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

ethernetMacHeaderSize

Tamaño, en bytes, del encabezado MAC si se establece la marca FWPS_L2_METADATA_FIELD_802_3_MAC_HEADER_SIZE. Esta marca se establece solo para la capa de entrada 802.3.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

wiFiOperationMode

El modo de operación native 802.11 actual si se establece la marca FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE. Para obtener más información, consulte DOT11_CURRENT_OPERATION_MODE.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

vSwitchSourcePortId

Un identificador único para el puerto de origen en el conmutador virtual.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

vSwitchSourceNicIndex

Índice de la NIC de origen en el conmutador virtual.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

vSwitchDestinationPortId

Un identificador único para el puerto de destino en el conmutador virtual.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

padding0

Reservado.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

padding1

Reservado.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

padding2

Reservado.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

vSwitchPacketContext

Identificador del contexto de paquete del conmutador virtual.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

subProcessTag

Reservado.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

reserved1

Reservado.

Nota Solo está disponible en Windows 8 y versiones posteriores de Windows.
 

Comentarios

El motor de filtros pasa un puntero a una estructura de FWPS_INCOMING_METADATA_VALUES0 a la función de llamada classifyFn de una llamada. El motor de filtros no procesa los valores de metadatos contenidos en la estructura, pero se proporcionan a la función de llamada classifyFn de una llamada para proporcionar información adicional.

Un controlador de llamada puede usar la siguiente macro para probar si un valor de metadatos específico está presente en una estructura de FWPS_INCOMING_METADATA_VALUES0:

FWPS_IS_METADATA_FIELD_PRESENT(metadataValues, metadataField)

Si el valor de metadatos de FWPS_METADATA_FIELD_PACKET_DIRECTION está presente en una estructura de FWPS_INCOMING_METADATA_VALUES0, el miembro packetDirection especifica si el paquete estaba entrante o saliente durante una operación de clasificación de reautorización. De lo contrario, el valor de metadatos FWPS_METADATA_FIELD_PACKET_DIRECTION no está presente.

El controlador de llamada debe seguir estas instrucciones cuando inspecciona el paquete:

  • En las capas de conexión o recepción/aceptación de ALE, el controlador de llamada no debe suponer que el paquete contiene un encabezado IP válido si packetDirection está establecido en FWP_DIRECTION_OUTBOUND y el valor de metadatos de FWPS_METADATA_FIELD_PACKET_DIRECTION está presente.
  • En la capa de conexión de ALE, si el valor de metadatos de FWPS_METADATA_FIELD_PACKET_DIRECTION no está presente, el controlador de llamada debe asumir una dirección de paquete de FWP_DIRECTION_OUTBOUND.
  • En la capa de recepción o aceptación de ALE, si el valor de metadatos de FWPS_METADATA_FIELD_PACKET_DIRECTION no está presente, el controlador de llamada debe asumir una dirección de paquete de FWP_DIRECTION_INBOUND.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows Vista.
Encabezado fwpsk.h (incluya Fwpsk.h)

Consulte también

CMSGHDR

FWPS_DISCARD_METADATA0

FWPS_INBOUND_FRAGMENT_METADATA0

FWP_BYTE_BLOB

FWP_DIRECTION

FwpsQueryConnectionRedirectState0

NET_BUFFER_LIST

classifyFn