Condividi tramite


Funzione NdisAllocateCloneNetBufferList (ndis/nblapi.h)

Chiamare la funzione NdisAllocateCloneNetBufferList per creare una nuova struttura di clonazione NET_BUFFER_LIST .

Sintassi

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

Parametri

[in] OriginalNetBufferList

Puntatore a una struttura NET_BUFFER_LIST esistente.

[in, optional] NetBufferListPoolHandle

Handle ottenuto da una chiamata all'oggetto Funzione NdisAllocateNetBufferListPool .

[in, optional] NetBufferPoolHandle

Handle del pool di strutture NET_BUFFER restituito in precedenza da una chiamata a NdisAllocateNetBufferPool.

[in] AllocateCloneFlags

Flag NDIS che possono essere combinati con un'operazione OR. I flag seguenti sono definiti:

NDIS_CLONE_FLAGS_RESERVED

Riservato per NDIS.

NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS

Se questo flag è impostato, NDIS non alloca nuovi MDLs per il NET_BUFFER_LIST clonato. Il NET_BUFFER_LIST clonato usa invece la stessa catena MDL dell'NET_BUFFER_LIST originale. Se NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS viene cancellato, NDIS alloca nuovi MDL per fare riferimento ai buffer di dati originali.

Valore restituito

NdisAllocateCloneNetBufferList restituisce un puntatore alla nuova struttura di NET_BUFFER_LIST clonazione. Se l'allocazione non è riuscita, questo puntatore è NULL.

Commenti

Chiamare NdisAllocateCloneNetBufferList per creare una struttura di clonazione NET_BUFFER_LIST che è possibile usare per inviare dati duplicati in un percorso di dati separato.

Ogni struttura NET_BUFFER nella struttura NET_BUFFER_LIST originale viene clonata solo dall'inizio dello spazio dati usato, non dall'inizio dell'intero spazio dati. Per ottenere l'offset dall'inizio dello spazio dati all'inizio dello spazio dati usato, usare la macro NET_BUFFER_DATA_OFFSET .

Se la struttura di NET_BUFFER_LIST clonata deve avere attributi associati a un determinato pool, il chiamante deve specificare l'handle del pool nel parametro NetBufferListPoolHandle o NetBufferPoolHandle. Ad esempio, il membro ProtocolType della struttura NET_BUFFER_LIST è associato al pool.

La struttura di clonazione NET_BUFFER_LIST descrive gli stessi dati descritti dalla struttura NET_BUFFER_LIST in OriginalNetBufferList. NDIS non copia i dati descritti dagli MDLs originali in nuovi buffer di dati. Le strutture clonate fanno invece riferimento ai buffer di dati originali. La struttura di clonazione NET_BUFFER_LIST non include un'inizializzazione NET_BUFFER_LIST_CONTEXT struttura.

Chiamare l'oggetto Funzione NdisFreeCloneNetBufferList per liberare una struttura NET_BUFFER_LIST e tutte le strutture associate e le catene MDL allocate chiamando NdisAllocateCloneNetBufferList.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Universale
Intestazione ndis/nblapi.h (include ndis.h)
Libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI Irql_NetBuffer_Function(ndis), NdisAllocateCloneNetBufferList(ndis), NdisAllocateCloneNetBufferList_InitFail(ndis)

Vedi anche

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeCloneNetBufferList