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 |