Bagikan melalui


LPFN_RIOREGISTERBUFFER fungsi panggilan balik (mswsock.h)

Fungsi RIORegisterBuffer mendaftarkan RIO_BUFFERID, deskriptor buffer terdaftar, dengan buffer tertentu untuk digunakan dengan ekstensi I/O terdaftar Winsock.

Sintaks

LPFN_RIOREGISTERBUFFER LpfnRioregisterbuffer;

RIO_BUFFERID LpfnRioregisterbuffer(
  PCHAR DataBuffer,
  DWORD DataLength
)
{...}

Parameter

DataBuffer

Penunjuk ke awal buffer memori untuk mendaftar.

DataLength

Panjangnya, dalam byte, di buffer untuk mendaftar.

Nilai kembali

Jika tidak ada kesalahan yang terjadi, fungsi RIORegisterBuffer mengembalikan deskriptor buffer terdaftar. Jika tidak, nilai RIO_INVALID_BUFFERID dikembalikan, dan kode kesalahan tertentu dapat diambil dengan memanggil fungsi WSAGetLastError .

Menampilkan kode Deskripsi
WSAEFAULT
Sistem mendeteksi alamat penunjuk yang tidak valid dalam mencoba menggunakan argumen penunjuk dalam panggilan. Kesalahan ini dikembalikan jika penunjuk buffer tidak valid diteruskan dalam parameter DataBuffer .
WSAEINVAL
Parameter yang tidak valid diteruskan ke fungsi.
Kesalahan ini dikembalikan jika parameter DataLength adalah nol.

Keterangan

Fungsi RIORegisterBuffer membuat pengidentifikasi buffer terdaftar untuk buffer tertentu. Ketika buffer terdaftar, halaman memori virtual yang berisi buffer akan dikunci ke dalam memori fisik.

Jika beberapa buffer kecil yang tidak berdampingan terdaftar, jejak memori fisik untuk buffer mungkin secara efektif sebesar seluruh halaman memori per pendaftaran. Dalam kasus ini, mungkin bermanfaat untuk mengalokasikan beberapa buffer permintaan bersama-sama.

Ada juga sejumlah kecil overhead dalam memori fisik yang digunakan untuk pendaftaran buffer itu sendiri. Jadi jika ada banyak alokasi yang dikumpulkan ke dalam alokasi tunggal yang lebih besar, jejak memori fisik dapat dikurangi lebih lanjut dengan menggabungkan pendaftaran buffer juga. Dalam hal ini aplikasi mungkin perlu berhati-hati untuk memastikan bahwa buffer akhirnya dibatalkan pendaftarannya, tetapi tidak saat permintaan kirim atau terima luar biasa.

Sebagian buffer terdaftar diteruskan ke fungsi RIOSend, RIOSendEx, RIOReceive, dan RIOReceiveEx dalam parameter pData untuk mengirim atau menerima data.

Ketika pengidentifikasi buffer tidak lagi diperlukan, panggil fungsi RIODeregisterBuffer untuk membatalkan pendaftaran pengidentifikasi buffer.

Catatan

Penunjuk fungsi ke fungsi RIORegisterBuffer harus diperoleh pada durasi dengan melakukan panggilan ke fungsi WSAIoctl dengan opcode SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER yang ditentukan. Buffer input yang diteruskan ke fungsi WSAIoctl harus berisi WSAID_MULTIPLE_RIO, pengidentifikasi unik global (GUID) yang nilainya mengidentifikasi fungsi ekstensi I/O terdaftar Winsock. Setelah berhasil, output yang dikembalikan oleh fungsi WSAIoctl berisi pointer ke struktur RIO_EXTENSION_FUNCTION_TABLE yang berisi pointer ke fungsi ekstensi I/O terdaftar Winsock. IOCTL SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER didefinisikan dalam file header Ws2def.h. GUID WSAID_MULTIPLE_RIO ditentukan dalam file header Mswsock.h .

 

Windows Phone 8: Fungsi ini didukung untuk aplikasi Windows Phone Store di Windows Phone 8 dan yang lebih baru.

Windows 8.1 dan Windows Server 2012 R2: Fungsi ini didukung untuk aplikasi Windows Store di Windows 8.1, Windows Server 2012 R2, dan yang lebih baru.

Persyaratan

Persyaratan Nilai
Header mswsock.h