fwpsInjectForwardAsync0-Funktion (fwpsk.h)

Die FwpsInjectForwardAsync0-Funktion fügt Paketdaten in den Weiterleitungsdatenpfad ein.

HinweisFwpsInjectForwardAsync0 ist eine bestimmte Version von FwpsInjectForwardAsync. Weitere Informationen finden Sie unter WFP Version-Independent Namen und Zielgruppenspezifische Windows-Versionen .
 

Syntax

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
);

Parameter

[in] injectionHandle

Ein Einschleusungshandle, der zuvor durch einen Aufruf des erstellt wurde FwpsInjectionHandleCreate0-Funktion .

[in, optional] injectionContext

Ein optionales Handle für den Einschleusungskontext. Wenn angegeben, kann sie durch Aufrufen des FwpsQueryPacketInjectionState0-Funktion , wenn der Paketinjektionsstatus FWPS_PACKET_INJECTION_STATEFWPS_PACKET_INJECTED_BY_SELF oder FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF ist.

[in] flags

Reserviert. Legendentreiber müssen diesen Parameter auf 0 festlegen.

[in] addressFamily

Eine der folgenden Adressfamilien:

AF_INET

Die IPv4-Adressfamilie.

AF_INET6

Die IPv6-Adressfamilie.

[in] compartmentId

Der Bezeichner des Routingfachs, in das die Paketdaten eingefügt werden, wird als COMPARTMENT_ID Typ angegeben. Dieser Bezeichner wird einer Legende über das compartmentId-Element des FWPS_INCOMING_METADATA_VALUES0 Struktur, die an die Legendenfunktion klassifizierenFn des Legendentreibers übergeben wird. Wenn das compartmentId-Element für Legenden verfügbar ist, wird FWPS_METADATA_FIELD_COMPARTMENT_ID im currentMetadataValues-Element festgelegt. Legen Sie andernfalls diesen Parameter auf UNSPECIFIED_COMPARTMENT_ID fest.

[in] interfaceIndex

Der Index der Zielschnittstelle (an der die Paketdaten gesendet werden sollen). Der Index ist ein 32-Bit-Wert. Ein Legendentreiber sollte den Wert des Schnittstellenindexes verwenden, der als einer der eingehenden Datenwerte an seine KlassifizierungFn-Legendenfunktion für diesen Parameter übergeben wird, wenn das Paket in dieselbe Schnittstelle eingefügt werden soll, an der das ursprüngliche Paket angegeben wurde.

[in, out] netBufferList

Ein Zeiger auf eine NET_BUFFER_LIST-Struktur , die die Paketdaten beschreibt, die eingefügt werden. Ein Legendentreiber weist eine NET_BUFFER_LIST-Struktur zu, um Paketdaten einzuschleusen, indem er entweder die FwpsAllocateCloneNetBufferList0-Funktion oder die FwpsAllocateNetBufferAndNetBufferList0-Funktion . Die NET_BUFFER_LIST-Struktur muss mit einem IP-Header beginnen.

[in] completionFn

Ein Zeiger auf eine vom Legendentreiber bereitgestellte funktion completionFn . Die Filter-Engine ruft diese Funktion auf, nachdem die Paketdaten, die durch den netBufferList-Parameter beschrieben werden, in den Netzwerkstapel eingefügt wurden.

[in, optional] completionContext

Ein Zeiger auf einen vom Legendentreiber bereitgestellten Kontext, der an die Legendenfunktion übergeben wird, auf die der completionFn-Parameter verweist. Dieser Parameter ist optional und kann NULL sein.

Rückgabewert

Die FwpsInjectForwardAsync0-Funktion gibt einen der folgenden NTSTATUS-Codes zurück.

Rückgabecode Beschreibung
STATUS_SUCCESS
Die Paketdateneinschleusung wurde erfolgreich initiiert. Die Filter-Engine ruft die Vervollständigungsfunktion auf, nachdem die Filter-Engine die Einschleusung der Paketdaten in den Netzwerkstapel abgeschlossen hat oder wenn später ein Fehler aufgetreten ist. In diesem Fall gibt das Statusmitglied der abgeschlossenen NET_BUFFER_LIST-Struktur den Grund für den Fehler an.
STATUS_FWP_TCPIP_NOT_READY
Der TCP/IP-Netzwerkstapel ist nicht bereit, die Einschleusung von Paketdaten zu akzeptieren.
STATUS_FWP_INJECT_HANDLE_CLOSING
Der Einschleusungsgriff wird geschlossen.
Andere status Codes
Ein Fehler ist aufgetreten.

Hinweise

Ein Legendentreiber ruft die Funktion FwpsInjectForwardAsync0 auf, um Paketdaten oder ein Paketfragment in den Weiterleitungsdatenpfad einzufügen.

Diese Funktion kann asynchron ausgeführt werden. Legendentreiber injizieren normalerweise Daten in den Netzwerkstapel, wenn sie Paketdaten ändern. Weitere Informationen dazu, wie ein Legendentreiber Paketdaten ändern kann, finden Sie unter Callout-Treibervorgänge.

Ein Paket oder Paketfragment, das mit dieser Funktion eingefügt wurde, wird für keine WFP-Ebene zum Filtern angegeben.

Wenn der Rückgabewert nicht STATUS_SUCCESS ist, wird die Vervollständigungsfunktion nicht aufgerufen. In diesem Fall muss die Von netBufferList auf die Net-Pufferliste verwiesen wird, durch einen Aufruf von FwpsFreeNetBufferList0 oder FwpsFreeCloneNetBufferList0.

IP-Pakete oder Fragmente können geklont, geändert und wieder in den Netzwerkstapel eingefügt werden. Eine Fragmentgruppe muss jedoch vom Legendentreiber als einzelne NET_BUFFER_LIST neu zusammengesetzt werden, bevor sie wieder eingefügt werden kann.

Vorwärts eingefügte Pakete werden nicht erneut in die Weiterleitungsebene eingespeist. Daher werden sie nicht neu klassifiziert.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows Vista.
Zielplattform Universell
Header fwpsk.h (include fwpsk.h)
Bibliothek Fwpkclnt.lib
IRQL <= DISPATCH_LEVEL

Weitere Informationen

FWPS_INCOMING_METADATA_VALUES0 FwpsAllocateCloneNetBufferList0 FwpsAllocateNetBufferAndNetBufferList0

FwpsInjectionHandleCreate0

FwpsInjectionHandleDestroy0

NET_BUFFER_LIST

Paketeinschleusungsfunktionen

klassifizierenFn

completionFn