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