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.

Penting  

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)

Lihat juga

ExAllocatePool

IoAllocateMdl

MmBuildMdlForNonPagedPool

MmProbeAndLockPages

NdisAllocateMemoryWithTagPriority

NdisFreeMdl

NdisMAllocateSharedMemory