Udostępnij przez


Zarządzanie buforami sterownika protokołu

Sterownik protokołu musi zarządzać pulami struktury NET_BUFFER_LIST i pulami struktury NET_BUFFER na potrzeby operacji wysyłania. Aby utworzyć te pule, sterowniki wywołają następujące funkcje:

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

Sterowniki protokołów mogą używać następujących funkcji do przydzielania struktur z pul:

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisAllocateNetBuffer

Wywoływanie NdisAllocateNetBufferAndNetBufferList jest bardziej wydajne niż wywoływanie NdisAllocateNetBufferList, następnie NdisAllocateNetBuffer. Jednak NdisAllocateNetBufferAndNetBufferList tworzy tylko jedną strukturę NET_BUFFER w strukturze NET_BUFFER_LIST. Aby użyć NdisAllocateNetBufferAndNetBufferList, sterownik musi ustawić parametr AllocateNetBuffer, aby true, gdy wywołuje NdisAllocateNetBufferListPool.

Sterowniki protokołów mogą używać żądań OID do wykonywania zapytań dotyczących uzupełniania wstecznego i wymagań dotyczących przestrzeni kontekstowej sterowników podstawowych. Sterownik protokołu powinien określić wymagania dotyczące wypełniania wstecznego i kontekstu dla powiązania w stanach Otwierania lub Ponownego uruchamiania. Sterownik powinien przydzielić wystarczającą ilość miejsca na wypełnienie wsteczne i miejsce kontekstowe dla całego stosu. W razie potrzeby sterownik protokołu może zwolnić pule i przydzielić je na nowo w stanie Ponowne uruchamianie.

Sterowniki protokołów używają następujących funkcji, aby zwolnić pule:

NdisFreeNetBufferListPool

NdisFreeNetBufferPool.

Sterowniki protokołów używają następujących funkcji, aby zwolnić struktury przydzielone z pul:

NdisFreeNetBufferList

NdisFreeNetBuffer

Programiści powinni zwolnić struktury NET_BUFFER przydzielone za pomocą NdisAllocateNetBuffer przed zwolnieniem skojarzonej struktury NET_BUFFER_LIST. NET_BUFFER struktury przydzielone za pomocą NdisAllocateNetBufferAndNetBufferList są zwalniane, gdy sterownik wywołuje NdisFreeNetBufferList dla skojarzonej struktury NET_BUFFER_LIST.