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) |