FwpsInjectMacReceiveAsync0-Funktion (fwpsk.h)

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

HinweisFwpsInjectMacReceiveAsync0 ist eine bestimmte Version von FwpsInjectMacReceiveAsync. Weitere Informationen finden Sie unter WFP-Version-Independent Namen und Spezifische Windows-Versionen .

 

Syntax

NTSTATUS FwpsInjectMacReceiveAsync0(
  [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 der FwpsQueryPacketInjectionState0-Funktion , wenn der paketinjektionszustand FWPS_PACKET_INJECTION_STATEFWPS_PACKET_INJECTED_BY_SELF oder FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF ist.

[in] flags

Reserviert. Muss auf 0 (null) 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 FWPS_FIELD_XxxMAC_FRAMEXxx_INTERFACE_INDEX übergeben wird.

[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 ordnet 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.

Bei (layerId == FWPS_LAYER_INBOUND_MAC_FRAME_ETHERNET)muss die NET_BUFFER_LIST mit einem Ethernet-Header beginnen.

Bei (layerId == FWPS_LAYER_INBOUND_MAC_FRAME_NATIVE)muss die NET_BUFFER_LIST mit einem MAC-Header beginnen.

[in] completionFn

Ein Zeiger auf eine vom Legendentreiber bereitgestellte completionFn-Beschriftungsfunktion. Die Filter-Engine ruft diese Funktion auf, nachdem die durch den netBufferLists-Parameter beschriebenen Paketdaten in den Netzwerkstapel eingefügt wurden. Dieser Zeiger muss beim Einfügen geklonter oder erstellter NET_BUFFER_LIST-Strukturen angegeben 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 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 FwpsInjectMacReceiveAsync0-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 anschließend ein Fehler aufgetreten ist. Im Falle eines Fehlers gibt der Status-Member 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 Injektionshandle wird geschlossen.
STATUS_FWP_INJECT_HANDLE_STALE
Das Einschleusungshandle wurde nicht mit dem Flags-Parameter des Die FwpsInjectionHandleCreate0-Funktion ist auf FWPS_INJECTION_TYPE_L2 festgelegt.
Andere status Codes
Ein Fehler ist aufgetreten.

Hinweise

Ein Rückruftreiber ruft die FwpsInjectMacReceiveAsync0-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 aus 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 mit demselben Filter wie ursprünglich klassifiziert übereinstimmen. Daher müssen Layer-2-Legenden wie bei Legenden auf IP-Ebenen auch vor unendlicher Paketüberprüfung schützen, 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