struttura FWPS_INCOMING_METADATA_VALUES0 (fwpsk.h)

La struttura FWPS_INCOMING_METADATA_VALUES0 definisce i valori dei metadati passati dal motore di filtro alla funzione callout di un callout classificareFn funzione callout.

Nota

FWPS_INCOMING_METADATA_VALUES0 è una versione specifica di FWPS_INCOMING_METADATA_VALUES. Per altre informazioni, vedere nomi Version-Independent WFP e selezione di versioni specifiche di Windows.

Sintassi

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;

Membri

currentMetadataValues

Valore UINT32 che contiene un OR bit per bit di una combinazione di identificatori di campo metadati che specificano i valori dei metadati impostati nella struttura.

flags

Utilizzato internamente dal motore di filtro. I driver callout devono ignorare questo membro.

reserved

Riservato per l'uso del sistema. I driver callout devono ignorare questo membro.

discardMetadata

Struttura FWPS_DISCARD_METADATA0 che descrive il motivo per cui i dati sono stati rimossi. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_DISCARD_REASON è impostato nel membro currentMetadataValues.

flowHandle

Handle per il flusso di dati. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_FLOW_HANDLE è impostato nel membro currentMetadataValues.

ipHeaderSize

Offset, in byte, dell'intestazione IP.

Nei percorsi in ingresso, ipHeaderSize, se usato insieme al membro transportHeaderSize, specifica il numero di byte da ritirare dalla posizione di offset dei dati all'inizio dell'intestazione IP.

Nei livelli di errore ICMP in ingresso seguenti ipHeaderSize solo specifica il numero totale di byte da ritirare dall'offset dei dati all'inizio dell'intestazione 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

Nei percorsi in uscita, se ipHeaderSize è maggiore di zero, specifica il numero di byte da passare dalla posizione di offset dei dati alla fine dell'intestazione IP.

Questo membro non è applicabile al percorso in uscita ai livelli seguenti:

FWPS_LAYER_DATAGRAM_DATA_V4

FWPS_LAYER_DATAGRAM_DATA_V6

FWPS_LAYER_DATAGRAM_DATA_V4_DISCARD

FWPS_LAYER_DATAGRAM_DATA_V6_DISCARD

Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_IP_HEADER_SIZE è impostato nel membro currentMetadataValues .

transportHeaderSize

Offset o dimensione, in byte, dell'intestazione di trasporto.

Nei percorsi in ingresso transportHeaderSize specifica il numero di byte da ritirare dalla posizione di offset dei dati alla fine dell'intestazione di trasporto.

Nei livelli di errore ICMP in ingresso seguenti transportHeaderSize specifica le dimensioni dell'intestazione 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

Nei percorsi in uscita transportHeaderSize specifica il numero di byte da passare dalla posizione di offset dei dati alla fine dell'intestazione di trasporto.

Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE è impostato nel membro currentMetadataValues .

processPath

Puntatore a una struttura FWP_BYTE_BLOB che contiene il percorso completo del processo proprietario dell'endpoint. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_PROCESS_PATH è impostato nel membro currentMetadataValues.

token

Handle per il token usato per convalidare le autorizzazioni per l'utente. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_TOKEN è impostato nel membro currentMetadataValues.

processId

ID del processo proprietario dell'endpoint. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_PROCESS_ID è impostato nel membro currentMetadataValues .

sourceInterfaceIndex

Indice dell'interfaccia di rete in cui è stato ricevuto un pacchetto in ingresso. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_SOURCE_INTERFACE_INDEX è impostato nel membro currentMetadataValues.

destinationInterfaceIndex

Indice dell'interfaccia di rete in cui deve essere inviato un pacchetto in uscita. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_DESTINATION_INTERFACE_INDEX è impostato nel membro currentMetadataValues .

compartmentId

Identificatore del raggruppamento di routing in cui è stato ricevuto o inviato il pacchetto. Tutti i pacchetti modificati devono essere inseriti nuovamente nello stesso raggruppamento di routing indicato per il pacchetto originale. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_COMPARTMENT_ID è impostato nel membro currentMetadataValues .

fragmentMetadata

Struttura FWPS_INBOUND_FRAGMENT_METADATA0 che descrive i dati del frammento per un frammento di pacchetto ricevuto. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_FRAGMENT_DATA è impostato nel membro currentMetadataValues.

pathMtu

Unità di trasmissione massima del percorso (percorso MTU) per un pacchetto in uscita. Questo valore indica la dimensione massima del pacchetto fisico, in byte, che una rete può trasmettere senza frammentazione, questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_PATH_MTU è impostato nel membro currentMetadataValues.

completionHandle

Handle di completamento necessario per eseguire l'operazione di filtro corrente. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_COMPLETION_HANDLE è impostato nel membro currentMetadataValues.

transportEndpointHandle

Handle dell'endpoint che indica la fine del pacchetto da inserire nel livello di trasporto in uscita. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE è impostato nel membro currentMetadataValues .

remoteScopeId

Identificatore dell'ambito remoto da usare nell'inserimento del livello di trasporto in uscita. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_REMOTE_SCOPE_ID è impostato nel membro currentMetadataValues .

controlData

Oggetto dati del controllo socket facoltativo. Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA è impostato nel membro currentMetadataValues. Per informazioni sul tipo WSACMSGHDR, vedere CMSGHDR.

controlDataLength

Lunghezza, in byte, del membro controlData.

packetDirection

Direzione del traffico di rete (in ingresso o in uscita) specificato da uno dei valori costanti di FWP_DIRECTION. Questo membro viene impostato al livello applicazione (ALE) connettersi o ricevere/accettare livelli durante un'operazione di classificazione di riautorizzazione. Per altre informazioni, vedere la sezione Osservazioni.

Nota

Questo membro contiene dati validi solo se il flag FWPS_METADATA_FIELD_PACKET_DIRECTION è impostato nel membro currentMetadataValues .

headerIncludeHeader

Puntatore all'intestazione IP se il pacchetto viene inviato da un socket non elaborato.

headerIncludeHeaderLength

Lunghezza, in byte, dell'intestazione IP a cui punta headerIncludeHeader.

destinationPrefix

Prefisso di destinazione.

frameLength

Lunghezza del fotogramma.

parentEndpointHandle

Handle dell'elemento padre dell'endpoint.

icmpIdAndSequence

Identificatore e sequenza ICMP.

localRedirectTargetPID

PID del processo responsabile di una connessione reindirizzata.

originalDestination

Destinazione originale di una connessione reindirizzata.

redirectRecords

Handle di record di reindirizzamento che possono essere passati alla funzione FwpsQueryConnectionRedirectState0 per ottenere lo stato di reindirizzamento.

currentL2MetadataValues

Maschera di bit che contiene flag che specificano i valori di livello 2 impostati. Uno o più valori possono essere combinati con un OR bit per bit.

Valore Significato
FWPS_L2_METADATA_FIELD_ETHERNET_MAC_HEADER_SIZE Il valore del membro ethernetMacHeaderSize indica le dimensioni dell'intestazione MAC.
FWPS_L2_METADATA_FIELD_WIFI_OPERATION_MODE Il valore del membro wiFiOperationMode indica la modalità operativa nativa 802.11 corrente.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_PORT_ID Il valore del membro vSwitchSourcePortId indica l'identificatore per la porta di origine nel commutatore virtuale.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_NIC_INDEX Il valore del membro vSwitchSourceNicIndex indica l'indice della scheda di interfaccia di rete di origine nel commutatore virtuale.
FWPS_L2_METADATA_FIELD_VSWITCH_PACKET_CONTEXT Il valore del membro vSwitchPacketContext indica un handle per il contesto del pacchetto del commutatore virtuale.
FWPS_L2_METADATA_FIELD_VSWITCH_DESTINATION_PORT_ID Il valore del membro vSwitchDestinationPortId indica l'identificatore per la porta di destinazione nel commutatore virtuale.

l2Flags

Maschera di bit contenente flag di livello 2 che possono essere combinati con un OR bit per bit.

Valore Significato
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV4_FRAMING Indica il frame IP4 non elaborato.
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV6_FRAMING Indica il frame IP6 non elaborato.
FWPS_L2_INCOMING_FLAG_RECLASSIFY_MULTI_DESTINATION Questo flag indica che un NBL visualizzato una volta in ingresso è stato distribuito in più NCL, ognuno dei quali è destinato a una macchina virtuale diversa e il primo NBL di questa distribuzione è già stato indicato al driver di callout.

Il primo NBL del gruppo distribuito non avrà questo flag impostato. Tutti i criteri di rete successivi per il gruppo avranno questo flag impostato.

Ai fini dell'inserimento, il driver callout deve clonare il NBL, bloccare e assorbire il pacchetto originale e cancellare il flag di FWPS_RIGHT_ACTION_WRITE per la prima indicazione. Modificare quindi il clone e inserirlo nel percorso di ingresso.

Per tutte le indicazioni successive, è necessario bloccare e assorbire il pacchetto originale e cancellare il flag di FWPS_RIGHT_ACTION_WRITE per il clone. Quando il clone inserito esce dall'ingresso, verrà ridistribuito nuovamente e tutte le indicazioni avranno uno stato di iniezione di FWPS_PACKET_INJECTED_BY_SELF o FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.

ethernetMacHeaderSize

Dimensione, in byte, dell'intestazione MAC se è impostato il flag FWPS_L2_METADATA_FIELD_802_3_MAC_HEADER_SIZE. Questo flag è impostato solo per il livello in ingresso 802.3.

wiFiOperationMode

Modalità operativa nativa 802.11 corrente se è impostato il flag FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE. Per altre informazioni, vedere DOT11_CURRENT_OPERATION_MODE.

vSwitchSourcePortId

Identificatore univoco per la porta di origine nel commutatore virtuale.

vSwitchSourceNicIndex

Indice per la scheda di interfaccia di rete di origine nel commutatore virtuale.

vSwitchDestinationPortId

Identificatore univoco per la porta di destinazione nel commutatore virtuale.

padding0

Riservato.

padding1

Riservato.

padding2

Riservato.

vSwitchPacketContext

Handle per il contesto del pacchetto del commutatore virtuale.

subProcessTag

Riservato.

reserved1

Riservato.

Osservazioni

Il motore di filtro passa un puntatore a una struttura di FWPS_INCOMING_METADATA_VALUES0 a una classificareFn funzione callout. I valori dei metadati contenuti nella struttura non vengono elaborati dal motore di filtro, ma vengono forniti a un callout classificareFn funzione callout per fornire informazioni aggiuntive.

Un driver callout può usare la macro seguente per verificare se un valore di metadati specifico è presente in una struttura FWPS_INCOMING_METADATA_VALUES0:

FWPS_IS_METADATA_FIELD_PRESENT(metadataValues, metadataField)

Se il valore dei metadati FWPS_METADATA_FIELD_PACKET_DIRECTION è presente in una struttura FWPS_INCOMING_METADATA_VALUES0, il membro packetDirection specifica se il pacchetto era in ingresso o in uscita durante un'operazione di classificazione di riautorizzazione. In caso contrario, il valore dei metadati FWPS_METADATA_FIELD_PACKET_DIRECTION non è presente.

Il driver callout deve seguire queste linee guida quando esamina il pacchetto:

  • Nei livelli di connessione o ricezione/accettazione di ALE, il driver callout non deve presupporre che il pacchetto contenga un'intestazione IP valida se packetDirection è impostato su FWP_DIRECTION_OUTBOUND e il valore dei metadati FWPS_METADATA_FIELD_PACKET_DIRECTION è presente.
  • A livello di connessione ALE, se il valore dei metadati FWPS_METADATA_FIELD_PACKET_DIRECTION non è presente, il driver del callout deve assumere una direzione del pacchetto di FWP_DIRECTION_OUTBOUND.
  • Nel livello di ricezione/accettazione di ALE, se il valore dei metadati FWPS_METADATA_FIELD_PACKET_DIRECTION non è presente, il driver callout deve assumere una direzione del pacchetto di FWP_DIRECTION_INBOUND.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile a partire da Windows Vista.
intestazione fwpsk.h (include Fwpsk.h)

Vedere anche