NDK_FN_REGISTER_MR fungsi panggilan balik (ndkpi.h)
Fungsi NdkRegisterMr (NDK_FN_REGISTER_MR) mendaftarkan wilayah memori yang hampir berdampingan dengan adaptor NDK.
Sintaks
NDK_FN_REGISTER_MR NdkFnRegisterMr;
NTSTATUS NdkFnRegisterMr(
[in] NDK_MR *pNdkMr,
[in] MDL *Mdl,
[in] SIZE_T Length,
[in] ULONG Flags,
[in] NDK_FN_REQUEST_COMPLETION RequestCompletion,
[in, optional] PVOID RequestContext
)
{...}
Parameter
[in] pNdkMr
Penunjuk ke objek wilayah memori (MR) NDK (NDK_MR).
[in] Mdl
MDL atau rantai MDL yang mewakili wilayah memori yang hampir berdampingan dari alamat virtual awal hingga jumlah byte yang ditentukan dalam parameter Panjang .
[in] Length
Jumlah byte yang akan didaftarkan mulai dari alamat virtual MDL pertama. Alamat virtual MDL pertama dapat diperoleh dengan memanggil makro MmGetMdlVirtualAddress . Panjang tidak boleh melebihi jumlah total byte yang diwakili oleh rantai MDL.
[in] Flags
Bitmask bendera yang menentukan izin akses untuk wilayah memori terdaftar. Bendera berikut dapat diatur:
[in] RequestCompletion
Penunjuk ke panggilan balik penyelesaian permintaan rutin NdkRequestCompletion (NDK_FN_REQUEST_COMPLETION).
[in, optional] RequestContext
Nilai konteks untuk diteruskan ke parameter Konteks fungsi panggilan balik yang ditentukan dalam parameter RequestCompletion .
Nilai kembali
Fungsi NdkRegisterMr mengembalikan salah satu kode NTSTATUS berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Pendaftaran MR berhasil diselesaikan. |
|
Operasi tertunda dan akan selesai nanti. Driver akan memanggil fungsi RequestCompletion (NDK_FN_REQUEST_COMPLETION) yang ditentukan untuk menyelesaikan operasi yang tertunda. |
|
Bagian dari rantai MDL dari alamat virtual awal hingga panjang byte 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.
|
|
Terjadi kesalahan. |
Keterangan
Pada objek NDK_MR yang dibuat dengan parameter FastRegister diatur ke FALSE, NdkRegisterMr digunakan untuk mendaftarkan wilayah memori yang hampir berdampingan dengan adaptor.
Konsumen NDK harus melewati MDL atau rantai MDL yang mewakili wilayah memori yang hampir berdampingan yang disematkan dalam memori fisik. Alamat virtual dasar untuk wilayah memori yang didaftarkan adalah alamat virtual yang ditunjukkan oleh makro MmGetMdlVirtualAddress . Jika rantai MDL tidak mewakili wilayah memori yang hampir berdampingan dari alamat virtual awal hingga panjang yang ditentukan dalam byte, penyedia NDK harus gagal dalam permintaan.
Penyedia harus memperlakukan alamat virtual yang dikembalikan MmGetMdlVirtualAddress sebagai indeks ke awal wilayah memori yang didaftarkan. Penyedia tidak boleh menggunakan alamat virtual sebagai alamat virtual yang valid untuk membaca atau menulis konten buffer.
Konsumen NDK tidak boleh menggunakan rantai MDL saat permintaan pendaftaran tertunda.
NdkRegisterMr tidak mendukung alamat virtual berbasis nol.
Konsumen NDK harus meneruskan bendera NDK_MR_FLAG_RDMA_READ_SINK saat mendaftarkan memori yang mungkin digunakan sebagai buffer sink untuk permintaan baca RDMA. Penyedia NDK tertentu mungkin memerlukan pengaktifan hak akses khusus pada buffer sink untuk permintaan baca RDMA pada adaptor yang bendera NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED nya tidak diatur dalam anggota AdapterFlags dari struktur NDK_ADAPTER_INFO . Bendera NDK_MR_FLAG_RDMA_READ_SINK memungkinkan penyedia tersebut untuk mendukung permintaan pendaftaran dengan tepat.
Untuk membatalkan pendaftaran wilayah memori, gunakan fungsi NdkDeregisterMr (NDK_FN_DEREGISTER_MR).
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
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