Protokol Sürücüsü Arabellek Yönetimi

Bir protokol sürücüsünün gönderme işlemleri için NET_BUFFER_LIST yapı havuzlarını ve NET_BUFFER yapı havuzlarını yönetmesi gerekir. Bu havuzları oluşturmak için sürücüler aşağıdaki işlevleri çağırır:

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

Protokol sürücüleri, havuzlardan yapıları ayırmak için aşağıdaki işlevleri kullanabilir:

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisAllocateNetBuffer

NdisAllocateNetBufferAndNetBufferList çağırmak, NdisAllocateNetBufferList ve ardından NdisAllocateNetBufferçağırmaktan daha verimlidir. Ancak NdisAllocateNetBufferAndNetBufferList NET_BUFFER_LIST yapısında yalnızca bir NET_BUFFER yapısı oluşturur. NdisAllocateNetBufferAndNetBufferListfonksiyonunu kullanmak için, sürücünün AllocateNetBuffer parametresini, NdisAllocateNetBufferListPoolçağırdığında TRUE olarak ayarlaması gerekir.

Protokol sürücüleri, temel alınan sürücülerin arka doldurma ve bağlam alanı gereksinimlerini sorgulamak için OID isteklerini kullanabilir. Protokol sürücüsü, Açma durumunda veya yeniden başlatma durumlarındaki bir bağlama için geri doldurma ve bağlam gereksinimlerini belirlemelidir. Sürücünün yığının tamamı için yeterli geri doldurma ve bağlam alanı ayırması gerekir. Gerekirse, bir protokol sürücüsü havuzları boşaltabilir ve Yeniden Başlatıyor durumunda yeniden dağıtabilir.

Protokol sürücüleri havuzları boşaltmak için aşağıdaki işlevleri kullanır:

NdisFreeNetBufferListPool

NdisFreeNetBufferPool.

Protokol sürücüleri, havuzlardan ayrılan yapıları boşaltmak için aşağıdaki işlevleri kullanır:

NdisFreeNetBufferList

NdisFreeNetBuffer

Sürücüler, ilişkili NET_BUFFER_LIST yapısını boşaltmadan önce NdisAllocateNetBuffer ile ayrılan NET_BUFFER yapılarını serbest bırakmalıdır. NdisAllocateNetBufferAndNetBufferList ile ayrılan NET_BUFFER yapıları, sürücü ilişkili NET_BUFFER_LIST yapısı için NdisFreeNetBufferList çağırdığında serbest bırakılır.