FwpsAllocateCloneNetBufferList0-Funktion (fwpsk.h)
Die Funktion FwpsAllocateCloneNetBufferList0 weist eine NET_BUFFER_LIST Struktur zu, die ein Klon einer vorhandenen NET_BUFFER_LIST-Struktur ist.
Syntax
NTSTATUS FwpsAllocateCloneNetBufferList0(
[in, out] NET_BUFFER_LIST *originalNetBufferList,
[in, optional] NDIS_HANDLE netBufferListPoolHandle,
[in, optional] NDIS_HANDLE netBufferPoolHandle,
[in] ULONG allocateCloneFlags,
[out] NET_BUFFER_LIST **netBufferList
);
Parameter
[in, out] originalNetBufferList
Ein Zeiger auf die ursprüngliche NET_BUFFER_LIST Struktur, die geklont wird.
[in, optional] netBufferListPoolHandle
Ein NET_BUFFER_LIST Poolhandle, das aus einem vorherigen Aufruf des abgerufen wurde. NdisAllocateNetBufferListPool-Funktion . Dieser Parameter ist optional und kann NULL sein.
[in, optional] netBufferPoolHandle
Ein NET_BUFFER Poolhandle, das aus einem vorherigen Aufruf der NdisAllocateNetBufferPool-Funktion abgerufen wurde. Dieser Parameter ist optional und kann NULL sein.
[in] allocateCloneFlags
Für diese Funktion sind derzeit keine Flags definiert. Legendentreiber sollten diesen Parameter auf 0 (null) festlegen.
[out] netBufferList
Ein Zeiger auf eine Variable, die einen Zeiger auf die Klonstruktur NET_BUFFER_LIST empfängt.
Rückgabewert
Die FwpsAllocateCloneNetBufferList0-Funktion gibt einen der folgenden NTSTATUS-Codes zurück.
Rückgabecode | Beschreibung |
---|---|
|
Die Klonstruktur NET_BUFFER_LIST wurde erfolgreich zugeordnet. |
|
Ein Fehler ist aufgetreten. |
Hinweise
Ein Legendentreiber ruft die Funktion FwpsAllocateCloneNetBufferList0 auf, um einen Klon NET_BUFFER_LIST Struktur einer vorhandenen NET_BUFFER_LIST-Struktur zuzuordnen.
Diese Funktion ist ein Wrapper um die Die NdisAllocateCloneNetBufferList-Funktion ist jedoch für die Verwendung durch WFP-Paketinjektionsfunktionen spezialisiert.
Wenn die Klonstruktur NET_BUFFER_LIST Attribute aufweisen soll, die einem bestimmten Pool zugeordnet sind, muss der Legendentreiber das Poolhandle im NetBufferListPoolHandle - oder NetBufferPoolHandle-Parameter angeben. Wenn diese Parameter NULL sind, wird der von NDIS vorab zugewiesene Standardpool verwendet.
Die Klon-NET_BUFFER_LIST-Struktur beschreibt die gleichen Daten, die von der ursprünglichen NET_BUFFER_LIST-Struktur beschrieben werden. Die Funktion FwpsAllocateCloneNetBufferList0 kopiert die Daten, die von den ursprünglichen MDLs beschrieben werden, nicht in neue Datenpuffer. Stattdessen verweist die Klon-NET_BUFFER_LIST-Struktur auf die ursprünglichen Datenpuffer. Die Klon-NET_BUFFER_LIST-Struktur enthält keine anfängliche NET_BUFFER_LIST_CONTEXT Struktur.
Diese Funktion legt den ParentNetBufferList-Member der neu erstellten Klon-NET_BUFFER_LIST-Struktur so fest, dass er auf die übergeordnete NET_BUFFER_LIST-Struktur verweist. Das ChildRefCount-Element der übergeordneten Struktur wird um 1 erhöht.
Ein Legendentreiber kann die Klon-NET_BUFFER_LIST Struktur ändern und anstelle der ursprünglichen NET_BUFFER_LIST-Struktur in den Netzwerkstapel einfügen, indem die Paketeinschleusungsfunktionen aufgerufen werden. Nachdem die durch die Klon-NET_BUFFER_LIST-Struktur beschriebenen Daten erfolgreich in den Netzwerkstapel eingefügt wurden, gibt der Legendentreiber den Klon NET_BUFFER_LIST Struktur frei, indem die Funktion FwpsFreeCloneNetBufferList0 aufgerufen wird.
Ein Legendentreiber kann einzelne Netzpuffer (NET_BUFFER) oder MDLs innerhalb der Klonennetzpufferliste einfügen oder ersetzen. Ein solcher Treiber muss auch die Änderungen rückgängig machen, bevor er die FwpsFreeCloneNetBufferList0-Funktion .
Richtlinien für die Verwaltung geklonter Pakete
Ein Legendentreiber darf geklonte Pakete nicht unbegrenzt enthalten. Ein geklontes Paket kann Energieverwaltungsvorgänge auf einem Computer im Leerlauf beeinträchtigen.Die beabsichtigte Verwendung von geklonten Paketen in WFP besteht darin, Eine Klärung durch eine Benutzermodusanwendung oder einen anderen relativ schnellen Vorgang zu erhalten. Der Legendentreiber darf geklonte Pakete nicht enthalten, während er z. B. auf Benutzereingaben wartet oder auf die Freigabe des Webdiensts wartet oder auf andere Vorgänge wartet, die eine beliebige Zeit in Anspruch nehmen können.
Wenn der Legendentreiber auf einen potenziell langwierigen Vorgang warten muss, erstellt er eine tiefe Kopie des Pakets mithilfe von FwpsAllocateNetBufferAndNetBufferList0 blockiert und absorbiert das ursprüngliche Paket.
Legendentreiber sollten gehaltene Pakete immer so schnell wie möglich zurückgeben.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar ab Windows Vista. |
Zielplattform | Universell |
Header | fwpsk.h (include Fwpsk.h) |
Bibliothek | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |