Bagikan melalui


LPFN_RIODEQUEUECOMPLETION fungsi panggilan balik (mswsock.h)

Fungsi RIODequeueCompletion menghapus entri dari antrean penyelesaian I/O untuk digunakan dengan ekstensi I/O terdaftar Winsock.

Sintaks

LPFN_RIODEQUEUECOMPLETION LpfnRiodequeuecompletion;

ULONG LpfnRiodequeuecompletion(
  RIO_CQ CQ,
  PRIORESULT Array,
  ULONG ArraySize
)
{...}

Parameter

CQ

Deskriptor yang mengidentifikasi antrean penyelesaian I/O.

Array

Array struktur RIORESULT untuk menerima deskripsi penyelesaian yang dihapus antreannya.

ArraySize

Jumlah maksimum entri dalam Array yang akan ditulis.

Nilai kembali

Jika tidak ada kesalahan yang terjadi, fungsi RIODequeueCompletion mengembalikan jumlah entri penyelesaian yang dihapus dari antrean penyelesaian yang ditentukan. Jika tidak, nilai RIO_CORRUPT_CQ dikembalikan untuk menunjukkan bahwa status RIO_CQ yang diteruskan dalam parameter CQ menjadi rusak karena kerusakan memori atau penyalahgunaan fungsi RIO.

Keterangan

Fungsi RIODequeueCompletion menghapus entri dari antrean penyelesaian I/O untuk mengirim dan menerima permintaan dengan ekstensi I/O terdaftar Winsock.

Fungsi RIODequeueCompletion adalah mekanisme di mana aplikasi dapat mengetahui tentang permintaan kirim dan terima yang telah selesai. Aplikasi biasanya memanggil fungsi RIODequeueCompletion setelah menerima pemberitahuan berdasarkan metode yang terdaftar dengan fungsi RIONotify ketika antrean penyelesaian tidak kosong. Perilaku pemberitahuan untuk antrean penyelesaian I/O diatur saat RIO_CQ dibuat. Struktur RIO_NOTIFICATION_COMPLETION yang menentukan perilaku pemberitahuan diteruskan ke fungsi RIOCreateCompletionQueue saat RIO_CQ dibuat.

Ketika fungsi RIODequeueCompletion selesai, parameter Array berisi array pointer ke struktur RIORESULT untuk permintaan kirim dan terima yang selesai yang dihapus antreannya. Anggota struktur RIORESULT yang dikembalikan memberikan informasi tentang status penyelesaian permintaan yang telah selesai dan jumlah byte yang ditransfer. Setiap struktur RIORESULT yang dikembalikan juga mencakup konteks soket dan konteks aplikasi yang dapat digunakan untuk mengidentifikasi permintaan lengkap tertentu.

Jika antrean penyelesaian I/O yang diteruskan dalam parameter CQ tidak valid atau rusak, fungsi RIODequeueCompletion mengembalikan hitungan RIO_CORRUPT_CQ.

Fungsi RIODequeueCompletion mengembalikan nilai nol dikembalikan jika tidak ada permintaan kirim atau terima yang selesai untuk dihapus antreannya.

Hanya setelah penyelesaian permintaan dihapus antrean, sistem merilis asosiasi ke pendaftaran buffer dan buffer-nya, bersama dengan biaya kuotanya.

Catatan

Untuk tujuan efisiensi, akses ke antrean penyelesaian (RIO_CQ struktur) dan antrean permintaan (RIO_RQ struktur) tidak dilindungi oleh primitif sinkronisasi. Jika Anda perlu mengakses penyelesaian atau meminta antrean dari beberapa utas, akses harus dikoordinasikan oleh bagian penting, kunci tulis pembaca ramping atau mekanisme serupa. Penguncian ini tidak diperlukan untuk akses oleh satu utas. Utas yang berbeda dapat mengakses antrean permintaan/penyelesaian terpisah tanpa kunci. Kebutuhan akan sinkronisasi hanya terjadi ketika beberapa utas mencoba mengakses antrean yang sama. Sinkronisasi juga diperlukan jika beberapa masalah utas mengirim dan menerima pada soket yang sama karena operasi kirim dan terima menggunakan antrean permintaan soket.

 

Catatan

Penunjuk fungsi ke fungsi RIODequeueCompletion 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.

Keamanan Thread

Jika beberapa utas mencoba mengakses RIO_CQ yang sama menggunakan fungsi RIODequeueCompletion , akses harus dikoordinasikan oleh bagian penting, kunci penulis pembaca ramping, atau mekanisme pengecualian timbal balik serupa. Jika antrean penyelesaian tidak dibagikan, pengecualian bersama tidak diperlukan.

Persyaratan

Persyaratan Nilai
Header mswsock.h