NDK_FN_SEND_AND_INVALIDATE fungsi panggilan balik (ndkpi.h)

Fungsi NdkSendAndInvalidate (NDK_FN_SEND_AND_INVALIDATE) memposting permintaan pengiriman pada pasangan antrean (QP) NDK dan memasok token untuk tidak valid di peer jarak jauh setelah menerima penyelesaian.

Sintaks

NDK_FN_SEND_AND_INVALIDATE NdkFnSendAndInvalidate;

NTSTATUS NdkFnSendAndInvalidate(
  [in]           NDK_QP *pNdkQp,
  [in, optional] PVOID RequestContext,
                 const NDK_SGE *pSgl,
  [in]           ULONG nSge,
  [in]           ULONG Flags,
  [in]           UINT32 RemoteToken
)
{...}

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_EX untuk permintaan ini.

pSgl

Array struktur SGE (NDK_SGE) yang mewakili buffer yang menyimpan data untuk dikirim.

[in] nSge

Jumlah struktur SGE dalam array yang ditentukan dalam parameter pSgl .

[in] Flags

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

Nilai Makna
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
Jika permintaan ini berhasil, permintaan ini tidak menghasilkan peristiwa penyelesaian dalam antrean penyelesaian keluar. Namun, jika gagal, itu menghasilkan peristiwa penyelesaian dalam antrean penyelesaian keluar.
NDK_OP_FLAG_READ_FENCE
0x00000002
Semua permintaan baca sebelumnya harus selesai sebelum perangkat keras mulai memproses permintaan ini.
NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT
0x00000004
Antrean penyelesaian untuk peer menghasilkan pemberitahuan. Untuk informasi selengkapnya tentang NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT, lihat bagian Keterangan.
NDK_OP_FLAG_INLINE
0x00000040
Menunjukkan bahwa memori yang dirujuk oleh SGEs harus ditransfer sebaris. Selain itu, nilai MemoryRegionToken dalam entri NDK_SGE mungkin tidak valid. Permintaan sebaris tidak perlu membatasi jumlah entri dalam daftar SGE ke nilai MaxInitiatorRequestSge yang ditentukan saat pasangan antrean dibuat. Jumlah memori yang ditransfer sebaris harus berada dalam batas data sebaris dari pasangan antrean.
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.

[in] RemoteToken

Token jarak jauh yang akan dibatalkan di peer setelah menerima penyelesaian. Penyedia NDK di peer penerima harus membatalkan koneksi, seperti yang ditentukan oleh aturan transportasi lapisan bawah, jika token yang tidak valid ditentukan oleh peer pengirim.

Nilai kembali

Fungsi NdkSendAndInvalidate mengembalikan salah satu kode NTSTATUS berikut.

Menampilkan kode Deskripsi
STATUS_SUCCESS
Permintaan berhasil diposting. Entri penyelesaian akan diantrekan ke antrean penyelesaian (CQ) ketika permintaan kerja selesai.
STATUS_CONNECTION_INVALID
Pasangan antrean (QP) tidak tersambung.
Kode status lainnya
Terjadi kesalahan.

Keterangan

Anda dapat menggunakan bendera NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT jika Anda mengeluarkan beberapa permintaan pengiriman terkait. Atur bendera ini pada permintaan terakhir dalam grup.

Konsumen NDK dapat menggunakan bendera ini saat mengeluarkan beberapa permintaan pengiriman terkait. Konsumen NDK menetapkan bendera ini hanya pada permintaan pengiriman terkait yang terakhir. Serekan akan menerima semua permintaan kirim seperti biasa. Namun, ketika serekan menerima permintaan pengiriman terakhir (permintaan dengan bendera NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT diatur), antrean penyelesaian untuk serekan menghasilkan pemberitahuan. Pemberitahuan dibuat setelah permintaan terima selesai. Bendera ini tidak memiliki arti untuk penerima (peer) kecuali penerima sebelumnya telah memanggil fungsi NdkArmCq (NDK_FN_ARM_CQ) dengan jenis pemberitahuan diatur ke NDK_CQ_NOTIFY_SOLICITED.

Catatan Permintaan yang selesai dengan kesalahan selalu cocok dengan jenis pemberitahuan NDK_CQ_NOTIFY_SOLICITED .
 
Konsumen NDK harus memastikan bahwa fungsi NdkSendAndInvalidate tidak dipanggil jika peer penerima tidak mendukung invalidasi jarak jauh. Konsumen harus menegosiasikan kemampuan ini menggunakan mekanisme out-of-band atau tidak menggunakan fungsi ini. Jika konsumen melanggar persyaratan ini, perilaku penyedia tidak ditentukan.

Setiap struktur NDK_RESULT_EX yang ditambahkan ke antrean penyelesaian sebagai akibat dari panggilan ke fungsi ini harus menentukan NdkOperationTypeSend untuk anggota Jenis . Perhatikan bahwa Anda tidak perlu menentukan nilai untuk anggota TypeSpecificCompletionOutput dari struktur NDK_RESULT_EX .

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tidak ada yang didukung, Didukung di NDIS 6.40 dan yang lebih baru.
Server minimum yang didukung Windows Server 2012 R2
Target Platform Windows
Header ndkpi.h (termasuk Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Lihat juga

Persyaratan Penanganan Penyelesaian NDKPI

Skema Pemrosesan yang Ditangguhkan NDKPI

Persyaratan Posting Permintaan Kerja NDKPI

NDK_FN_ARM_CQ

NDK_QP

NDK_RESULT_EX

NDK_SGE