NDK_FN_FAST_REGISTER fungsi panggilan balik (ndkpi.h)

Fungsi NdkFastRegister (NDK_FN_FAST_REGISTER) mendaftarkan array halaman logis adaptor dengan cepat melalui wilayah memori yang ada.

Sintaks

NDK_FN_FAST_REGISTER NdkFnFastRegister;

NTSTATUS NdkFnFastRegister(
  [in]           NDK_QP *pNdkQp,
  [in, optional] PVOID RequestContext,
  [in]           NDK_MR *pMr,
  [in]           ULONG AdapterPageCount,
                 const NDK_LOGICAL_ADDRESS *AdapterPageArray,
  [in]           ULONG FBO,
  [in]           SIZE_T Length,
  [in]           PVOID BaseVirtualAddress,
  [in]           ULONG Flags
)
{...}

Parameter

[in] pNdkQp

Penunjuk ke objek pasangan antrean (QP) NDK (NDK_QP).

[in, optional] RequestContext

Nilai konteks yang akan dikembalikan di anggota RequestContext dari struktur NDK_RESULT untuk permintaan ini.

[in] pMr

Penunjuk ke objek wilayah memori (MR) NDK (NDK_MR) yang diinisialisasi untuk pendaftaran cepat.

[in] AdapterPageCount

Jumlah halaman dalam parameter AdapterPageArray . Ukuran setiap halaman di AdapterPageArrayPAGE_SIZE byte.

AdapterPageArray

Array alamat logis adaptor (NDK_LOGICAL_ADDRESS) di mana setiap alamat adalah alamat logis awal untuk halaman. Setiap alamat harus diratakan halaman yang panjangnya PAGE_SIZE byte. Alamat berturut-turut dalam array belum tentu berturut-turut dalam hal ruang alamat logis, tetapi array secara keseluruhan mewakili wilayah memori yang hampir bersebelahan dari perspektif sistem host.

[in] FBO

Offset byte (FBO) pertama dalam halaman pertama. Wilayah terdaftar dimulai pada offset ini.

[in] Length

Panjangnya, dalam byte, dari wilayah yang didaftarkan mulai dari FBO. Panjangnya harus kurang dari atau sama dengan jumlah total byte yang diwakili oleh set pertama (AdapterPageCount) halaman yang terkandung dalam array AdapterPageArray dikurangi FBO.

[in] BaseVirtualAddress

Nilai alamat virtual yang ditentukan konsumen untuk merujuk ke lokasi byte pertama wilayah memori. Nilai ini harus berupa kelipatan PAGE_SIZE ditambah FBO. Jadi, nilai yang diizinkan termasuk FBO, atau FBO ditambah n kali PAGE_SIZE di mana n lebih besar dari atau sama dengan nol. Nol adalah nilai yang valid hanya jika FBO adalah nol.

[in] Flags

Bitwise OR dari bendera yang menentukan operasi yang diizinkan. Bendera berikut didukung:

Nilai Makna
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
Menunjukkan keberhasilan penyelesaian permintaan ini tidak menghasilkan peristiwa penyelesaian dalam antrean penyelesaian keluar. Namun, permintaan yang gagal menghasilkan peristiwa dalam antrean penyelesaian.
NDK_OP_FLAG_READ_FENCE
0x00000002
Menunjukkan bahwa semua permintaan baca sebelumnya harus selesai sebelum perangkat keras mulai memproses permintaan ini.
NDK_OP_FLAG_ALLOW_REMOTE_READ
0x00000008
Aktifkan akses baca ke wilayah memori untuk serekan yang terhubung. Untuk mengakses wilayah memori, rekan yang terhubung harus memiliki token yang valid.
NDK_OP_FLAG_ALLOW_LOCAL_WRITE
0x00000010
Izinkan akses tulis lokal ke wilayah memori.
NDK_OP_FLAG_ALLOW_REMOTE_WRITE
0x00000030
Aktifkan akses tulis ke wilayah memori untuk serekan yang terhubung. Untuk mengakses wilayah memori, rekan yang terhubung harus memiliki token yang valid.
NDK_OP_FLAG_DEFER
0x00000200
Menunjukkan kepada penyedia NDK bahwa ia dapat menukar permintaan ke perangkat keras untuk diproses. Untuk informasi selengkapnya tentang bendera ini, lihat Skema Pemrosesan Yang Ditangguhkan NDKPI.

Catatan Bendera ini hanya didukung di NDKPI 1.2 (Windows Server 2012 R2) dan yang lebih baru.

Nilai kembali

Fungsi NDK_FN_FAST_REGISTER mengembalikan salah satu kode NTSTATUS berikut.

Menampilkan kode Deskripsi
STATUS_SUCCESS
Permintaan berhasil diposting. Entri penyelesaian akan diantrekan ke CQ ketika permintaan kerja selesai.
STATUS_CONNECTION_INVALID
QP tidak tersambung.
STATUS_ACCESS_VIOLATION
Wilayah memori tidak diinisialisasi untuk akses jarak jauh selama inisialisasi daftar cepat tetapi permintaan kerja daftar cepat yang ditentukan NDK_OP_FLAG_ALLOW_REMOTE_READ atau NDK_OP_FLAG_ALLOW_REMOTE_WRITE.
Kode status lainnya
Terjadi kesalahan.

Keterangan

NdkFastRegister mendaftarkan larik halaman logis adaptor melalui wilayah memori yang ada yang diinisialisasi untuk pendaftaran cepat.

Setelah panggilan ini kembali, token wilayah memori untuk akses jarak jauh tersedia dengan fungsi NdkGetRemoteTokenFromMr (NDK_FN_GET_REMOTE_TOKEN_FROM_MR) dari MR.

NdkFastRegister tidak mendukung alamat virtual berbasis nol.

Jika bendera NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED tidak diatur dalam anggota AdapterFlags dari struktur NDK_ADAPTER_INFO , konsumen NDK harus meneruskan bendera NDK_OP_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. Bendera ini memungkinkan penyedia tersebut untuk mendukung permintaan pendaftaran dengan tepat. Perhatikan bahwa buffer mungkin didaftarkan untuk beberapa tujuan, oleh karena itu bendera ini mungkin disertai oleh orang lain.

Jika konsumen NDK melewati bendera NDK_OP_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_OP_FLAG_RDMA_READ_SINK dan tidak boleh gagal permintaan karena adanya bendera ini.

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

Skema Pemrosesan yang Ditangguhkan NDKPI

Persyaratan Posting Permintaan Kerja NDKPI

NDK_ADAPTER_INFO

NDK_FN_GET_REMOTE_TOKEN_FROM_MR

NDK_LOGICAL_ADDRESS

NDK_MR

NDK_QP

NDK_RESULT