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