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:

Nilai Makna
NDK_MR_FLAG_ALLOW_LOCAL_READ
0x00000000
NDK_MR_FLAG_ALLOW_LOCAL_WRITE
0x00000001
NDK_MR_FLAG_ALLOW_REMOTE_READ
0x00000002
NDK_MR_FLAG_ALLOW_REMOTE_WRITE
0x00000005
NDK_MR_FLAG_RDMA_READ_SINK
0x00000008

[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
STATUS_SUCCESS
Pendaftaran MR berhasil diselesaikan.
STATUS_PENDING
Operasi tertunda dan akan selesai nanti. Driver akan memanggil fungsi RequestCompletion (NDK_FN_REQUEST_COMPLETION) yang ditentukan untuk menyelesaikan operasi yang tertunda.
STATUS_INVALID_PARAMETER
Bagian dari rantai MDL dari alamat virtual awal hingga panjang byte tidak mewakili wilayah memori yang hampir berdampingan.
STATUS_INSUFFICIENT_RESOURCES
Permintaan gagal karena sumber daya yang tidak mencukup.
Penting Permintaan dapat gagal sebaris serta secara asinkron dengan kode status ini.
 
Kode status lainnya
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.

Catatan Buffer dapat didaftarkan untuk beberapa tujuan. Oleh karena itu, bendera NDK_MR_FLAG_RDMA_READ_SINK mungkin disertai dengan bendera lain.
 
Jika konsumen NDK melewati bendera NDK_MR_FLAG_RDMA_READ_SINK pada adaptor tempat bendera NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED diatur dalam anggota AdapterFlags dari struktur NDK_ADAPTER_INFO , penyedia tidak diperlukan untuk menangani bendera NDK_MR_FLAG_RDMA_READ_SINK dan tidak boleh gagal permintaan karena adanya bendera ini.

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

MmGetMdlVirtualAddress

Persyaratan Seumur Hidup Objek NDKPI

NDK_ADAPTER_INFO

NDK_FN_DEREGISTER_MR

NDK_FN_REQUEST_COMPLETION

NDK_MR