Freigeben über


Neu zusammengesetzte NET_BUFFER_LIST Strukturen

Ein NDIS-Treiber kann eine neu zusammengesetzte NET_BUFFER_LIST-Struktur aus einer vorhandenen NET_BUFFER_LIST-Struktur erstellen. Die neu zusammengesetzte Struktur verweist auf die ursprünglichen Daten aus mehreren Quellstrukturen NET_BUFFER . Treiber können diese Art von Struktur verwenden, um viele kleinere Puffer effizient in einem einzelnen großen Puffer zu kombinieren.

Die folgende Abbildung zeigt die Beziehung zwischen einer übergeordneten NET_BUFFER_LIST-Struktur und einer neu zusammengesetzten untergeordneten Struktur:

Diagramm, das die Beziehung zwischen einer übergeordneten NET_BUFFER_LIST-Struktur und einer neu zusammengesetzten untergeordneten Struktur veranschaulicht.

Die obige Abbildung enthält eine übergeordnete NET_BUFFER_LIST-Struktur und eine untergeordnete Struktur, die von diesem übergeordneten Element abgeleitet wurde. Die übergeordnete Struktur verfügt über eine NET_BUFFER_LIST_CONTEXT-Struktur und drei NET_BUFFER-Strukturen mit angefügten MDLs. Der übergeordnete Zeiger der übergeordneten Struktur ist NULL , was angibt, dass es sich nicht um eine abgeleitete Struktur handelt.

Die untergeordnete NET_BUFFER_LIST-Struktur verfügt über eine NET_BUFFER-Struktur mit angefügten MDLs. Die untergeordnete NET_BUFFER_LIST-Struktur verfügt über einen Zeiger auf die übergeordnete Struktur. Der NULL-Wert , bei dem ein NET_BUFFER_LIST_CONTEXT-Strukturzeiger sein würde, gibt an, dass das untergeordnete Element über keine NET_BUFFER_LIST_CONTEXT Struktur verfügt.

NDIS-Treiber rufen die NdisAllocateReassembledNetBufferList-Funktion auf, um eine fragmentierte NET_BUFFER_LIST-Struktur neu zusammenzufassen. NDIS ordnet eine neue NET_BUFFER-Struktur und MDLs der neu zusammengesetzten NET_BUFFER_LIST-Struktur zu. NDIS weist keine NET_BUFFER_LIST_CONTEXT-Struktur für die neu zusammengesetzte Struktur zu. Die neu zusammengesetzte NET_BUFFER Struktur und MDLs beschreiben die gleichen Daten wie die übergeordnete Struktur. Die Daten werden nicht kopiert.

Um die neu zusammengesetzte NET_BUFFER_LIST-Struktur zu erstellen, überspringt NdisAllocateReassembledNetBufferList die Anzahl von Bytes, die im StartOffset-Parameter in jeder übergeordneten NET_BUFFER-Struktur angegeben ist. NdisAllocateReassembledNetBufferList verkettet die verbleibenden Daten in jeder übergeordneten NET_BUFFER-Struktur in der MDL-Kette einer neu zusammengesetzten NET_BUFFER-Struktur. NdisAllocateReassembledNetBufferList zieht die neu zusammengesetzte NET_BUFFER Struktur um den in DataOffsetDelta angegebenen Betrag zurück (vergrößert den verwendeten Datenbereich in).

NDIS-Treiber rufen die NdisFreeReassembledNetBufferList-Funktion auf, um eine neu zusammengesetzte NET_BUFFER_LIST-Struktur und die zugeordnete NET_BUFFER-Struktur und MDL-Kette frei zu geben.

Abgeleitete NET_BUFFER_LIST-Strukturen