Funzione FwpsInjectForwardAsync0 (fwpsk.h)

La funzione FwpsInjectForwardAsync0 inserisce i dati dei pacchetti nel percorso dati di inoltro.

NotaFwpsInjectForwardAsync0 è una versione specifica di FwpsInjectForwardAsync. Per altre informazioni , vedere Nomi Version-Independent WFP e Versioni specifiche di Windows .
 

Sintassi

NTSTATUS FwpsInjectForwardAsync0(
  [in]           HANDLE                injectionHandle,
  [in, optional] HANDLE                injectionContext,
  [in]           UINT32                flags,
  [in]           ADDRESS_FAMILY        addressFamily,
  [in]           COMPARTMENT_ID        compartmentId,
  [in]           IF_INDEX              interfaceIndex,
  [in, out]      NET_BUFFER_LIST       *netBufferList,
  [in]           FWPS_INJECT_COMPLETE0 completionFn,
  [in, optional] HANDLE                completionContext
);

Parametri

[in] injectionHandle

Handle di inserimento creato in precedenza da una chiamata all'oggetto Funzione FwpsChangectionHandleCreate0 .

[in, optional] injectionContext

Handle facoltativo nel contesto di inserimento. Se specificato, può essere ottenuto chiamando l'oggetto La funzione FwpsQueryPacketChangectionState0 quando lo stato di inserimento dei pacchetti FWPS_PACKET_INJECTION_STATE è FWPS_PACKET_INJECTED_BY_SELF o FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.

[in] flags

Riservato. I driver di callout devono impostare questo parametro su zero.

[in] addressFamily

Una delle famiglie di indirizzi seguenti:

AF_INET

Famiglia di indirizzi IPv4.

AF_INET6

Famiglia di indirizzi IPv6.

[in] compartmentId

Identificatore del raggruppamento di routing in cui vengono inseriti i dati del pacchetto, specificati come tipo di COMPARTMENT_ID . Questo identificatore viene fornito a un callout tramite il membro compartmentId del FWPS_INCOMING_METADATA_VALUES0 struttura passata alla funzione di callout del driver di classificazioneFn . Se il membro compartmentId è disponibile per i callout, FWPS_METADATA_FIELD_COMPARTMENT_ID verrà impostato nel membro currentMetadataValues . In caso contrario, impostare questo parametro su UNSPECIFIED_COMPARTMENT_ID.

[in] interfaceIndex

Indice dell'interfaccia di destinazione (in cui inviare i dati dei pacchetti). L'indice è un valore a 32 bit. Un driver di callout deve usare il valore dell'indice dell'interfaccia passato come uno dei valori di dati in ingresso alla funzione di callout di classificazioneFn per questo parametro se il pacchetto deve essere inserito nella stessa interfaccia in cui è stato indicato il pacchetto originale.

[in, out] netBufferList

Puntatore a una struttura NET_BUFFER_LIST che descrive i dati dei pacchetti inseriti. Un driver di callout alloca una struttura NET_BUFFER_LIST per inserire i dati dei pacchetti chiamando entrambi Funzione FwpsAllocateCloneNetBufferList0 o Funzione FwpsAllocateNetBufferAndNetBufferList0 . La struttura NET_BUFFER_LIST deve iniziare con un'intestazione IP.

[in] completionFn

Puntatore a una funzione callout di completamentoFn fornita dal driver di callout. Il motore di filtro chiama questa funzione dopo i dati del pacchetto, descritti dal parametro netBufferList , è stato inserito nello stack di rete.

[in, optional] completionContext

Puntatore a un contesto fornito dal driver di callout passato alla funzione callout a cui fa riferimento il parametro completamentoFn . Questo parametro è facoltativo e può essere NULL.

Valore restituito

La funzione FwpsInjectForwardAsync0 restituisce uno dei codici NTSTATUS seguenti.

Codice restituito Descrizione
STATUS_SUCCESS
L'inserimento dei dati dei pacchetti è stato avviato correttamente. Il motore di filtro chiamerà la funzione di completamento dopo che il motore di filtro ha completato l'inserimento dei dati del pacchetto nello stack di rete o quando si è verificato un errore successivamente, nel qual caso il membro Stato della struttura di NET_BUFFER_LIST completata indicherà il motivo dell'errore.
STATUS_FWP_TCPIP_NOT_READY
Lo stack di rete TCP/IP non è pronto per accettare l'inserimento dei dati dei pacchetti.
STATUS_FWP_INJECT_HANDLE_CLOSING
L'handle di inserimento viene chiuso.
Altri codici di stato
Si è verificato un errore.

Commenti

Un driver di callout chiama la funzione FwpsInjectForwardAsync0 per inserire i dati dei pacchetti o un frammento di pacchetto nel percorso dati di inoltro.

Questa funzione può essere eseguita in modo asincrono. I driver di callout in genere inseriscono i dati nello stack di rete durante la modifica dei dati dei pacchetti. Per altre informazioni sul modo in cui un driver di callout può modificare i dati dei pacchetti, vedere Callout Driver Operations.For more information about how a callout driver driver can modify packet data, see Callout Driver Operations.

Un pacchetto o un frammento di pacchetto inserito con questa funzione non verrà indicato in alcun livello WFP per il filtro.

Se il valore restituito non è STATUS_SUCCESS, la funzione di completamento non verrà chiamata. In questo caso, l'elenco di buffer net puntato a netBufferList deve essere liberato da una chiamata a FwpsFreeNetBufferList0 o FwpsFreeCloneNetBufferList0.

I pacchetti IP o i frammenti possono essere clonati, modificati e inseriti nello stack di rete. Tuttavia, un gruppo di frammenti deve essere riassemblato dal driver di callout come singolo NET_BUFFER_LIST prima di poter essere reinserito.

I pacchetti inseriti in avanti non rientrano nel livello di inoltro. Pertanto, non saranno riclassificati.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows Vista.
Piattaforma di destinazione Universale
Intestazione fwpsk.h (includere Fwpsk.h)
Libreria Fwpkclnt.lib
IRQL <= DISPATCH_LEVEL

Vedi anche

FWPS_INCOMING_METADATA_VALUES0 FwpsAllocateCloneNetBufferList0 FwpsAllocateNetBufferAndNetBufferList0

FwpsChangectionHandleCreate0

FwpsMakectionHandleDestroy0

NET_BUFFER_LIST

Funzioni di inserimento pacchetti

classificazioneFn

completamentoFn