Freigeben über


FwpsInjectMacSendAsync0-Funktion (fwpsk.h)

Die FwpsInjectMacSendAsync0--Funktion kann einen zuvor absorbierten Medienzugriffssteuerungsframe (MAC) (oder einen Klon des Frames) wieder auf den Pfad der Ebene 2 ausgehender Daten zurückwerfen, von dem sie 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 zielspezifische Versionen von Windows.

 

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 Einfügungshandle, das zuvor durch einen Aufruf der FwpsInjectionHandleCreate0-Funktion abgerufen wurde, wobei die Flags Parameter auf FWPS_INJECTION_TYPE_L2 festgelegt sind.

Note Set the addressFamily parameter of the FwpsInjectionHandleCreate0 function to AF_UNSPEC.
 

[in, optional] injectionContext

Ein optionales Handle für den Einfügungskontext. Wenn angegeben, kann sie durch Aufrufen der FwpsQueryPacketInjectionState0 Funktion, wenn der Paketeinfügungsstatus FWPS_PACKET_INJECTION_STATEFWPS_PACKET_INJECTED_BY_SELF oder FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELFist.

[in] flags

Reserviert. Muss auf Null festgelegt werden.

[in] layerId

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

[in] interfaceIndex

Der Schnittstellenindex, der an die klassifizierungFn des Popuptreibers übergeben wird, eingehenden Wert FWPS_FIELD_XxxMAC_FRAMEXxx_INTERFACE_INDEX.

[in] NdisPortNumber

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

[in, out] netBufferLists

Ein Zeiger auf eine NET_BUFFER_LIST Struktur, die die injizierten Paketdaten beschreibt. Ein Popuptreiber weist eine NET_BUFFER_LIST Struktur zum Einfügen von Paketdaten zu, indem entweder die FwpsAllocateCloneNetBufferList0-Funktion oder die FwpsAllocateNetBufferAndNetBufferList0--Funktion aufgerufen wird. Die NET_BUFFER_LIST-Struktur muss mit einem MAC-Header beginnen.

[in] completionFn

Ein Zeiger auf eine completionFn Legendenfunktion, die vom Legendentreiber bereitgestellt wird. Das Filtermodul ruft diese Funktion nach den Paketdaten auf, die durch die netBufferLists Parameter beschrieben wurden, in den Netzwerkstapel eingefügt. Dieser Zeiger muss beim Einfügen geklonter oder erstellter NET_BUFFER_LIST Strukturen angegeben werden. Beim Einfügen ursprünglicher 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-werden.

Rückgabewert

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

Rückgabecode Beschreibung
STATUS_SUCCESS
Die MAC-Framedateneinfügung wurde erfolgreich initiiert. Das Filtermodul ruft die Vervollständigungsfunktion auf, nachdem das Filtermodul das Einfügen der MAC-Framedaten abgeschlossen hat oder wenn anschließend ein Fehler aufgetreten ist. Bei einem Fehler gibt das Status Mitglied 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 Einfügung von Paketdaten zu akzeptieren.
STATUS_FWP_INJECT_HANDLE_CLOSING
Der Einspritzpunkt wird geschlossen.
STATUS_FWP_INJECT_HANDLE_STALE
Das Einfügungshandle wurde nicht mit den Flags Parameter des FwpsInjectionHandleCreate0-Funktion auf FWPS_INJECTION_TYPE_L2 festgelegt.
Andere Statuscodes
Fehler.

Bemerkungen

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

Der netBufferLists--Parameter kann eine NET_BUFFER_LIST Kette sein. Die Vervollständigungsfunktion kann jedoch mehrmals aufgerufen werden, wobei ein Segment (oder einzelne NET_BUFFER_LIST) der Kette abgeschlossen wird.

Injizierte Frames konnten erneut klassifiziert werden, wenn die Pakete mit demselben Filter übereinstimmen wie ursprünglich klassifiziert. Wie bei Legenden auf IP-Ebenen müssen Beschriftungen von Layer 2 auch vor unendlicher Paketüberprüfung geschützt werden, indem FwpsQueryPacketInjectionState0aufgerufen wird.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows 8.
Zielplattform- Universal
Header- fwpsk.h (include Fwpsk.h)
Library Fwpkclnt.lib
IRQL- <= DISPATCH_LEVEL

Siehe auch

FwpsAllocateCloneNetBufferList0 FwpsAllocateNetBufferList0 FwpsInjectionHandleCreate0

FwpsQueryPacketInjectionState0

NET_BUFFER_LIST

klassifizierenFn-

completionFn-