Freigeben über


FwpsInjectMacSendAsync0-Funktion (fwpsk.h)

Die FwpsInjectMacSendAsync0-Funktion kann einen zuvor absorbierten MAC-Frame (oder einen Klon des Frames) wieder in den ausgehenden Datenpfad der Ebene 2 zurückwerfen, von dem er abgefangen wurde, oder einen erfundenen MAC-Frame einfügen.

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

 

Syntax

NTSTATUS FwpsInjectMacSendAsync0(
  [in]           HANDLE               injectionHandle,
  [in, optional] HANDLE               injectionContext,
  [in]           UINT32               flags,
  [in]           UINT16               layerId,
  [in]           IF_INDEX             interfaceIndex,
  [in]           NDIS_PORT_NUMBER     NdisPortNumber,
  [in, out]      NET_BUFFER_LIST      *netBufferLists,
  [in]           FWPS_INJECT_COMPLETE completionFn,
  [in, optional] HANDLE               completionContext
);

Parameter

[in] injectionHandle

Ein Einschleusungshandle, das zuvor durch einen Aufruf der Funktion FwpsInjectionHandleCreate0 abgerufen wurde, wobei der flags-Parameter auf FWPS_INJECTION_TYPE_L2 festgelegt ist.

Hinweis Legen Sie den addressFamily-Parameter der FwpsInjectionHandleCreate0-Funktion auf AF_UNSPEC fest.
 

[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. Muss auf 0 festgelegt werden.

[in] layerId

Der Laufzeitbezeichner für die Filterebene, auf der der Datenstrom verarbeitet wird.

[in] interfaceIndex

Der Schnittstellenindex, der an den klassifizierenFn eingehenden Wert des Legendentreibers übergeben wird, FWPS_FIELD_XxxMAC_FRAMEXxx_INTERFACE_INDEX.

[in] NdisPortNumber

Die NDIS-Portnummer, die an den klassifizierenFn eingehenden Wert des Legendentreibers übergeben wird, FWPS_FIELD_XxxMAC_FRAMEXxx_NDIS_PORT.

[in, out] netBufferLists

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, die zum Einfügen von Paketdaten verwendet werden soll, indem entweder die Funktion FwpsAllocateCloneNetBufferList0 oder die Funktion FwpsAllocateNetBufferAndNetBufferList0 aufgerufen wird. Die NET_BUFFER_LIST-Struktur muss mit einem MAC-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 netBufferLists-Parameter beschrieben werden, in den Netzwerkstapel eingefügt wurden. Dieser Zeiger muss angegeben werden, wenn geklonte oder NET_BUFFER_LIST-Strukturen erstellt werden. Beim Einfügen von ursprünglichen NET_BUFFER_LIST Strukturen kann dieser Parameter NULL sein, wenn die ursprünglichen Strukturen nicht geändert werden.

[in, optional] completionContext

Ein Zeiger auf einen mit Legendentreibern 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 FwpsInjectMacSendAsync0-Funktion gibt einen der folgenden NTSTATUS-Codes zurück.

Rückgabecode Beschreibung
STATUS_SUCCESS
Die Mac-Framedateneinschleusung wurde erfolgreich initiiert. Die Filter-Engine ruft die Vervollständigungsfunktion auf, nachdem die Filter-Engine die Einschleusung der MAC-Framedaten abgeschlossen hat oder wenn später ein Fehler aufgetreten ist. Im Falle eines Fehlers gibt das Statuselement der abgeschlossenen NET_BUFFER_LIST-Struktur den Grund für den Fehler an.
STATUS_FWP_TCPIP_NOT_READY
Die MAC-Ebene ist nicht bereit, die Einschleusung von Paketdaten zu akzeptieren.
STATUS_FWP_INJECT_HANDLE_CLOSING
Der Einschleusungsgriff wird geschlossen.
STATUS_FWP_INJECT_HANDLE_STALE
Der Einschleusungshandle wurde nicht mit dem Flags-Parameter des FwpsInjectionHandleCreate0-Funktion ist auf FWPS_INJECTION_TYPE_L2 festgelegt.
Andere status Codes
Ein Fehler ist aufgetreten.

Hinweise

Ein Rückruftreiber ruft die FwpsInjectMacSendAsync0-Funktion auf, um einen zuvor absorbierten MAC-Frame (oder einen Klon des Frames) wieder in den eingehenden Datenpfad der Ebene 2 zurückzuwerfen, von dem er abgefangen wurde, oder um einen erfundenen MAC-Frame einzuschleusen.

Der netBufferLists-Parameter kann eine NET_BUFFER_LIST Kette sein. Die Vervollständigungsfunktion kann jedoch jeweils mehrmals aufgerufen werden, um ein Segment (oder ein einzelnes NET_BUFFER_LIST) der Kette abzuschließen.

Eingefügte Frames können erneut klassifiziert werden, wenn die Pakete demselben Filter entsprechen wie ursprünglich klassifiziert. Daher müssen wie bei Legenden auf IP-Ebenen auch Legenden der Ebene 2 vor unendlicher Paketüberprüfung geschützt werden, indem sie FwpsQueryPacketInjectionState0 aufrufen.

Anforderungen

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

Weitere Informationen

FwpsAllocateCloneNetBufferList0 FwpsAllocateNetBufferAndNetBufferList0 FwpsInjectionHandleCreate0

FwpsQueryPacketInjectionState0

NET_BUFFER_LIST

klassifizierenFn

completionFn