Compartir a través de


estructura FWPS_INCOMING_METADATA_VALUES0 (fwpsk.h)

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

Nota

FWPS_INCOMING_METADATA_VALUES0 es una versión específica de FWPS_INCOMING_METADATA_VALUES. Consulta nombres Version-Independent DEL PMA y destinatarios de versiones específicas de Windows para obtener más información.

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 solo contiene datos válidos si la marca FWPS_METADATA_FIELD_DISCARD_REASON está establecida en el miembro currentMetadataValues.

flowHandle

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

ipHeaderSize

Desplazamiento, en bytes, del encabezado IP.

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

En las siguientes capas de error ICMP entrantes, 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 salientes, 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 solo contiene datos válidos 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 entrantes, transportHeaderSize especifica el número de bytes que se van a retirar de la ubicación de desplazamiento de datos al final del encabezado de transporte.

En las siguientes capas de error ICMP entrantes, 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 salientes, transportHeaderSize especifica el número de bytes para avanzar desde la ubicación de desplazamiento de datos hasta el final del encabezado de transporte.

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

processPath

Puntero a una estructura 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 de 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 contiene datos válidos solo si la marca de 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 solo contiene datos válidos si la marca de 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 solo contiene datos válidos si la marca de FWPS_METADATA_FIELD_DESTINATION_INTERFACE_INDEX está establecida en el miembro currentMetadataValues de .

compartmentId

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

fragmentMetadata

Estructura FWPS_INBOUND_FRAGMENT_METADATA0 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 tamaño de paquete físico más grande, 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 pendir 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 saliente. Este miembro solo contiene datos válidos 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 solo contiene datos válidos 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 solo contiene datos válidos 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

La dirección del tráfico de red (entrante o saliente) especificada 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 solo contiene datos válidos 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 procesar.

headerIncludeHeaderLength

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

destinationPrefix

Prefijo de destino.

frameLength

Longitud del marco.

parentEndpointHandle

Identificador del elemento primario del punto de conexión.

icmpIdAndSequence

Identificador y secuencia icMP.

localRedirectTargetPID

PID del proceso responsable de una conexión redirigida.

originalDestination

Destino original de una conexión redirigida.

redirectRecords

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

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.

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.

Valor Significado
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV4_FRAMING Indica el marco IP4 sin formato.
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV6_FRAMING Indica el marco 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 varios NBL, cada uno de los cuales está destinado a una máquina virtual diferente y el primer NBL de esta distribución ya se ha indicado al controlador de llamada.

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

Para insertar, el controlador de llamada debe clonar el NBL, bloquear y absorber el paquete original y borrar la marca de 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 de FWPS_RIGHT_ACTION_WRITE para el clon. Cuando el clon insertado salga 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.

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 entrante 802.3.

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, vea DOT11_CURRENT_OPERATION_MODE.

vSwitchSourcePortId

Identificador único del puerto de origen en el conmutador virtual.

vSwitchSourceNicIndex

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

vSwitchDestinationPortId

Identificador único del puerto de destino en el conmutador virtual.

padding0

Reservado.

padding1

Reservado.

padding2

Reservado.

vSwitchPacketContext

Identificador del contexto del paquete del conmutador virtual.

subProcessTag

Reservado.

reserved1

Reservado.

Observaciones

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

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

FWPS_IS_METADATA_FIELD_PRESENT(metadataValues, metadataField)

Si el valor de metadatos FWPS_METADATA_FIELD_PACKET_DIRECTION está presente en una estructura de FWPS_INCOMING_METADATA_VALUES0, el packetDirection miembro especifica si el paquete estaba entrante o saliente durante una operación de clasificación de reauthorizació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 o 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 Valor
cliente mínimo admitido Disponible a partir de Windows Vista.
encabezado de fwpsk.h (incluya Fwpsk.h)

Consulte también