Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Sterownik NDIS może utworzyć strukturę NET_BUFFER_LIST ponownie zmontowaną z istniejącej struktury NET_BUFFER_LIST. Ponownie zmontowana struktura odwołuje się do oryginalnych danych z wielu źródłowych struktur NET_BUFFER. Sterowniki mogą używać tego rodzaju struktury do efektywnego łączenia wielu mniejszych buforów w jeden duży bufor.
Na poniższej ilustracji przedstawiono relację między strukturą NET_BUFFER_LIST nadrzędną a ponownie zmontowaną 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 trzy struktury NET_BUFFER z dołączonymi listami MDL. Wskaźnik nadrzędny struktury rodzica jest NULL, co wskazuje, że nie jest to struktura pochodna.
Struktura NET_BUFFER_LIST podrzędna ma jedną strukturę NET_BUFFER z dołączonymi listami MDL. Struktura NET_BUFFER_LIST podrzędna ma wskaźnik do struktury nadrzędnej. NULL, gdzie wskaźnik struktury NET_BUFFER_LIST_CONTEXT sugeruje, że element podrzędny nie ma struktury NET_BUFFER_LIST_CONTEXT.
Sterowniki NDIS wywołują funkcję NdisAllocateReassembledNetBufferList, aby ponownie złożyć fragmentowaną strukturę NET_BUFFER_LIST. Usługa NDIS przydziela nową strukturę NET_BUFFER i listy MDL-ów z ponownie złożoną strukturą NET_BUFFER_LIST. NDIS nie przydziela struktury NET_BUFFER_LIST_CONTEXT dla ponownie zmontowanej struktury. Ponownie zmontowana struktura NET_BUFFER i listy MDL opisują te same dane, co struktura nadrzędna. Dane nie są kopiowane.
Aby utworzyć ponownie złożoną strukturę NET_BUFFER_LIST, NdisAllocateReassembledNetBufferList pomija liczbę bajtów określoną w parametrze StartOffset w każdej strukturze NET_BUFFER nadrzędnej. NdisAllocateReassembledNetBufferList łączy pozostałe dane w strukturach nadrzędnych NET_BUFFER w łańcuch MDL jednej ponownie zmontowanej struktury NET_BUFFER. NdisAllocateReassembledNetBufferList wycofuje się (zwiększa używaną przestrzeń danych w) ponownie złożonej strukturze NET_BUFFER o wartość określoną w DataOffsetDelta .
Sterowniki NDIS wywołują funkcję NdisFreeReassembledNetBufferList, aby zwolnić ponownie zmontowaną strukturę NET_BUFFER_LIST oraz powiązaną strukturę NET_BUFFER i łańcuch MDL.