Condividi tramite


Strutture NET_BUFFER_LIST riassemblate

Un driver NDIS può creare una struttura NET_BUFFER_LIST riassemblata da una struttura NET_BUFFER_LIST esistente. La struttura riassemblata fa riferimento ai dati originali di più strutture di origine NET_BUFFER. I driver possono usare questo tipo di struttura per combinare in modo efficiente molti buffer più piccoli in un singolo buffer di grandi dimensioni.

Nella figura seguente viene illustrata la relazione tra una struttura padre NET_BUFFER_LIST e una struttura figlio riassemblata:

Diagramma che illustra la relazione tra una struttura padre NET_BUFFER_LIST e una struttura figlia riassemblata.

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 tre strutture NET_BUFFER con MDLs collegati. Il puntatore padre della struttura genitore è NULL, il che indica che non è una struttura derivata.

La struttura figlia NET_BUFFER_LIST include una struttura NET_BUFFER con MDL collegati. La struttura NET_BUFFER_LIST figlio ha un puntatore alla struttura padre. Il NULL, dove ci sarebbe un puntatore alla struttura NET_BUFFER_LIST_CONTEXT, indica che il figlio non ha una struttura NET_BUFFER_LIST_CONTEXT.

I driver NDIS chiamano la funzione NdisAllocateReassembledNetBufferList per riassemblare una struttura NET_BUFFER_LIST frammentata. NDIS alloca una nuova struttura NET_BUFFER e MDLs con la struttura NET_BUFFER_LIST riassemblata. NDIS non alloca una struttura NET_BUFFER_LIST_CONTEXT per la struttura riassemblata. La struttura NET_BUFFER riassemblata e i MDL descrivono gli stessi dati come fa la struttura padre. I dati non sono stati copiati.

Per creare la struttura NET_BUFFER_LIST ricomposta, NdisAllocateReassembledNetBufferList ignora il numero di byte specificati nel parametro StartOffset in ogni struttura NET_BUFFER padre. NdisAllocateReassembledNetBufferList concatena i dati rimanenti in ogni struttura NET_BUFFER padre nella catena MDL di una struttura NET_BUFFER riassemblata. NdisAllocateReassembledNetBufferList ritrae (aumenta lo spazio di dati utilizzato nella) struttura NET_BUFFER riassemblata in base alla quantità specificata in DataOffsetDelta.

I driver NDIS chiamano la funzione NdisFreeReassembledNetBufferList per liberare una struttura NET_BUFFER_LIST riassemblata e la struttura NET_BUFFER associata e la catena MDL.

strutture NET_BUFFER_LIST derivate