NDK_FN_BUILD_LAM fungsi panggilan balik (ndkpi.h)
Fungsi NdkBuildLam (NDK_FN_BUILD_LAM) mendapatkan pemetaan alamat logis adaptor (LAM) dari penyedia NDK untuk wilayah memori yang hampir berdampingan.
Sintaks
NDK_FN_BUILD_LAM NdkFnBuildLam;
NTSTATUS NdkFnBuildLam(
[in] NDK_ADAPTER *pNdkAdapter,
[in] MDL *Mdl,
[in] SIZE_T Length,
[in] NDK_FN_REQUEST_COMPLETION RequestCompletion,
[in, optional] PVOID RequestContext,
NDK_LOGICAL_ADDRESS_MAPPING *pNdkLAM,
ULONG *pLAMSize,
[out] ULONG *pFBO
)
{...}
Parameter
[in] pNdkAdapter
Penunjuk ke objek adaptor NDK (NDK_ADAPTER).
[in] Mdl
Daftar deskriptor memori (MDL) atau rantai MDL. Bagian rantai MDL dari alamat virtual awal hingga jumlah byte dalam parameter Panjang harus mewakili wilayah memori yang hampir berdampingan.
[in] Length
Jumlah byte yang akan dipetakan mulai dari alamat virtual MDL pertama. Alamat virtual MDL dapat diperoleh dengan makro MmGetMdlVirtualAddress . Panjang tidak boleh melebihi jumlah total byte yang diwakili oleh rantai MDL.
[in] RequestCompletion
Penunjuk ke fungsi panggilan balik NdkRequestCompletion (NDK_FN_REQUEST_COMPLETION).
[in, optional] RequestContext
Nilai konteks bagi penyedia untuk diteruskan kembali ke fungsi panggilan balik NdkRequestCompletion yang ditentukan dalam parameter RequestCompletion .
pNdkLAM
Penunjuk ke buffer yang akan menyimpan struktur NDK_LOGICAL_ADDRESS_MAPPING yang berisi array halaman adaptor. Array halaman adapter disimpan di anggota AdapterPageArray dan anggota AdapterPageCount berisi jumlah elemen halaman adaptor.
pLAMSize
Ukuran, dalam byte, buffer pada parameter pNdkLAM untuk input, atau jumlah byte aktual yang ditulis untuk output.
[out] pFBO
Nilai byte offset (FBO) pertama dikembalikan di lokasi ini. FBO adalah offset awal dalam halaman adaptor pertama.
Nilai kembali
Fungsi NdkBuildLam mengembalikan salah satu kode NTSTATUS berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Operasi berhasil diselesaikan. |
|
Permintaan tertunda, fungsi yang ditentukan pada parameter RequestCompletion (NDK_FN_REQUEST_COMPLETION) akan dipanggil ketika operasi build LAM selesai. |
|
Bagian rantai MDL dari alamat virtual awal hingga jumlah byte yang ditentukan dalam parameter Panjang tidak mewakili wilayah memori yang hampir berdampingan. |
|
Permintaan gagal karena sumber daya yang tidak mencukup.
Penting Permintaan dapat gagal sebaris serta secara asinkron dengan kode status ini.
|
|
Ukuran buffer yang ditunjukkan oleh parameter *pLAMSize terlalu kecil untuk menahan LAM. Dalam hal ini, nilai *pLAMSize diperbarui dengan ukuran buffer yang diperlukan. |
|
Terjadi kesalahan. |
Keterangan
Bagian dari rantai MDL dari alamat virtual awal hingga jumlah byte yang ditentukan dalam parameter Panjang harus mewakili wilayah memori yang hampir berdampingan. Jika tidak, penyedia NDK harus gagal dalam permintaan. Merupakan tanggung jawab konsumen NDK untuk memastikan bahwa rantai MDL terkunci. Artinya, halaman perubahan MDL disematkan dalam memori fisik.
Konsumen NDK dapat memanggil fungsi NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN) untuk mendapatkan token wilayah memori istimewa dari penyedia NDK.
Semua halaman adaptor yang dikembalikan oleh penyedia NDK harus memiliki panjang PAGE_SIZE byte, di mana PAGE_SIZE adalah ukuran halaman memori yang didukung oleh platform host seperti yang didefinisikan dalam wdm.h.
Penyedia harus memperlakukan nilai alamat virtual yang dikembalikan makro MmGetMdlVirtualAddress untuk MDL sebagai indeks ke awal wilayah memori yang dipetakan. Penyedia tidak boleh menggunakan nilai alamat virtual sebagai alamat virtual yang valid untuk membaca atau menulis konten buffer.
Jika penyedia memiliki kesalahan saat memproses permintaan NdkBuildLam , penyedia harus merilis pemetaan parsial yang dibangunnya secara internal sejauh ini sebelum menyelesaikan permintaan dengan kegagalan.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tidak ada yang didukung, Didukung di NDIS 6.30 dan yang lebih baru. |
Server minimum yang didukung | Windows Server 2012 |
Target Platform | Windows |
Header | ndkpi.h (termasuk Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |
Lihat juga
Persyaratan Seumur Hidup Objek NDKPI
Saran 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