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.
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.
[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 |
---|---|
|
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. |
|
Die MAC-Ebene ist nicht bereit, die Einschleusung von Paketdaten zu akzeptieren. |
|
Der Einschleusungsgriff wird geschlossen. |
|
Der Einschleusungshandle wurde nicht mit dem Flags-Parameter des FwpsInjectionHandleCreate0-Funktion ist auf FWPS_INJECTION_TYPE_L2 festgelegt. |
|
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 |