Compartilhar via


estrutura FWPS_INCOMING_METADATA_VALUES0 (fwpsu.h)

Define valores de metadados que o mecanismo de filtro passa para a função de texto explicativo classifyFn de um texto explicativo.

Observação

FWPS_INCOMING_METADATA_VALUES0 é uma versão específica do FWPS_INCOMING_METADATA_VALUES. Para obter mais informações, consulte Nomes independentes de versão do WFP e direcionamento para versões específicas do Windows.

Sintaxe

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;

Membros

currentMetadataValues

Um valor UINT32 que contém um OR bit a bit de uma combinação de identificadores de campo de metadados que especificam quais valores de metadados são definidos na estrutura.

flags

Usado internamente pelo mecanismo de filtro. Os drivers de texto explicativo devem ignorar esse membro.

reserved

Reservado para uso do sistema. Os drivers de texto explicativo devem ignorar esse membro.

discardMetadata

Uma estrutura FWPS_DISCARD_METADATA0 que descreve o motivo pelo qual os dados foram descartados. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_DISCARD_REASON estiver definido no membro currentMetadataValues .

flowHandle

Um identificador para o fluxo de dados. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_FLOW_HANDLE estiver definido no membro currentMetadataValues .

ipHeaderSize

O deslocamento, em bytes, do cabeçalho IP.

Em caminhos de entrada, ipHeaderSize, quando usado em conjunto com o membro transportHeaderSize , especifica o número de bytes a serem retirados do local de deslocamento de dados para o início do cabeçalho IP.

Nas seguintes camadas de erro ICMP de entrada, ipHeaderSize sozinho especifica o número total de bytes a serem retirados do deslocamento de dados para o início do cabeçalho 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

Em caminhos de saída, se ipHeaderSize for maior que zero, ele especificará o número de bytes para avançar do local de deslocamento de dados para o final do cabeçalho IP.

Esse membro não é aplicável ao caminho de saída nas seguintes camadas:

FWPS_LAYER_DATAGRAM_DATA_V4

FWPS_LAYER_DATAGRAM_DATA_V6

FWPS_LAYER_DATAGRAM_DATA_V4_DISCARD

FWPS_LAYER_DATAGRAM_DATA_V6_DISCARD

Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_IP_HEADER_SIZE estiver definido no membro currentMetadataValues .

transportHeaderSize

O deslocamento ou tamanho, em bytes, do cabeçalho de transporte.

Em caminhos de entrada, transportHeaderSize especifica o número de bytes a serem retirados do local de deslocamento de dados para o final do cabeçalho de transporte.

Nas seguintes camadas de erro ICMP de entrada, transportHeaderSize especifica o tamanho do cabeçalho 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

Em caminhos de saída, transportHeaderSize especifica o número de bytes para avançar do local de deslocamento de dados para o final do cabeçalho de transporte.

Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE estiver definido no membro currentMetadataValues .

processPath

Um ponteiro para uma estrutura FWP_BYTE_BLOB que contém o caminho completo para o processo que possui o ponto de extremidade. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_PROCESS_PATH estiver definido no membro currentMetadataValues .

token

Um identificador para o token usado para validar as permissões para o usuário. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_TOKEN estiver definido no membro currentMetadataValues .

processId

A ID do processo que possui o ponto de extremidade. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_PROCESS_ID estiver definido no membro currentMetadataValues .

sourceInterfaceIndex

O índice do adaptador de rede em que um pacote de entrada foi recebido. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_SOURCE_INTERFACE_INDEX estiver definido no membro currentMetadataValues .

destinationInterfaceIndex

O índice do adaptador de rede para o qual um pacote de saída deve ser enviado. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_DESTINATION_INTERFACE_INDEX estiver definido no membro currentMetadataValues .

compartmentId

O identificador do compartimento de roteamento no qual o pacote foi recebido ou está sendo enviado. Todos os pacotes modificados devem ser injetados de volta no mesmo compartimento de roteamento indicado para o pacote original. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_COMPARTMENT_ID estiver definido no membro currentMetadataValues .

fragmentMetadata

Uma estrutura FWPS_INBOUND_FRAGMENT_METADATA0 que descreve os dados de fragmento de um fragmento de pacote recebido. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_FRAGMENT_DATA estiver definido no membro currentMetadataValues .

pathMtu

A MTU (unidade de transmissão máxima) do caminho para um pacote de saída. Esse valor indica o maior tamanho de pacote físico, em bytes, que uma rede pode transmitir sem fragmentação. Esse membro contém dados válidos somente se o sinalizador FWPS_METADATA_FIELD_PATH_MTU estiver definido no membro currentMetadataValues .

completionHandle

Um identificador de conclusão necessário para aguardar a operação de filtragem atual. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_COMPLETION_HANDLE estiver definido no membro currentMetadataValues .

transportEndpointHandle

Um identificador de ponto de extremidade que indica o final do pacote a ser injetado na camada de transporte de saída. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE estiver definido no membro currentMetadataValues .

remoteScopeId

O identificador de escopo remoto a ser usado na injeção de camada de transporte de saída. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_REMOTE_SCOPE_ID estiver definido no membro currentMetadataValues .

controlData

Um objeto de dados de controle de soquete opcional. Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA estiver definido no membro currentMetadataValues . Para obter informações sobre o tipo WSACMSGHDR , consulte CMSGHDR.

controlDataLength

O comprimento, em bytes, do membro controlData .

packetDirection

A direção do tráfego de rede (entrada ou saída), conforme especificado por um dos valores constantes de FWP_DIRECTION. Esse membro é definido na aplicação da camada de aplicativo (ALE) conectar ou receber/aceitar camadas durante uma operação de classificação de reautorização. Para obter mais informações, consulte a seção Comentários.

Esse membro conterá dados válidos somente se o sinalizador FWPS_METADATA_FIELD_PACKET_DIRECTION estiver definido no membro currentMetadataValues .

headerIncludeHeader

Um ponteiro para o cabeçalho IP se o pacote for enviado de um soquete bruto.

Disponível somente no Windows Server 2008, Windows Vista SP1 e versões posteriores do Windows.

headerIncludeHeaderLength

O comprimento, em bytes, do cabeçalho IP apontado por headerIncludeHeader.

Disponível somente no Windows Server 2008, Windows Vista SP1 e versões posteriores do Windows.

destinationPrefix

O prefixo de destino.

Disponível somente no Windows 7 e versões posteriores do Windows.

frameLength

O comprimento do quadro.

Disponível somente no Windows 7 e versões posteriores do Windows.

parentEndpointHandle

O identificador do pai do ponto de extremidade.

Disponível somente no Windows 7 e versões posteriores do Windows.

icmpIdAndSequence

O identificador e a sequência ICMP.

Disponível somente no Windows 7 e versões posteriores do Windows.

localRedirectTargetPID

O PID do processo responsável por uma conexão redirecionada.

Disponível somente no Windows 7 e versões posteriores do Windows.

originalDestination

O destino original de uma conexão redirecionada.

Disponível somente no Windows 7 e versões posteriores do Windows.

redirectRecords

Um identificador de registros de redirecionamento que pode ser passado para a função FwpsQueryConnectionRedirectState0 para obter o estado de redirecionamento.

Disponível somente no Windows 8 e versões posteriores do Windows.

currentL2MetadataValues

Uma máscara de bits que contém sinalizadores que especificam quais valores de camada 2 estão definidos. Um ou mais valores podem ser combinados com um OR bit a bit.

Disponível somente no Windows 8 e versões posteriores do Windows.

Valor Significado
FWPS_L2_METADATA_FIELD_ETHERNET_MAC_HEADER_SIZE O valor do membro ethernetMacHeaderSize indica o tamanho do cabeçalho MAC.
FWPS_L2_METADATA_FIELD_WIFI_OPERATION_MODE O valor do membro wiFiOperationMode indica o modo de operação Nativo 802.11 atual.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_PORT_ID O valor do membro vSwitchSourcePortId indica o identificador da porta de origem no comutador virtual.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_NIC_INDEX O valor do membro vSwitchSourceNicIndex indica o índice da NIC de origem no comutador virtual.
FWPS_L2_METADATA_FIELD_VSWITCH_PACKET_CONTEXT O valor do membro vSwitchPacketContext indica um HANDLE para o contexto de pacote do comutador virtual.
FWPS_L2_METADATA_FIELD_VSWITCH_DESTINATION_PORT_ID O valor do membro vSwitchDestinationPortId indica o identificador da porta de destino no comutador virtual.

l2Flags

Uma máscara de bits que contém sinalizadores de camada 2 que podem ser combinados com um OR bit a bit.

Disponível somente no Windows 8 e versões posteriores do Windows.

Valor Significado
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV4_FRAMING Indica o enquadramento ip4 bruto.
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV6_FRAMING Indica o enquadramento ip6 bruto.
FWPS_L2_INCOMING_FLAG_RECLASSIFY_MULTI_DESTINATION Esse sinalizador indica que uma NBL que foi vista uma vez na entrada foi distribuída em várias NBLs, cada uma delas destinada a uma VM diferente e a primeira NBL dessa distribuição já foi indicada ao driver de texto explicativo.

A primeira NBL do grupo distribuído não terá esse sinalizador definido. Todas as NBLs subsequentes para o grupo terão esse sinalizador definido.

Para injetar, o driver de texto explicativo deve clonar a NBL, bloquear e absorver o pacote original e limpar o sinalizador FWPS_RIGHT_ACTION_WRITE para a primeira indicação. Em seguida, modifique o clone e injete-o no caminho de entrada.

Para todas as indicações subsequentes, você deve bloquear e absorver o pacote original e limpar o sinalizador FWPS_RIGHT_ACTION_WRITE para o clone. Quando o clone injetado sair da entrada, ele será redistribuído novamente e todas as indicações terão um estado de injeção de FWPS_PACKET_INJECTED_BY_SELF ou FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.

Disponível somente no Windows 8 e versões posteriores do Windows.

ethernetMacHeaderSize

O tamanho, em bytes, do cabeçalho MAC se o sinalizador FWPS_L2_METADATA_FIELD_802_3_MAC_HEADER_SIZE estiver definido. Esse sinalizador é definido apenas para a camada 802.3 de entrada.

Disponível somente no Windows 8 e versões posteriores do Windows.

wiFiOperationMode

O modo de operação Nativo 802.11 atual se o sinalizador FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE estiver definido. Para obter mais informações, consulte DOT11_CURRENT_OPERATION_MODE.

Disponível somente no Windows 8 e versões posteriores do Windows.

vSwitchPacketContext

Um identificador para o contexto de pacote do comutador virtual.

Disponível somente no Windows 8 e versões posteriores do Windows.

subProcessTag

Reservado.

reserved1

Reservado.

Comentários

O mecanismo de filtro passa um ponteiro para uma estrutura FWPS_INCOMING_METADATA_VALUES0 para a função de texto explicativo classifyFn de um texto explicativo. Os valores de metadados contidos na estrutura não são processados pelo mecanismo de filtro, mas são fornecidos para a função de texto explicativo classifyFn de um texto explicativo para fornecer informações adicionais.

Um driver de texto explicativo pode usar a macro a seguir para testar se um valor de metadados específico está presente em uma estrutura FWPS_INCOMING_METADATA_VALUES0 :

FWPS_IS_METADATA_FIELD_PRESENT(metadataValues, metadataField)

Se o valor de metadados FWPS_METADATA_FIELD_PACKET_DIRECTION estiver presente em uma estrutura FWPS_INCOMING_METADATA_VALUES0 , o membro packetDirection especificará se o pacote foi de entrada ou saída durante uma operação de classificação de reautorização. Caso contrário, o valor de metadados FWPS_METADATA_FIELD_PACKET_DIRECTION não está presente.

O driver de texto explicativo deve seguir estas diretrizes ao inspecionar o pacote:

  • Nas camadas ALE connect ou receive/accept, o driver de texto explicativo não deve assumir que o pacote contém um cabeçalho IP válido se packetDirection estiver definido como FWP_DIRECTION_OUTBOUND e o valor de metadados FWPS_METADATA_FIELD_PACKET_DIRECTION estiver presente.
  • Na camada de conexão ALE, se o valor de metadados FWPS_METADATA_FIELD_PACKET_DIRECTION não estiver presente, o driver de texto explicativo deverá assumir uma direção de pacote de FWP_DIRECTION_OUTBOUND.
  • Na camada de recebimento/aceitação do ALE, se o valor de metadados FWPS_METADATA_FIELD_PACKET_DIRECTION não estiver presente, o driver de texto explicativo deverá assumir uma direção de pacote de FWP_DIRECTION_INBOUND.

Requisitos

Requisito Valor
Cabeçalho fwpsu.h