Freigeben über


NdisAllocateCloneNetBufferList-Funktion (ndis/nblapi.h)

Rufen Sie die NdisAllocateCloneNetBufferList Funktion 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, das von einem Anruf an den NdisAllocateNetBufferListPool Funktion.

[in, optional] NetBufferPoolHandle

Ein NET_BUFFER Strukturpoolhandle, das zuvor von einem Aufruf an 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 Kennzeichen festgelegt ist, weist NDIS keine neuen MDLs für die geklonte NET_BUFFER_LISTzu. 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 einen Klon NET_BUFFER_LIST Struktur zu erstellen, mit der Sie doppelte Daten in einem separaten Datenpfad senden können.

Jede NET_BUFFER Struktur in der ursprünglichen NET_BUFFER_LIST Struktur wird nur vom Anfang des verwendeten Datenbereichs geklont, nicht vom Anfang des gesamten Datenbereichs. Um den Offset vom Anfang des Datenbereichs bis zum Anfang des verwendeten Datenbereichs abzurufen, verwenden Sie das NET_BUFFER_DATA_OFFSET Makro.

Wenn die geklonte NET_BUFFER_LIST Struktur Attribute aufweisen soll, die einem bestimmten Pool zugeordnet sind, muss der Aufrufer den Poolhandle im NetBufferListPoolHandle- oder NetBufferPoolHandle Parameter angeben. Das ProtocolType- Mitglied der NET_BUFFER_LIST Struktur ist beispielsweise dem Pool zugeordnet.

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

Rufen Sie die NdisFreeCloneNetBufferList Funktion zum Freigeben einer NET_BUFFER_LIST Struktur und aller zugeordneten Strukturen und MDL-Ketten, die durch Aufrufen NdisAllocateCloneNetBufferListzugeordnet wurden.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in NDIS 6.0 und höher.
Zielplattform- Universal
Header- ndis/nblapi.h (include ndis.h)
Library Ndis.lib
IRQL- <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_NetBuffer_Function(ndis), NdisAllocateCloneNetBufferList(ndis), NdisAllocateCloneNetBufferList_InitFail(ndis)

Siehe auch

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeCloneNetBufferList