Freigeben über


FwpsAllocateCloneNetBufferList0-Funktion (fwpsk.h)

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

HinweisFwpsAllocateCloneNetBufferList0 ist eine bestimmte Version von FwpsAllocateCloneNetBufferList. Weitere Informationen finden Sie unter WFP-Version-Independent Namen und Spezifische Windows-Versionen .
 

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
STATUS_SUCCESS
Die Klonstruktur NET_BUFFER_LIST wurde erfolgreich zugeordnet.
Andere status Codes
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

Weitere Informationen

FwpsFreeCloneNetBufferList0

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

Paketeinschleusungsfunktionen