SO_WSK_EVENT_CALLBACK

Opsi soket SO_WSK_EVENT_CALLBACK memungkinkan aplikasi WSK untuk mengaktifkan dan menonaktifkan fungsi callback peristiwa soket. Opsi soket ini hanya berlaku untuk soket mendengarkan, soket datagram, soket berorientasi koneksi, dan soket dasar yang telah mendaftarkan antarmuka ekstensi yang setidaknya satu fungsi panggilan balik peristiwa ditentukan.

Jika aplikasi WSK menggunakan opsi soket ini untuk mengaktifkan atau menonaktifkan fungsi callback peristiwa pada soket mendengarkan atau soket datagram, aplikasi tersebut harus melakukannya setelah soket terikat ke alamat transportasi lokal.

Jika aplikasi WSK menggunakan opsi soket ini untuk mengaktifkan atau menonaktifkan fungsi callback peristiwa pada soket berorientasi koneksi, aplikasi tersebut harus melakukannya setelah soket terhubung ke alamat transportasi jarak jauh.

Untuk mengaktifkan atau menonaktifkan fungsi callback peristiwa pada soket, aplikasi WSK memanggil fungsi WskControlSocket dengan parameter berikut.

Parameter Nilai

RequestType

WskSetOption

Kode Kontrol

SO_WSK_EVENT_CALLBACK

Tingkat

SOL_SOCKET

InputSize

sizeof(WSK_EVENT_CALLBACK_CONTROL)

InputBuffer

Penunjuk ke struktur WSK_EVENT_CALLBACK_CONTROL

OutputSize

0

OutputBuffer

NULL

OutputSizeReturned

NULL

Aplikasi WSK tidak menentukan penunjuk ke IRP saat memanggil fungsi WskControlSocket untuk mengaktifkan fungsi callback peristiwa pada soket.

Aplikasi WSK dapat secara opsional menentukan penunjuk ke IRP saat memanggil fungsi WskControlSocket untuk menonaktifkan fungsi callback peristiwa pada soket.

Ketika aplikasi WSK memanggil WskControlSocket untuk menonaktifkan fungsi callback peristiwa, subsistem WSK berperilaku sebagai berikut:

  • Jika tidak ada panggilan yang sedang berlangsung ke fungsi callback peristiwa yang dinonaktifkan saat aplikasi WSK memanggil fungsi WskControlSocket , fungsi callback peristiwa dinonaktifkan dan fungsi WskControlSocket mengembalikan STATUS_SUCCESS. Jika aplikasi WSK menentukan IRP, IRP selesai dengan status sukses.

  • Jika ada panggilan yang sedang berlangsung ke fungsi callback peristiwa yang dinonaktifkan ketika aplikasi WSK memanggil fungsi WskControlSocket dan aplikasi WSK menentukan IRP, fungsi WskControlSocket mengembalikan STATUS_PENDING. Subsistem WSK menonaktifkan fungsi callback peristiwa dan menyelesaikan IRP setelah semua panggilan yang sedang berlangsung ke fungsi callback peristiwa telah kembali.

  • Jika ada panggilan yang sedang berlangsung ke fungsi callback peristiwa yang dinonaktifkan ketika aplikasi WSK memanggil fungsi WskControlSocket dan aplikasi WSK tidak menentukan IRP, fungsi WskControlSocket mengembalikan STATUS_EVENT_PENDING. Subsistem WSK menonaktifkan fungsi callback peristiwa setelah semua panggilan yang sedang berlangsung ke fungsi callback peristiwa telah kembali.

Saat mengaktifkan atau menonaktifkan salah satu fungsi callback peristiwa WSK standar, aplikasi WSK menetapkan anggota NpiId dari struktur WSK_EVENT_CALLBACK_CONTROL ke penunjuk ke pengenal WSK Network Programming Interface (NPI), NPI_WSK_INTERFACE_ID.

Saat mengaktifkan atau menonaktifkan fungsi callback apa pun untuk antarmuka ekstensi, aplikasi WSK menetapkan anggota NpiId dari struktur WSK_EVENT_CALLBACK_CONTROL ke penunjuk ke pengenal NPI untuk antarmuka ekstensi tersebut.

Saat mengaktifkan fungsi callback peristiwa, aplikasi WSK dapat secara bersamaan mengaktifkan kombinasi fungsi callback peristiwa yang berlaku untuk kategori soket WSK tertentu. Aplikasi WSK secara bersamaan memungkinkan kombinasi ini dengan mengatur anggota EventMask dari struktur WSK_EVENT_CALLBACK_CONTROL ke bitwise OR dari bendera acara untuk semua fungsi callback acara yang sedang diaktifkan.

Saat menonaktifkan fungsi callback peristiwa, aplikasi WSK harus menonaktifkan setiap fungsi callback peristiwa secara independen. Aplikasi WSK secara independen menonaktifkan fungsi callback peristiwa dengan mengatur anggota EventMask dari struktur WSK_EVENT_CALLBACK_CONTROL ke bitwise OR dari bendera event untuk fungsi callback acara yang sedang dinonaktifkan dan bendera WSK_EVENT_DISABLE.

Tabel berikut menunjukkan bendera acara yang valid untuk soket mendengarkan.

Bendera acara Fungsi callback peristiwa

WSK_EVENT_ACCEPT

WskAcceptEvent

Tabel berikut menunjukkan bendera peristiwa yang valid untuk soket datagram.

Bendera acara Fungsi callback peristiwa

WSK_EVENT_RECEIVE_FROM

WskReceiveFromEvent

Tabel berikut menunjukkan bendera peristiwa yang valid untuk soket berorientasi koneksi.

Bendera acara Fungsi callback peristiwa

WSK_EVENT_DISCONNECT

WskDisconnectEvent

WSK_EVENT_RECEIVE

WskReceiveEvent

WSK_EVENT_SEND_BACKLOG

WskSendBacklogEvent

Soket mendengarkan dapat secara otomatis mengaktifkan fungsi panggilan balik peristiwa pada soket berorientasi koneksi yang diterima oleh soket mendengarkan. Aplikasi WSK secara otomatis mengaktifkan fungsi callback ini dengan mengaktifkan fungsi callback peristiwa soket berorientasi koneksi pada soket mendengarkan. Fungsi callback peristiwa secara otomatis diaktifkan pada soket berorientasi koneksi yang diterima hanya jika soket diterima oleh fungsi callback peristiwa WskAcceptEvent soket mendengarkan. Jika soket berorientasi koneksi diterima oleh fungsi WskAccept soket pendengar, fungsi callback peristiwa soket yang diterima tidak diaktifkan secara otomatis.

Setelah fungsi callback peristiwa berorientasi koneksi diaktifkan pada soket mendengarkan, mereka tidak dapat dinonaktifkan pada soket mendengarkan. Jika fungsi callback peristiwa WskAcceptEvent dinonaktifkan dan kemudian diaktifkan kembali pada soket mendengarkan, fungsi callback peristiwa berorientasi koneksi apa pun yang awalnya diaktifkan pada soket mendengarkan itu akan terus diterapkan ke semua soket berorientasi koneksi yang diterima oleh fungsi callback peristiwa WskAcceptEvent .

Untuk informasi selengkapnya tentang mengaktifkan dan menonaktifkan fungsi callback peristiwa soket, lihat Mengaktifkan dan Menonaktifkan Fungsi Callback Peristiwa.

Persyaratan

Versi

Tersedia dalam Windows Vista dan versi yang lebih baru dari sistem operasi Windows.

Header

Wsk.h (termasuk Wsk.h)