Freigeben über


FwpsAllocateDeepCloneNetBufferList0-Funktion (fwpsk.h)

Die FwpsAllocateDeepCloneNetBufferList0-Funktion weist eine NET_BUFFER_LIST Struktur zu, die ein tiefer Klon einer vorhandenen NET_BUFFER_LIST-Struktur ist.

Syntax

NTSTATUS FwpsAllocateDeepCloneNetBufferList0(
  [in, out]      NET_BUFFER_LIST *originalNetBufferList,
  [in, optional] NDIS_HANDLE     netBufferListPoolHandle,
  [in, optional] NDIS_HANDLE     netBufferPoolHandle,
  [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 von einem vorherigen Aufruf der NdisAllocateNetBufferListPool-Funktion abgerufen wurde. Dieser Parameter ist optional und kann NULL sein.

[in, optional] netBufferPoolHandle

Ein NET_BUFFER_LIST Poolhandle, das von einem vorherigen Aufruf der NdisAllocateNetBufferPool-Funktion abgerufen wurde. Dieser Parameter ist optional und kann NULL sein.

[out] netBufferList

Ein Zeiger auf eine Variable, die einen Zeiger auf den Deep Clone NET_BUFFER_LIST Struktur empfängt.

Rückgabewert

Die Funktion FwpsAllocateDeepCloneNetBufferList0 gibt einen der folgenden NTSTATUS-Codes zurück.

Rückgabecode Beschreibung
STATUS_SUCCESS Der Deep Clone NET_BUFFER_LIST Struktur wurde erfolgreich zugeordnet.
Andere status Codes Ein Fehler ist aufgetreten.

Hinweise

Ein Legendentreiber ruft die Funktion FwpsAllocateDeepCloneNetBufferList0 auf, um einen Deep Clone NET_BUFFER_LIST Struktur einer vorhandenen NET_BUFFER_LIST-Struktur zuzuweisen.

Diese Funktion ist ein Wrapper um die NdisAllocateCloneNetBufferList-Funktion , ist aber für die Verwendung durch WFP-Paketeinschleusungsfunktionen spezialisiert.

Wenn der Deep Clone NET_BUFFER_LIST-Struktur 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 Deep Clone-NET_BUFFER_LIST-Struktur beschreibt dieselben Daten, die von der ursprünglichen NET_BUFFER_LIST-Struktur beschrieben werden. Die Funktion FwpsAllocateDeepCloneNetBufferList0 kopiert die Daten, die von den ursprünglichen MDLs beschrieben werden, in neue Datenpuffer. Die Klonstruktur NET_BUFFER_LIST enthält eine anfängliche NET_BUFFER_LIST_CONTEXT-Struktur .

Diese Funktion legt fest, dass das ParentNetBufferList-Element der neu erstellten Klon-NET_BUFFER_LIST-Struktur auf die übergeordnete NET_BUFFER_LIST-Struktur verweist. Das ChildRefCount-Element der übergeordneten Struktur wird um 1 erhöht.

Ein Legendentreiber kann den Klon NET_BUFFER_LIST Struktur ändern und anstelle der ursprünglichen NET_BUFFER_LIST-Struktur in den Netzwerkstapel einfügen, indem er die Paketeinschleusungsfunktionen aufruft. Nachdem die durch den 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 er die Funktion FwpsFreeCloneNetBufferList0 aufruft.

Ein Legendentreiber kann einzelne Netzpuffer (NET_BUFFER) oder MDLs innerhalb des Deep Clone-NET_BUFFER_LIST einfügen oder ersetzen. Der Treiber muss diese Änderungen rückgängig machen, bevor er die Funktion FwpsFreeCloneNetBufferList0 aufruft.

Richtlinien für die Verwaltung geklonter Pakete

Ein Legendentreiber darf geklonte Pakete nicht unbegrenzt enthalten. Ein geklontes Paket kann Energieverwaltungsvorgänge auf einem im Leerlauf befindlichen Computer beeinträchtigen.

Die beabsichtigte Verwendung für tief geklonte Pakete in WFP besteht darin, Eine Klärung durch eine Anwendung im Benutzermodus oder einen anderen relativ schnellen Vorgang zu erhalten, der ein paketunabhängiges vom Original benötigt. Der Legendentreiber darf keine geklonten Pakete enthalten, während er auf Benutzereingaben, Webdienstfreigaben oder andere Vorgänge wartet, die eine beliebige Zeit in Anspruch nehmen können.

Legendentreiber sollten gehaltene Pakete immer so schnell wie möglich zurückgeben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) WIP-Build 25324
Zielplattform Universell
Header fwpsk.h (include fwpsk.h)
Bibliothek Fwpkclnt.lib
IRQL <= DISPATCH_LEVEL

Weitere Informationen

FwpsFreeCloneNetBufferList0

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

Paketeinschleusungsfunktionen