Bagikan melalui


Struktur NET_BUFFER_LIST yang Disusun Ulang

Driver NDIS dapat membuat struktur NET_BUFFER_LIST yang disusun ulang dari struktur NET_BUFFER_LIST yang ada. Struktur yang disusun ulang mereferensikan data asli dari beberapa struktur NET_BUFFER sumber. 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 kembali:

Diagram yang mengilustrasikan hubungan antara struktur NET_BUFFER_LIST induk dan struktur anak yang disusun ulang.

Angka sebelumnya berisi 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 struktur induk adalah NULL 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 tempat penunjuk struktur NET_BUFFER_LIST_CONTEXT akan menunjukkan bahwa anak tidak memiliki struktur NET_BUFFER_LIST_CONTEXT.

Driver NDIS memanggil fungsi NdisAllocateReassembledNetBufferList untuk menyusun kembali struktur NET_BUFFER_LIST terfragmentasi. NDIS mengalokasikan struktur NET_BUFFER baru dan MDL 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 melompati 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 mundur (meningkatkan ruang data yang digunakan di) struktur NET_BUFFER yang disusun ulang dengan jumlah yang ditentukan dalam DataOffsetDelta .

Driver NDIS memanggil fungsi NdisFreeReassembledNetBufferList untuk membebaskan struktur NET_BUFFER_LIST yang disusun ulang dan struktur NET_BUFFER terkait dan rantai MDL.

Struktur NET_BUFFER_LIST Turunan