Compartir a través de


estructura FWPS_INCOMING_METADATA_VALUES0 (fwpsu.h)

Define los valores de metadatos que el motor de filtro pasa a la función de llamada classifyFn de una llamada.

Nota

FWPS_INCOMING_METADATA_VALUES0 es una versión específica de FWPS_INCOMING_METADATA_VALUES. Para obtener más información, consulta Nombres independientes de la versión de PMA y versiones específicas 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;
  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 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 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 solo contiene datos válidos 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 contiene datos válidos solo 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 solo contiene datos válidos 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 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 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 contiene datos válidos solo si la marca de 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 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 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

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.

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

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.

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

destinationPrefix

Prefijo de destino.

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

frameLength

Longitud del marco.

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

parentEndpointHandle

Identificador del elemento primario del punto de conexión.

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

icmpIdAndSequence

Identificador y secuencia ICMP.

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

localRedirectTargetPID

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

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

originalDestination

Destino original de una conexión redirigida.

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.

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.

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

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.

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.

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.

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

vSwitchPacketContext

Identificador del contexto de paquete del conmutador virtual.

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

subProcessTag

Reservado.

reserved1

Reservado.

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 macro siguiente 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 de 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
Header fwpsu.h