Condividi tramite


Strutture 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.

Diagramma che mostra la relazione tra una struttura padre NET_BUFFER_LIST e la relativa struttura figlia 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 MDLs collegate. Il puntatore padre della struttura padre è NULL che indica che non è una struttura derivata.

La struttura figlia NET_BUFFER_LIST ha una struttura NET_BUFFER con i MDL collegati. Il NET_BUFFER_LIST child ha un puntatore alla struttura padre. Il NULL, dove ci sarebbe un puntatore alla struttura NET_BUFFER_LIST_CONTEXT, indica che l'elemento figlio non ha una struttura NET_BUFFER_LIST_CONTEXT.

I driver chiamano la funzione NdisAllocateCloneNetBufferList per creare un clone della struttura NET_BUFFER_LIST. NDIS alloca nuove strutture NET_BUFFER e MDL 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 mdls 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 precedentemente allocate chiamando NdisAllocateCloneNetBufferList.

strutture NET_BUFFER_LIST derivate