Fungsi NdisAllocateMdl (ndis/mdlapi.h)
Fungsi NdisAllocateMdl mengalokasikan MDL yang menjelaskan buffer memori pada alamat virtual yang ditentukan.
Sintaks
NDIS_EXPORTED_ROUTINE MDL * NdisAllocateMdl(
[in] NDIS_HANDLE NdisHandle,
[in] PVOID VirtualAddress,
[in] ULONG Length
);
Parameter
[in] NdisHandle
Handel NDIS yang diperoleh selama inisialisasi pemanggil. Untuk informasi selengkapnya, lihat Mendapatkan Handel Kumpulan.
[in] VirtualAddress
Penunjuk ke alamat virtual dasar buffer yang akan dijelaskan MDL.
Parameter VirtualAddress untuk NdisAllocateMdl hanya menerima memori dari kumpulan yang tidak disebarkan. Dengan kata lain, dibutuhkan memori dari ExAllocatePool*(NonPagedNx), NdisAllocateMemoryWithTagPriority, atau NdisMAllocateSharedMemory. Secara khusus, ini tidak boleh digunakan dengan memori dari tumpukan, kumpulan halaman, data global driver, atau wilayah memori lainnya.
Jika driver perlu membangun MDL untuk salah satu wilayah kumpulan yang tidak bertumpuk ini, driver harus menggunakan API kernel yang sesuai untuk jenis memori tersebut, seperti IoAllocateMdl yang dikombinasikan dengan MmProbeAndLockPages.
[in] Length
Ukuran, dalam byte, dari buffer memori.
Menampilkan nilai
NdisAllocateMdl mengembalikan pointer ke MDL yang dialokasikan. Jika alokasi gagal, nilai yang dikembalikan adalah NULL.
Keterangan
Semua MDL yang dialokasikan dengan memanggil NdisAllocateMdl harus dikosongkan dengan memanggil fungsi NdisFreeMdl .
NdisAllocateMdl mengalokasikan memori dan membangun MDL dalam satu langkah. Proses ini berbeda dari IoAllocateMdl, yang hanya mengalokasikan memori untuk MDL, yang berarti pemanggil harus membangun MDL dengan memanggil MmBuildMdlForNonPagedPool atau MmProbeAndLockPages.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung di NDIS 6.0 dan yang lebih baru. |
Target Platform | Universal |
Versi UMDF minimum | 2.33 |
Header | ndis/mdlapi.h (termasuk ndis.h) |
Pustaka | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Aturan kepatuhan DDI | Irql_NetBuffer_Function(ndis), NdisAllocateMdl(ndis) |