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 |