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
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
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 |
FWPS_L2_METADATA_FIELD_WIFI_OPERATION_MODE | Il valore del membro wiFiOperationMode |
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_PORT_ID | Il valore del membro vSwitchSourcePortId |
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_NIC_INDEX | Il valore del membro vSwitchSourceNicIndex |
FWPS_L2_METADATA_FIELD_VSWITCH_PACKET_CONTEXT | Il valore del membro vSwitchPacketContext |
FWPS_L2_METADATA_FIELD_VSWITCH_DESTINATION_PORT_ID | Il valore del membro vSwitchDestinationPortId |
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) |