estrutura FWPS_INCOMING_METADATA_VALUES0 (fwpsk.h)
A estrutura FWPS_INCOMING_METADATA_VALUES0 define valores de metadados que o mecanismo de filtro passa para a função de texto explicativo classifyFn.
Nota
FWPS_INCOMING_METADATA_VALUES0 é uma versão específica do FWPS_INCOMING_METADATA_VALUES. Consulte nomes de Version-Independent WFP e versões específicas de destino do Windows para obter mais informações.
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;
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;
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 de 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 de 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 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
Nos 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 até 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 de FWPS_METADATA_FIELD_IP_HEADER_SIZE estiver definido no membro
transportHeaderSize
O deslocamento ou o 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 até 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 até o final do cabeçalho de transporte.
Esse membro conterá dados válidos somente se o sinalizador de FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE estiver definido no membro
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 de FWPS_METADATA_FIELD_PROCESS_PATH estiver definido no membro
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 de 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 de FWPS_METADATA_FIELD_PROCESS_ID estiver definido no membro
sourceInterfaceIndex
O índice da interface de rede em que um pacote de entrada foi recebido. Esse membro conterá dados válidos somente se o sinalizador de FWPS_METADATA_FIELD_SOURCE_INTERFACE_INDEX estiver definido no membro
destinationInterfaceIndex
O índice da interface de rede para onde um pacote de saída deve ser enviado. Esse membro conterá dados válidos somente se o sinalizador de FWPS_METADATA_FIELD_DESTINATION_INTERFACE_INDEX estiver definido no membro
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 de FWPS_METADATA_FIELD_COMPARTMENT_ID estiver definido no membro
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 de FWPS_METADATA_FIELD_FRAGMENT_DATA estiver definido no membro currentMetadataValues.
pathMtu
A unidade de transmissão máxima do caminho (MTU de 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, este membro contém dados válidos somente se o sinalizador FWPS_METADATA_FIELD_PATH_MTU estiver definido no membro
completionHandle
Um identificador de conclusão que é necessário para aguardar a operação de filtragem atual. Esse membro conterá dados válidos somente se o sinalizador de FWPS_METADATA_FIELD_COMPLETION_HANDLE estiver definido no membro
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 de FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE estiver definido no membro
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 de FWPS_METADATA_FIELD_REMOTE_SCOPE_ID estiver definido no membro
controlData
Um objeto de dados de controle de soquete opcional. Esse membro conterá dados válidos somente se o sinalizador de FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA estiver definido no membro currentMetadataValues
controlDataLength
O comprimento, em bytes, do membro do 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 conexão ALE (imposição da camada de aplicativo) ou camadas de recebimento/aceitação durante uma operação de classificação de reautorização. Para obter mais informações, consulte a seção Comentários.
Nota
Esse membro conterá dados válidos somente se o sinalizador de FWPS_METADATA_FIELD_PACKET_DIRECTION for definido no membro currentMetadataValues
headerIncludeHeader
Um ponteiro para o cabeçalho IP se o pacote for enviado de um soquete bruto.
headerIncludeHeaderLength
O comprimento, em bytes, do cabeçalho IP apontado por headerIncludeHeader.
destinationPrefix
O prefixo de destino.
frameLength
O comprimento do quadro.
parentEndpointHandle
O identificador do pai do ponto de extremidade.
icmpIdAndSequence
O identificador e a sequência do ICMP.
localRedirectTargetPID
O PID do processo responsável por uma conexão redirecionada.
originalDestination
O destino original de uma conexão redirecionada.
redirectRecords
Um identificador de registros de redirecionamento que pode ser passado para a função FwpsQueryConnectionRedirectState0 para obter o estado de redirecionamento.
currentL2MetadataValues
Uma máscara de bits que contém sinalizadores que especificam quais valores de camada 2 são definidos. Um ou mais valores podem ser combinados com um OR bit a bit.
Valor | Significado |
---|---|
FWPS_L2_METADATA_FIELD_ETHERNET_MAC_HEADER_SIZE | O valor do membro ethernetMacHeaderSize |
FWPS_L2_METADATA_FIELD_WIFI_OPERATION_MODE | O valor do membro wiFiOperationMode indica o modo de operação Native 802.11 atual. |
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_PORT_ID | O valor do membro |
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 |
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 contendo sinalizadores de camada 2 que pode ser combinada com um OR bit a bit.
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 fins de injeção, o driver de texto explicativo deve clonar o NBL, bloquear e absorver o pacote original e limpar o sinalizador de FWPS_RIGHT_ACTION_WRITE para a primeira indicação. Em seguida, modifique o clone e insira-o no caminho de entrada. Para todas as indicações subsequentes, você deve bloquear e absorver o pacote original e limpar o sinalizador de FWPS_RIGHT_ACTION_WRITE para o clone. Quando o clone injetado sai 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. |
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.
wiFiOperationMode
O modo de operação Nativo 802.11 atual se o sinalizador de FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE estiver definido. Para obter mais informações, consulte DOT11_CURRENT_OPERATION_MODE.
vSwitchSourcePortId
Um identificador exclusivo para a porta de origem no comutador virtual.
vSwitchSourceNicIndex
Um índice para a NIC de origem no comutador virtual.
vSwitchDestinationPortId
Um identificador exclusivo para a porta de destino no comutador virtual.
padding0
Reservado.
padding1
Reservado.
padding2
Reservado.
vSwitchPacketContext
Um identificador para o contexto do pacote de comutador virtual.
subProcessTag
Reservado.
reserved1
Reservado.
Observações
O mecanismo de filtro passa um ponteiro para uma estrutura de FWPS_INCOMING_METADATA_VALUES0 para a função de texto explicativo classifyFn. 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 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 de 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 de FWPS_INCOMING_METADATA_VALUES0, o membro
O driver explicativo deve seguir estas diretrizes ao inspecionar o pacote:
- Nas camadas de conexão ou recebimento/aceitação do ALE, 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 dos 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 |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows Vista. |
cabeçalho | fwpsk.h (inclua Fwpsk.h) |
Consulte também
- CMSGHDR
- FWPS_DISCARD_METADATA0
- FWPS_INBOUND_FRAGMENT_METADATA0
- FWP_BYTE_BLOB
- FWP_DIRECTION
- FwpsQueryConnectionRedirectState0
- NET_BUFFER_LIST
- classifyFn