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