Strutture di NET_BUFFER_LIST clonate
Un driver NDIS crea una struttura NET_BUFFER_LIST clonata da una struttura di NET_BUFFER_LIST esistente. La struttura clonata fa riferimento ai dati delle strutture originali. I driver possono usare questo tipo di struttura per trasferire in modo efficiente gli stessi dati in più percorsi.
Nella figura seguente viene illustrata la relazione tra una struttura padre NET_BUFFER_LIST e una struttura figlio clonata.
La figura precedente contiene una struttura padre NET_BUFFER_LIST e una struttura figlio derivata da tale padre. La struttura padre ha una struttura NET_BUFFER_LIST_CONTEXT e una struttura NET_BUFFER con gli elenchi di dati associato. Il puntatore padre della struttura padre è NULL che indica che non è una struttura derivata.
La struttura dell'NET_BUFFER_LIST figlio ha una struttura NET_BUFFER con mdls collegati. Il NET_BUFFER_LIST figlio ha un puntatore alla struttura padre. Null in cui un puntatore alla struttura NET_BUFFER_LIST_CONTEXT indica che l'elemento figlio non ha alcuna struttura NET_BUFFER_LIST_CONTEXT.
I driver chiamano la funzione NdisAllocateCloneNetBufferList per creare una struttura di NET_BUFFER_LIST clone. NDIS alloca nuove strutture NET_BUFFER e MDLs con la struttura NET_BUFFER_LIST clonata. NDIS non alloca una struttura NET_BUFFER_LIST_CONTEXT per la struttura clonata. Le nuove strutture NET_BUFFER e gli ELENCHI di dati descrivono gli stessi dati della struttura padre. I dati non sono stati copiati.
I driver chiamano la funzione NdisFreeCloneNetBufferList per liberare una struttura NET_BUFFER_LIST e tutte le strutture NET_BUFFER associate e le catene MDL allocate in precedenza chiamando NdisAllocateCloneNetBufferList.