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.
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.
[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 |
---|---|
|
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. |
|
Die MAC-Ebene ist nicht bereit, die Einfügung von Paketdaten zu akzeptieren. |
|
Der Einspritzpunkt wird geschlossen. |
|
Das Einfügungshandle wurde nicht mit den Flags Parameter des FwpsInjectionHandleCreate0-Funktion auf FWPS_INJECTION_TYPE_L2 festgelegt. |
|
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 |