已複製的 NET_BUFFER_LIST 結構體
NDIS 驅動程式會從現有的NET_BUFFER_LIST結構建立複製的 NET_BUFFER_LIST 結構。 複製的結構會參考原始結構數據。 驅動程式可以使用這種類型的結構,有效率地將相同的數據傳送至多個路徑。
下圖顯示父NET_BUFFER_LIST結構與複製子結構之間的關聯性。
上圖包含父 NET_BUFFER_LIST 結構和衍生自該父系的子結構。 父結構具有一個 NET_BUFFER_LIST_CONTEXT 結構和一個附加 MDL 的 NET_BUFFER 結構。 父結構的父指標 NULL 表示它不是衍生結構。
子 NET_BUFFER_LIST 結構中包含附有 MDL 的一個 NET_BUFFER 結構。 子系NET_BUFFER_LIST具有指向父結構體的指標。 NULL,其中NET_BUFFER_LIST_CONTEXT結構指標表示子系沒有NET_BUFFER_LIST_CONTEXT結構。
驅動程式會呼叫 NdisAllocateCloneNetBufferList 函式來建立複製 NET_BUFFER_LIST 結構。 NDIS 會配置帶有複製 NET_BUFFER_LIST 結構的新 NET_BUFFER 結構和 MDL。 NDIS 不會為複製的結構配置 NET_BUFFER_LIST_CONTEXT 結構。 新的NET_BUFFER結構和 MDL 會描述與父結構相同的數據。 數據不會複製。
驅動程式會呼叫 NdisFreeCloneNetBufferList 函式,以釋放NET_BUFFER_LIST結構和先前透過呼叫 NdisAllocateCloneNetBufferList所配置的所有相關NET_BUFFER結構和 MDL 鏈結。