Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Driver NDIS dapat membuat struktur NET_BUFFER_LIST yang disusun ulang dari struktur NET_BUFFER_LIST yang ada. Struktur yang disusun ulang mengacu pada data asli dari beberapa struktur sumber NET_BUFFER. Driver dapat menggunakan jenis struktur ini untuk menggabungkan banyak buffer yang lebih kecil secara efisien ke dalam satu buffer besar.
Gambar berikut menunjukkan hubungan antara struktur NET_BUFFER_LIST induk dan struktur anak yang disusun ulang:
Gambar di atas menunjukkan struktur NET_BUFFER_LIST induk dan struktur anak yang berasal dari induk tersebut. Struktur induk memiliki satu struktur NET_BUFFER_LIST_CONTEXT dan tiga struktur NET_BUFFER dengan MDL terpasang. Penunjuk induk dari struktur induk adalah NOL yang menunjukkan bahwa itu bukan struktur turunan.
Struktur NET_BUFFER_LIST anak memiliki satu struktur NET_BUFFER dengan MDL terpasang. Struktur NET_BUFFER_LIST anak memiliki penunjuk ke struktur induk. NULL di mana penunjuk struktur NET_BUFFER_LIST_CONTEXT akan menunjukkan bahwa anak tidak memiliki struktur NET_BUFFER_LIST_CONTEXT.
Driver NDIS memanggil fungsiNdisAllocateReassembledNetBufferList untuk menyusun kembali struktur NET_BUFFER_LIST terfragmentasi. NDIS mengalokasikan struktur NET_BUFFER dan MDL baru dengan struktur NET_BUFFER_LIST yang disusun ulang. NDIS tidak mengalokasikan struktur NET_BUFFER_LIST_CONTEXT untuk struktur yang disusun ulang. Struktur NET_BUFFER dan MDL yang disusun ulang menjelaskan data yang sama seperti struktur induk. Data tidak disalin.
Untuk membuat struktur NET_BUFFER_LIST yang disusun ulang, NdisAllocateReassembledNetBufferList melewati jumlah byte yang ditentukan dalam parameter StartOffset di setiap struktur NET_BUFFER induk. NdisAllocateReassembledNetBufferList menggabungkan data yang tersisa di setiap struktur NET_BUFFER induk ke dalam rantai MDL dari satu struktur NET_BUFFER yang disusun ulang. NdisAllocateReassembledNetBufferList menarik kembali (meningkatkan ruang data yang digunakan dalam) struktur NET_BUFFER yang telah disusun ulang dengan jumlah yang ditentukan oleh DataOffsetDelta .
Driver NDIS memanggil fungsiNdisFreeReassembledNetBufferList untuk membebaskan struktur NET_BUFFER_LIST yang disusun ulang dan struktur NET_BUFFER terkait dan rantai MDL.