Manajemen Protokol Driver Buffer

Driver protokol harus mengelola NET_BUFFER_LIST kumpulan struktur dan NET_BUFFER kumpulan struktur untuk operasi pengiriman. Untuk membuat kumpulan ini, driver memanggil fungsi berikut:

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

Driver protokol dapat menggunakan fungsi berikut untuk mengalokasikan struktur dari kumpulan:

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisAllocateNetBuffer

Memanggil NdisAllocateNetBufferAndNetBufferList lebih efisien daripada memanggil NdisAllocateNetBufferList diikuti oleh NdisAllocateNetBuffer. Namun, NdisAllocateNetBufferAndNetBufferList hanya membuat satu struktur NET_BUFFER pada struktur NET_BUFFER_LIST. Untuk menggunakan NdisAllocateNetBufferAndNetBufferList, driver harus mengatur parameter AllocateNetBuffer ke TRUE saat memanggil NdisAllocateNetBufferListPool.

Driver protokol dapat menggunakan permintaan OID untuk mengkueri persyaratan pengisian ulang dan ruang konteks driver di bawahnya. Driver protokol harus menentukan persyaratan pengisian dan konteks untuk penerikat dalam status Pembukaan atau Memulai Ulang. Pengemudi harus mengalokasikan ruang pengisian ulang dan konteks yang memadai untuk seluruh stack. Jika diperlukan, driver protokol dapat membebaskan dan merealokasi kumpulan dalam status Restart.

Driver protokol menggunakan fungsi berikut untuk membebaskan pool memori:

NdisFreeNetBufferListPool

NdisFreeNetBufferPool.

Driver protokol menggunakan fungsi berikut untuk membebaskan struktur yang dialokasikan dari kumpulan:

NdisFreeNetBufferList

NdisFreeNetBuffer

Pengendali harus membebaskan struktur NET_BUFFER yang dialokasikan dengan NdisAllocateNetBuffer sebelum membebaskan struktur NET_BUFFER_LIST terkait. struktur NET_BUFFER yang dialokasikan dengan NdisAllocateNetBufferAndNetBufferList dibebaskan saat driver memanggil NdisFreeNetBufferList untuk struktur NET_BUFFER_LIST terkait.