Sdílet prostřednictvím


Správa vyrovnávací paměti miniportních ovladačů

Ovladače miniportu obvykle volají NdisAllocateNetBufferListPool z MiniportInitializeEx ke vytvoření fondu struktur NET_BUFFER_LIST. Ovladače miniportu používají tyto struktury k označení přijatých dat.

Ovladač miniportu, který přiděluje strukturu NET_BUFFER_LIST, obvykle přidělí a zařadí jednu strukturu NET_BUFFER do této struktury NET_BUFFER_LIST. Při přidělování fondu struktur NET_BUFFER_LIST je efektivnější předem alokovat struktury NET_BUFFER, než přidělovat struktury NET_BUFFER_LIST a struktury NET_BUFFER samostatně.

Ovladače miniportu mohou volat NdisAllocateNetBufferListPool a nastavit parametr AllocateNetBuffer na TRUE, aby označily, že struktury NET_BUFFER jsou předem přiděleny. V tomto případě je struktura NET_BUFFER předem přidělena ke každé struktuře NET_BUFFER_LIST, kterou ovladač přiděluje z paměťového fondu. Tyto ovladače musí volat NdisAllocateNetBufferAndNetBufferList pro přidělování struktur z tohoto fondu.

Ovladač miniportu obvykle volá NdisAllocateNetBufferAndNetBufferList z MiniportInitializeEx, aby přidělil tolik vyrovnávacích pamětí, kolik bude vyžadovat pro následné operace příjmu. V tomto případě ovladač spravuje interní seznam volných vyrovnávacích pamětí.

Funkce MiniportReturnNetBufferLists může připravit vrácenou strukturu NET_BUFFER_LIST pro opakované použití v následné indikaci příjmu. I když MiniportReturnNetBufferLists by mohl vrátit struktury NET_BUFFER_LIST do fondu (například by mohl volat NdisFreeNetBufferList), je efektivnější opakovaně používat tyto struktury bez jejich vrácení do fondu.

Ovladač miniportu by měl uvolnit všechny NET_BUFFER_LIST struktury a související data, když NDIS zastaví adaptér. Ovladač může volat funkci NdisFreeNetBufferList k uvolnění struktur a funkci NdisFreeNetBufferListPool k uvolnění pamět'ového poolu NET_BUFFER_LIST.