Fungsi NdisAllocateFragmentNetBufferList (ndis/nblapi.h)

Panggil fungsi NdisAllocateFragmentNetBufferList untuk membuat struktur NET_BUFFER_LIST terfragmentasi baru berdasarkan data dalam struktur NET_BUFFER_LIST yang ada.

Sintaks

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateFragmentNetBufferList(
  [in] NET_BUFFER_LIST *OriginalNetBufferList,
       NDIS_HANDLE     NetBufferListPool,
       NDIS_HANDLE     NetBufferPool,
  [in] ULONG           StartOffset,
  [in] ULONG           MaximumLength,
  [in] ULONG           DataOffsetDelta,
  [in] ULONG           DataBackFill,
  [in] ULONG           AllocateFragmentFlags
);

Parameter

[in] OriginalNetBufferList

Penunjuk ke struktur NET_BUFFER_LIST yang ada.

NetBufferListPool

Handel yang diperoleh dari panggilan ke Fungsi NdisAllocateNetBufferListPool .

NetBufferPool

Handel kumpulan struktur NET_BUFFER yang sebelumnya dikembalikan dari panggilan ke NdisAllocateNetBufferPool.

[in] StartOffset

Offset byte tambahan dari awal data di setiap struktur NET_BUFFER . Offset ini selain nilai anggota DataOffset yang ditentukan dalam setiap struktur NET_BUFFER.

[in] MaximumLength

Panjang maksimum, dalam byte, untuk setiap fragmen dalam struktur NET_BUFFER_LIST baru. Setiap fragmen dijelaskan oleh struktur NET_BUFFER.

[in] DataOffsetDelta

Jumlah tambahan ruang data yang digunakan yang harus disediakan NDIS dalam struktur NET_BUFFER baru.

[in] DataBackFill

Jumlah ruang data selain nilai parameter DataOffsetDelta untuk dialokasikan jika alokasi diperlukan. Jika NDIS harus mengalokasikan memori untuk menyediakan ruang data yang diminta di DataOffsetDelta, NDIS juga harus mengalokasikan ruang tambahan yang ditentukan DataBackFill .

[in] AllocateFragmentFlags

Bendera NDIS yang dapat dikombinasikan dengan operasi OR. Atur parameter ini ke nol. Saat ini tidak ada bendera yang ditentukan untuk fungsi ini.

Mengembalikan nilai

NdisAllocateFragmentNetBufferList mengembalikan pointer ke struktur NET_BUFFER_LIST terfragmentasi baru. Jika alokasi gagal, nilai yang dikembalikan adalah NULL.

Keterangan

NdisAllocateFragmentNetBufferList mengalokasikan dan menginisialisasi struktur NET_BUFFER_LIST fragmen baru dan struktur NET_BUFFER yang menjelaskan data yang sama yang dijelaskan oleh struktur NET_BUFFER_LIST yang diteruskan pemanggil ke NdisAllocateFragmentNetBufferList.

Jika struktur NET_BUFFER_LIST fragmen harus memiliki atribut yang terkait dengan kumpulan tertentu, pemanggil harus menentukan handel kumpulan di parameter NetBufferListPoolHandle atau NetBufferPoolHandle . Misalnya, anggota ProtocolType dari struktur NET_BUFFER_LIST dikaitkan dengan kumpulan.

Untuk setiap struktur NET_BUFFER dalam struktur NET_BUFFER_LIST sumber yang ditentukan, NDIS membuat struktur NET_BUFFER fragmen sebagai berikut:

  • NDIS membuat fragmen mulai dari awal ruang data yang digunakan dalam struktur NET_BUFFER sumber dan offset oleh nilai yang ditentukan dalam parameter StartOffset .
  • NDIS membagi ruang data yang digunakan (setelah akuntansi untuk StartOffset ) dalam struktur sumber NET_BUFFER menjadi fragmen.
  • Panjang ruang data yang digunakan dari setiap fragmen kurang dari atau sama dengan nilai yang ditentukan dalam parameter MaximumLength . Ruang data yang digunakan dari fragmen terakhir dapat kurang dari MaximumLength .
  • Setiap fragmen dijelaskan oleh struktur NET_BUFFER baru dan serangkaian rantai MDL baru.
  • Offset data dari struktur NET_BUFFER baru mundur (nilai anggota DataOffset berkurang) dengan jumlah byte yang ditentukan dalam parameter DataOffsetDelta .
  • Jika NDIS harus mengalokasikan memori untuk menyediakan ruang data yang diminta di DataOffsetDelta, NDIS juga harus mengalokasikan ruang tambahan yang ditentukan DataBackFill .
Struktur NET_BUFFER_LIST fragmen baru yang dibuat NdisAllocateFragmentNetBufferList tidak menyertakan awal NET_BUFFER_LIST_CONTEXT struktur.

Memanggil Fungsi NdisFreeFragmentNetBufferList untuk membebaskan struktur NET_BUFFER_LIST dan semua struktur NET_BUFFER terkait dan rantai MDL yang sebelumnya dialokasikan dengan memanggil NdisAllocateFragmentNetBufferList.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung di NDIS 6.0 dan yang lebih baru.
Target Platform Universal
Header ndis/nblapi.h (sertakan ndis.h)
Pustaka Ndis.lib
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI Irql_NetBuffer_Function(ndis), NdisAllocateFragmentNetBufferList(ndis), NdisAllocateFragmentNetBufferList_InitFail(ndis)

Lihat juga

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeFragmentNetBufferList