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, das von einem Aufruf des abgerufen wurde NdisAllocateNetBufferListPool-Funktion .

[in, optional] NetBufferPoolHandle

Ein NET_BUFFER Strukturpoolhandle, das zuvor von einem Aufruf von 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, ordnet 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, ordnet NDIS neue MDLs zu, um auf die ursprünglichen Datenpuffer zu verweisen.

Rückgabewert

NdisAllocateCloneNetBufferList gibt einen Zeiger auf die neue Klonstruktur NET_BUFFER_LIST zurück. Wenn die Zuordnung nicht erfolgreich war, ist dieser Zeiger NULL.

Hinweise

Rufen Sie NdisAllocateCloneNetBufferList auf, um einen Klon NET_BUFFER_LIST Struktur zu erstellen, mit der Sie doppelte Daten über einen 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. Verwenden Sie das Makro NET_BUFFER_DATA_OFFSET , um den Offset vom Anfang des Datenbereichs bis zum Anfang des verwendeten Datenbereichs abzurufen.

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

Die Klon-NET_BUFFER_LIST-Struktur beschreibt die gleichen Daten, die in der NET_BUFFER_LIST-Struktur unter OriginalNetBufferList beschrieben 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. 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 frei zu geben, die durch Aufrufen von NdisAllocateCloneNetBufferList zugeordnet wurden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Universell
Header ndis/nblapi.h (include 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