FwpsInjectionHandleCreate0-Funktion (fwpsk.h)
Die FwpsInjectionHandleCreate0-Funktion erstellt ein Handle, das von Paketinjektionsfunktionen zum Einfügen von Paket- oder Streamdaten in den TCP/IP-Netzwerkstapel und von der FwpsQueryPacketInjectionState0-Funktion zum Abfragen des Paketinjektionszustands verwendet werden kann.
Syntax
NTSTATUS FwpsInjectionHandleCreate0(
[in, optional] ADDRESS_FAMILY addressFamily,
[in] UINT32 flags,
[out] HANDLE *injectionHandle
);
Parameter
[in, optional] addressFamily
Die Adressfamilie, für die das Einschleusungshandle erstellt wird. Dies kann eine der folgenden Adressfamilien sein:
AF_UNSPEC
Die Adressfamilie ist nicht angegeben.
AF_INET
Die IPv4-Adressfamilie.
AF_INET6
Die IPv6-Adressfamilie.
Für Transport-, Stream- und Forward-Injektionen ist dieser Parameter optional und kann auf AF_UNSPEC festgelegt werden, was eine nicht angegebene Adressfamilie angibt. Dieser Wert wird in Ws2def.h definiert.
[in] flags
Ein flag-Wert, der von einem Legendentreiber festgelegt wird, um den Typ der einzugebenden Daten anzugeben. Dieses Flag kann mindestens einen der folgenden Werte aufweisen:
FWPS_INJECTION_TYPE_FORWARD
Paketdaten werden durch Aufrufen des fwpsInjectForwardAsync0-Funktion .
FWPS_INJECTION_TYPE_NETWORK
Netzwerkdaten werden eingefügt, indem entweder die fwpsInjectNetworkReceiveAsync0-Funktion oder die fwpsInjectNetworkSendAsync0-Funktion .
FWPS_INJECTION_TYPE_STREAM
Stream Daten werden durch Aufrufen des fwpsStreamInjectAsync0-Funktion .
FWPS_INJECTION_TYPE_TRANSPORT
Transportdaten werden eingefügt, indem entweder die fwpsInjectTransportReceiveAsync0-Funktion oder die fwpsInjectTransportSendAsync0-Funktion .
Um einen Einschleusungshandle zu erstellen, der von mehreren Einschleusfunktionen verwendet werden kann, kombinieren Sie die Einschleusungstypbits mit bitweisen OR-Vorgängen. Wenn der Flagwert auf 0 festgelegt ist, kann der resultierende Einschleusungshandle für Transport-, Stream- und Vorwärtsinjektionen verwendet werden.
[out] injectionHandle
Ein Zeiger auf eine Variable, die das Handle empfängt.
Rückgabewert
Die FwpsInjectionHandleCreate0-Funktion gibt einen der folgenden NTSTATUS-Codes zurück.
Rückgabecode | Beschreibung |
---|---|
|
Der Einschleusungshandle wurde erfolgreich erstellt. |
|
Der TCP/IP-Netzwerkstapel ist nicht bereit. Ein Legendentreiber sollte die FwpsInjectionHandleCreate0-Funktion zu einem späteren Zeitpunkt erneut aufrufen, um einen Einschleusungshandle zu erstellen. |
|
Ein Fehler ist aufgetreten. |
Hinweise
Ein Legendentreiber ruft die Funktion FwpsInjectionHandleCreate0 auf, um ein Handle zu erstellen, das zum Einfügen von Paket- oder Streamdaten in den TCP/IP-Netzwerkstapel und zum Abfragen des Paketeinschleusungszustands verwendet werden kann. Ein Legendentreiber übergibt das erstellte Handle an die Paketeinschleusungsfunktionen und FwpsQueryPacketInjectionState0.
Nachdem ein Legendentreiber die Verwendung eines Einspritzhandles abgeschlossen hat, muss er die Funktion FwpsInjectionHandleDestroy0 aufrufen, um den Handle zu zerstören. Wenn ausstehende Injektionen noch nicht abgeschlossen sind, wartet diese Funktion auf ihre Fertigstellung, bevor sie zurückgegeben wird.
Wenn Einschleusungen in die Netzwerkschicht vorgenommen werden und sowohl IPv4- als auch IPv6-Adressfamilien gefiltert werden, muss der Legendentreiber zwei Einschleusungshandles erstellen, indem er die FwpsInjectionHandleCreate0-Funktion zweimal aufruft: einen Aufruf mit addressFamily , der auf AF_INET festgelegt ist, und einen zweiten Aufruf mit addressFamily , der auf AF_INET6 festgelegt ist.
Für die MAC-Ebenen ( *MAC_FRAME_NATIVE, *MAC_FRAME_ETHERNET, *VSWITCH_ETHERNET) können Sie den gleichen Einschleusungshandle verwenden, der mit dem flag FWPS_INJECTION_TYPE_L2 abgerufen wurde. Der Einschleusungstyp ist näher an die Einschleusungsfunktionen gebunden als an die Schichten.
Ein Codebeispiel finden Sie unter WFPSampler HelperFunctions_InjectionData.cpp.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar ab Windows Vista. |
Zielplattform | Universell |
Header | fwpsk.h (include fwpsk.h) |
Bibliothek | Fwpkclnt.lib |
IRQL | PASSIVE_LEVEL |