Opnieuw geassembleerde NET_BUFFER_LIST-structuren
Een NDIS-stuurprogramma kan een opnieuw opgebouwde NET_BUFFER_LIST structuur maken op basis van een bestaande NET_BUFFER_LIST structuur. De opnieuw opgebouwde structuur verwijst naar de oorspronkelijke gegevens uit meerdere bron-NET_BUFFER structuren. Stuurprogramma's kunnen dit type structuur gebruiken om veel kleinere buffers efficiënt te combineren in één grote buffer.
Het volgende figuur toont de relatie tussen een bovenliggende NET_BUFFER_LIST-structuur en een herstelde onderliggende structuur.
De voorgaande afbeelding bevat een bovenliggende structuur NET_BUFFER_LIST en een onderliggende structuur die is afgeleid van die bovenliggende structuur. De bovenliggende structuur heeft één NET_BUFFER_LIST_CONTEXT structuur en drie NET_BUFFER structuren waaraan MDL's zijn gekoppeld. De ouderaanwijzer van de bovenliggende structuur is NULL, wat aangeeft dat het geen afgeleide structuur is.
De onderliggende NET_BUFFER_LIST-structuur heeft een NET_BUFFER-structuur waaraan MDL's zijn gekoppeld. De onderliggende NET_BUFFER_LIST structuur heeft een aanwijzer naar de bovenliggende structuur. De NULL- waarbij een NET_BUFFER_LIST_CONTEXT structuurpointer aangeeft dat het onderliggende element geen NET_BUFFER_LIST_CONTEXT structuur heeft.
NDIS-stuurprogramma's roepen de functie NdisAllocateReassembledNetBufferList aan om een gefragmenteerde NET_BUFFER_LIST-structuur opnieuw samen te plaatsen. NDIS wijst een nieuwe NET_BUFFER structuur en MDL's toe met de opnieuw opgebouwde NET_BUFFER_LIST-structuur. NDIS wijst geen NET_BUFFER_LIST_CONTEXT structuur toe voor de opnieuw opgebouwde structuur. De opnieuw opgebouwde NET_BUFFER structuur en MDL's beschrijven dezelfde gegevens als de bovenliggende structuur. De gegevens worden niet gekopieerd.
Als u de herassembled NET_BUFFER_LIST-structuur wilt maken, slaat NdisAllocateReassembledNetBufferList het aantal bytes over dat is opgegeven in de parameter StartOffset in elk van de bovenliggende NET_BUFFER structuren. NdisAllocateReassembledNetBufferList voegt de resterende gegevens in elke bovenliggende NET_BUFFER structuur samen in de MDL-keten van één opnieuw samengevoegde NET_BUFFER structuur. NdisAllocateReassembledNetBufferList trekt zich terug (verhoogt de gebruikte gegevensruimte in) de opnieuw opgebouwde NET_BUFFER-structuur met het in DataOffsetDelta gespecificeerde aantal.
NDIS-stuurprogramma's roepen de functie NdisFreeReassembledNetBufferList aan om een opnieuw opgebouwde NET_BUFFER_LIST structuur en de bijbehorende NET_BUFFER structuur en MDL-keten vrij te maken.