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 .
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
NdisAllocateNetBufferListPool NdisFreeFragmentNetBufferListSaran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk