NdisAllocateCloneNetBufferList-Funktion (ndis/nblapi.h)

Rufen Sie die Funktion NdisAllocateCloneNetBufferList auf, um einen neuen Klon NET_BUFFER_LIST Struktur zu erstellen.

Syntax

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateCloneNetBufferList(
  [in]           NET_BUFFER_LIST *OriginalNetBufferList,
  [in, optional] NDIS_HANDLE     NetBufferListPoolHandle,
  [in, optional] NDIS_HANDLE     NetBufferPoolHandle,
  [in]           ULONG           AllocateCloneFlags
);

Parameter

[in] OriginalNetBufferList

Ein Zeiger auf eine vorhandene NET_BUFFER_LIST Struktur.

[in, optional] NetBufferListPoolHandle

Ein Handle, der von einem Aufruf an den NdisAllocateNetBufferListPool-Funktion .

[in, optional] NetBufferPoolHandle

Ein NET_BUFFER Strukturpool-Handle, der zuvor von einem Aufruf an zurückgegeben wurde NdisAllocateNetBufferPool.

[in] AllocateCloneFlags

NDIS-Flags, die mit einem OR-Vorgang kombiniert werden können. Die folgenden Flags sind definiert:

NDIS_CLONE_FLAGS_RESERVED

Reserviert für NDIS.

NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS

Wenn dieses Flag festgelegt ist, weist NDIS keine neuen MDLs für die geklonte NET_BUFFER_LIST zu. Stattdessen verwendet die geklonte NET_BUFFER_LIST dieselbe MDL-Kette wie die ursprüngliche NET_BUFFER_LIST. Wenn NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS gelöscht wird, weist NDIS neue MDLs zu, um auf die ursprünglichen Datenpuffer zu verweisen.

Rückgabewert

NdisAllocateCloneNetBufferList gibt einen Zeiger auf den neuen Klon NET_BUFFER_LIST Struktur zurück. Wenn die Zuordnung nicht erfolgreich war, ist dieser Zeiger NULL.

Bemerkungen

Rufen Sie NdisAllocateCloneNetBufferList auf, um eine Klon-NET_BUFFER_LIST Struktur zu erstellen, mit der Sie doppelte Daten auf einem separaten Datenpfad senden können.

Jede NET_BUFFER Struktur in der ursprünglichen NET_BUFFER_LIST Struktur wird nur vom Anfang des verwendeten Datenraums geklont, nicht der Anfang des gesamten Datenraums. Verwenden Sie zum Abrufen des Offsets vom Anfang des Datenraums zum Anfang des verwendeten Datenraums das NET_BUFFER_DATA_OFFSET-Makro .

Wenn die geklonte NET_BUFFER_LIST-Struktur Attribute aufweisen sollte, die einem bestimmten Pool zugeordnet sind, muss der Aufrufer den Poolhandpunkt im NetBufferListPoolHandle- oder NetBufferPoolHandle-Parameter angeben. Das ProtokollType-Element der NET_BUFFER_LIST-Struktur ist beispielsweise dem Pool zugeordnet.

Der Klon NET_BUFFER_LIST Struktur beschreibt die gleichen Daten, die von der NET_BUFFER_LIST Struktur bei OriginalNetBufferList beschrieben werden. NDIS kopiert die Daten nicht, die von den ursprünglichen MDLs in neue Datenpuffer beschrieben werden. Stattdessen verweisen die geklonten Strukturen auf die ursprünglichen Datenpuffer. Die Klon-NET_BUFFER_LIST-Struktur enthält keine anfängliche NET_BUFFER_LIST_CONTEXT Struktur.

Rufen Sie die folgenden NdisFreeCloneNetBufferList-Funktion , um eine NET_BUFFER_LIST Struktur und alle zugeordneten Strukturen und MDL-Ketten freizulösen, die durch Aufrufen von NdisAllocateCloneNetBufferList zugewiesen wurden.

Anforderungen

   
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Universell
Header ndis/nblapi.h (einschließlich ndis.h)
Bibliothek Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_NetBuffer_Function(ndis), NdisAllocateCloneNetBufferList(ndis), NdisAllocateCloneNetBufferList_InitFail(ndis)

Weitere Informationen

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeCloneNetBufferList