Sdílet prostřednictvím


Znovu sestavit struktury NET_BUFFER_LIST

Ovladač NDIS může vytvořit z existující struktury NET_BUFFER_LIST nově sestavenou strukturu NET_BUFFER_LIST. Znovu sestavená struktura odkazuje na původní data z více zdrojových NET_BUFFER struktur. Ovladače mohou tento typ struktury použít k efektivnímu kombinování mnoha menších vyrovnávacích pamětí do jedné velké vyrovnávací paměti.

Následující obrázek znázorňuje vztah mezi nadřazenou NET_BUFFER_LIST strukturou a znovu sestavenou podřízenou strukturou:

diagram znázorňující vztah mezi nadřazenou NET_BUFFER_LIST strukturou a znovu sestavenou podřízenou strukturou

Předchozí obrázek obsahuje nadřazenou strukturu NET_BUFFER_LIST a podřízenou strukturu, která je odvozena z této nadřazené struktury. Nadřazená struktura má jednu strukturu NET_BUFFER_LIST_CONTEXT a tři struktury NET_BUFFER s připojenými MDL. Nadřazená struktura má ukazatel NULL, což naznačuje, že se nejedná o odvozenou strukturu.

Podřízená struktura NET_BUFFER_LIST má jednu strukturu NET_BUFFER s připojenými MDL. Podřízená NET_BUFFER_LIST struktura má ukazatel na nadřazenou strukturu. NULL znamená, že ukazatel struktury NET_BUFFER_LIST_CONTEXT by naznačoval, že dítě nemá žádnou strukturu NET_BUFFER_LIST_CONTEXT.

Ovladače NDIS volají funkci NdisAllocateReassembledNetBufferList pro opětovné sestavení fragmentované struktury NET_BUFFER_LIST. NDIS přiděluje novou strukturu NET_BUFFER a MDLs se znovu sestavenou strukturou NET_BUFFER_LIST. NDIS nepřiděluje NET_BUFFER_LIST_CONTEXT strukturu pro znovu sestavenou strukturu. Znovu sestavená struktura NET_BUFFER a seznamy MDL popisují stejná data jako nadřazená struktura. Data se nekopírují.

Pokud chcete vytvořit zrekonstruovanou strukturu NET_BUFFER_LIST, NdisAllocateReassembledNetBufferList přeskočí počet bajtů zadaných v parametru StartOffset v každé nadřazené NET_BUFFER struktuře. NdisAllocateReassembledNetBufferList zřetězí zbývající data v každé nadřazené NET_BUFFER struktuře do řetězu MDL jedné znovu sestavené NET_BUFFER struktury. NdisAllocateReassembledNetBufferList uvolňuje (zvyšuje využitý datový prostor) struktury reassembled NET_BUFFER o množství zadané v DataOffsetDelta .

Ovladače NDIS volají funkci NdisFreeReassembledNetBufferList, která uvolní znovu seskupenou strukturu NET_BUFFER_LIST a přidruženou strukturu NET_BUFFER a řetěz MDL.

odvozené struktury NET_BUFFER_LIST