struktur RIO_NOTIFICATION_COMPLETION (mswsock.h)
Struktur RIO_NOTIFICATION_COMPLETION menentukan metode untuk penyelesaian I/O yang akan digunakan dengan fungsi RIONotify untuk mengirim atau menerima data jaringan dengan ekstensi I/O terdaftar Winsock.
Sintaks
typedef struct _RIO_NOTIFICATION_COMPLETION {
RIO_NOTIFICATION_COMPLETION_TYPE Type;
union {
struct {
HANDLE EventHandle;
BOOL NotifyReset;
} Event;
struct {
HANDLE IocpHandle;
PVOID CompletionKey;
PVOID Overlapped;
} Iocp;
};
} RIO_NOTIFICATION_COMPLETION, *PRIO_NOTIFICATION_COMPLETION;
Anggota
Type
Jenis penyelesaian yang akan digunakan dengan fungsi RIONotify saat mengirim atau menerima data.
Event
Event.EventHandle
Handel untuk peristiwa yang akan diatur mengikuti permintaan RIONotify yang telah selesai.
Nilai ini valid ketika anggota Jenis diatur ke RIO_EVENT_COMPLETION.
Event.NotifyReset
Nilai boolean yang menyebabkan peristiwa terkait diatur ulang ketika fungsi RIONotify dipanggil. Nilai bukan nol menyebabkan peristiwa terkait diatur ulang.
Nilai ini valid ketika anggota Jenis diatur ke RIO_EVENT_COMPLETION.
Iocp
Iocp.IocpHandle
Handel untuk port penyelesaian I/O yang akan digunakan untuk mengantre penyelesaian permintaan RIONotify .
Nilai ini valid ketika anggota Tipe diatur ke RIO_IOCP_COMPLETION.
Iocp.CompletionKey
Nilai yang digunakan untuk parameter lpCompletionKey yang dikembalikan oleh fungsi GetQueuedCompletionStatus atau GetQueuedCompletionStatusEx saat mengantre permintaan RIONotify .
Nilai ini valid ketika anggota Tipe diatur ke RIO_IOCP_COMPLETION.
Iocp.Overlapped
Penunjuk ke struktur YANG TUMPANG TINDIH untuk digunakan saat mengantre penyelesaian permintaan RIONotify . Anggota ini harus menunjuk ke struktur TUMPANG TINDIH yang valid.
Nilai ini valid ketika anggota Tipe diatur ke RIO_IOCP_COMPLETION.
Keterangan
Struktur RIO_NOTIFICATION_COMPLETION digunakan untuk menentukan perilaku fungsi RIONotify yang digunakan dengan ekstensi I/O terdaftar Winsock.
Struktur RIO_NOTIFICATION_COMPLETION diteruskan ke fungsi RIOCreateCompletionQueue saat RIO_CQ dibuat. Jika aplikasi tidak memanggil fungsi RIONotify untuk antrean penyelesaian, antrean penyelesaian dapat dibuat tanpa objek RIO_NOTIFICATION_COMPLETION .
Untuk antrean penyelesaian menggunakan peristiwa, anggota Jenis struktur RIO_NOTIFICATION_COMPLETION diatur ke RIO_EVENT_COMPLETION. Anggota Event.EventHandle dari struktur RIO_NOTIFICATION_COMPLETION harus berisi handel untuk peristiwa yang dibuat oleh fungsi WSACreateEvent atau CreateEvent . Untuk menerima penyelesaian RIONotify , aplikasi harus menunggu pada handel peristiwa yang ditentukan menggunakan WSAWaitForMultipleEvents atau rutinitas tunggu serupa. Jika aplikasi berencana untuk mengatur ulang dan menggunakan kembali peristiwa, aplikasi dapat mengurangi overhead dengan mengatur anggota Event.NotifyReset dari struktur RIO_NOTIFICATION_COMPLETION ke nilai bukan nol. Hal ini menyebabkan peristiwa direset oleh fungsi RIONotify saat pemberitahuan terjadi. Ini mengurangi kebutuhan untuk memanggil fungsi WSAResetEvent untuk mengatur ulang peristiwa antara panggilan ke fungsi RIONotify .
Untuk antrean penyelesaian menggunakan port penyelesaian I/O, anggota Jenis struktur RIO_NOTIFICATION_COMPLETION diatur ke RIO_IOCP_COMPLETION. Anggota Iocp.IocpHandle dari struktur RIO_NOTIFICATION_COMPLETION harus berisi handel untuk port penyelesaian I/O yang dibuat oleh fungsi CreateIoCompletionPort . Untuk menerima penyelesaian RIONotify , aplikasi harus memanggil fungsi GetQueuedCompletionStatus atau GetQueuedCompletionStatusEx . Aplikasi harus menyediakan objek TUMPANG TINDIH khusus untuk antrean penyelesaian, dan juga dapat menggunakan anggota Iocp.CompletionKey untuk membedakan permintaan RIONotify pada antrean penyelesaian dari penyelesaian I/O lainnya termasuk penyelesaian RIONotify untuk antrean penyelesaian lainnya.
Aplikasi yang menggunakan kumpulan utas dapat menggunakan objek tunggu kumpulan utas untuk mendapatkan penyelesaian RIONotify melalui kumpulan utasnya. Dalam hal ini, panggilan ke fungsi SetThreadpoolWait harus segera mengikuti panggilan ke RIONotify. Jika fungsi SetThreadpoolWait dipanggil sebelum RIONotify dan aplikasi bergantung pada RIONotify untuk menghapus objek peristiwa, ini dapat mengakibatkan eksekusi yang memuaskan dari panggilan balik objek tunggu.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8 [khusus aplikasi desktop] |
Server minimum yang didukung | Windows Server 2012 [hanya aplikasi desktop] |
Header | mswsock.h |