Sdílet prostřednictvím


Klonované struktury NET_BUFFER_LIST

Ovladač NDIS vytvoří klonovanou strukturu NET_BUFFER_LIST z existující struktury NET_BUFFER_LIST. Klonovaná struktura odkazuje na původní data struktur. Ovladače mohou tento typ struktury použít k efektivnímu přenosu stejných dat do více cest.

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

Diagram znázorňující vztah mezi nadřazenou strukturou NET_BUFFER_LIST a její naklonovanou podřízenou strukturou

Předchozí obrázek obsahuje nadřazenou strukturu NET_BUFFER_LIST a podřízenou strukturu, která byla odvozená z této nadřazené struktury. Nadřazená struktura má jednu NET_BUFFER_LIST_CONTEXT strukturu a jednu NET_BUFFER strukturu s připojenými MDL. Nadřazený ukazatel struktury je NULL, což značí, ž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 má ukazatel na nadřazenou strukturu. NULL, kde ukazatel struktury NET_BUFFER_LIST_CONTEXT by značil, že podřízená položka nemá žádnou NET_BUFFER_LIST_CONTEXT strukturu.

Ovladače volají funkci NdisAllocateCloneNetBufferList k vytvoření klonu struktury NET_BUFFER_LIST. NDIS přiděluje nové struktury NET_BUFFER a MDLs s klonovanou strukturou NET_BUFFER_LIST. NDIS nepřiděluje NET_BUFFER_LIST_CONTEXT strukturu pro klonovanou strukturu. Struktury NET_BUFFER a MDL popisují stejná data jako v nadřazené struktuře. Data se nekopírují.

Řidiči volají funkci NdisFreeCloneNetBufferList k uvolnění struktury NET_BUFFER_LIST a všech přidružených struktur NET_BUFFER a řetězců MDL, které byly dříve přiděleny prostřednictvím volání NdisAllocateCloneNetBufferList.

Odvozené NET_BUFFER_LIST Struktury