Udostępnij za pośrednictwem


Sklonowane struktury NET_BUFFER_LIST

Sterownik NDIS tworzy sklonowaną strukturę NET_BUFFER_LIST na podstawie istniejącej struktury NET_BUFFER_LIST. Sklonowana struktura odwołuje się do oryginalnych danych struktur. Sterowniki mogą używać tego typu struktury do wydajnego przesyłania tych samych danych do wielu ścieżek.

Na poniższej ilustracji przedstawiono relację między strukturą NET_BUFFER_LIST nadrzędną a strukturą podrzędną będącą klonem.

Diagram przedstawiający relację między strukturą NET_BUFFER_LIST nadrzędną a sklonowaną strukturą podrzędną.

Powyższy rysunek zawiera strukturę NET_BUFFER_LIST nadrzędną i strukturę podrzędną, która została utworzona na podstawie tego elementu nadrzędnego. Struktura nadrzędna ma jedną strukturę NET_BUFFER_LIST_CONTEXT i jedną strukturę NET_BUFFER z dołączonymi MDL-ami. Wskaźnik rodzica struktury nadrzędnej ma wartość NULL, wskazując, że nie jest to struktura pochodna.

Struktura NET_BUFFER_LIST podrzędna ma jedną strukturę NET_BUFFER z dołączonymi listami MDL. Element podrzędny NET_BUFFER_LIST ma wskaźnik do struktury nadrzędnej. NULL, gdzie wskaźnik struktury NET_BUFFER_LIST_CONTEXT normalnie by się znajdował, wskazuje, że element podrzędny nie ma struktury NET_BUFFER_LIST_CONTEXT.

Sterowniki wywołują funkcję NdisAllocateCloneNetBufferList, aby utworzyć klon struktury NET_BUFFER_LIST. Usługa NDIS przydziela nowe struktury NET_BUFFER i listy MDL z sklonowaną strukturą NET_BUFFER_LIST. NDIS nie przydziela struktury NET_BUFFER_LIST_CONTEXT dla sklonowanej struktury. Nowe struktury NET_BUFFER i listy MDL opisują te same dane co w strukturze nadrzędnej. Dane nie są kopiowane.

Sterowniki wywołują funkcję NdisFreeCloneNetBufferList, aby zwolnić strukturę NET_BUFFER_LIST oraz wszystkie powiązane struktury NET_BUFFER i łańcuchy MDL, które zostały wcześniej przydzielone poprzez wywołanie NdisAllocateCloneNetBufferList.

pochodne struktury NET_BUFFER_LIST