PFN_WSK_RECEIVE_FROM_EVENT fungsi panggilan balik (wsk.h)
Fungsi panggilan balik peristiwa WskReceiveFromEvent memberi tahu aplikasi WSK bahwa satu atau beberapa datagram telah diterima pada soket datagram.
Sintaks
PFN_WSK_RECEIVE_FROM_EVENT PfnWskReceiveFromEvent;
NTSTATUS PfnWskReceiveFromEvent(
[in, optional] PVOID SocketContext,
[in] ULONG Flags,
[in, optional] PWSK_DATAGRAM_INDICATION DataIndication
)
{...}
Parameter
[in, optional] SocketContext
Penunjuk ke konteks soket untuk soket datagram yang telah menerima datagram. Aplikasi WSK menyediakan penunjuk ini ke subsistem WSK ketika disebut fungsi WskSocket untuk membuat soket datagram.
[in] Flags
Nilai ULONG yang berisi bitwise OR dari kombinasi bendera berikut:
MSG_BCAST
Datagram diterima sebagai siaran lapisan tautan atau dengan alamat transportasi tujuan yang merupakan alamat siaran.
MSG_MCAST
Datagram diterima dengan alamat transportasi tujuan yang merupakan alamat multicast.
WSK_FLAG_AT_DISPATCH_LEVEL
Subsistem WSK yang disebut fungsi panggilan balik peristiwa WskReceiveFromEvent di IRQL = DISPATCH_LEVEL. Jika bendera ini tidak diatur, subsistem WSK mungkin telah memanggil fungsi panggilan balik peristiwa WskReceiveFromEvent di IRQL <= DISPATCH_LEVEL.
[in, optional] DataIndication
Penunjuk ke daftar tertaut struktur WSK_DATAGRAM_INDICATION yang menjelaskan datagram yang diterima. Jika parameter ini NULL, soket tidak lagi berfungsi dan aplikasi WSK harus memanggil fungsi WskCloseSocket untuk menutup soket sesegera mungkin.
Nilai kembali
Fungsi panggilan balik peristiwa WskReceiveFromEvent aplikasi WSK dapat mengembalikan salah satu kode NTSTATUS berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Aplikasi WSK menerima datagram dan mengambil semua datagram dari daftar tertaut WSK_DATAGRAM_INDICATION struktur. Subsistem WSK dapat memanggil fungsi panggilan balik peristiwa WskReceiveFromEvent lagi ketika datagram baru diterima di soket. |
|
Aplikasi WSK menerima datagram tetapi tidak mengambil semua datagram dari daftar tertaut WSK_DATAGRAM_INDICATION struktur. Aplikasi WSK mempertahankan daftar tertaut struktur WSK_DATAGRAM_INDICATION hingga semua datagram diambil. Setelah aplikasi WSK mengambil semua datagram, aplikasi ini memanggil fungsi WskRelease untuk merilis daftar tertaut struktur WSK_DATAGRAM_INDICATION kembali ke subsistem WSK. Subsistem WSK dapat memanggil fungsi panggilan balik peristiwa WskReceiveFromEvent lagi ketika datagram baru diterima di soket. |
|
Aplikasi WSK tidak menerima datagram. Jika aplikasi WSK mengembalikan kode status ini, subsistem WSK akan merespons secara berbeda tergantung pada bagaimana aplikasi WSK mengaktifkan fungsi panggilan balik peristiwa WskReceiveFromEvent .
|
Keterangan
Subsistem WSK memanggil fungsi panggilan balik peristiwa WSK aplikasi WSKReceiveFromEvent ketika datagram baru diterima pada soket datagram hanya jika fungsi panggilan balik peristiwa sebelumnya diaktifkan dengan opsi soket SO_WSK_EVENT_CALLBACK . Untuk informasi selengkapnya tentang mengaktifkan fungsi panggilan balik peristiwa soket, lihat Mengaktifkan dan Menonaktifkan Fungsi Panggilan Balik Peristiwa.
Jika fungsi panggilan balik peristiwa WskReceiveFromEvent aplikasi WSK diaktifkan pada soket datagram dan aplikasi juga memiliki panggilan tertunda ke fungsi WskReceiveFrom pada soket datagram yang sama, kemudian, ketika datagram tiba, panggilan tertunda ke fungsi WskReceiveFrom akan lebih diutamakan daripada fungsi panggilan balik peristiwa WskReceiveFromEvent . Subsistem WSK memanggil fungsi panggilan balik peristiwa WskReceiveFromEvent aplikasi hanya jika tidak ada IRP yang diantrekan dari panggilan yang tertunda ke fungsi WskReceiveFrom . Namun, aplikasi WSK tidak boleh berasumsi bahwa subsistem WSK tidak akan memanggil fungsi panggilan balik peristiwa WskReceiveFromEvent aplikasi untuk soket datagram yang memiliki panggilan tertunda ke fungsi WskReceiveFrom . Kondisi balapan ada di mana subsistem WSK masih dapat memanggil fungsi panggilan balik peristiwa WskReceiveFromEvent aplikasi WSK untuk soket. Satu-satunya cara bagi aplikasi WSK untuk memastikan bahwa subsistem WSK tidak akan memanggil fungsi panggilan balik peristiwa WskReceiveFromEvent aplikasi pada soket datagram adalah dengan menonaktifkan fungsi panggilan balik peristiwa WskReceiveFromEvent aplikasi pada soket.
Subsistem WSK memanggil fungsi panggilan balik peristiwa WSK aplikasi WSK WSK WskReceiveFromEvent di IRQL <= DISPATCH_LEVEL.
Fungsi panggilan balik peristiwa WskReceiveFromEvent aplikasi WSK tidak boleh menunggu penyelesaian permintaan WSK lainnya dalam konteks penyelesaian WSK atau fungsi panggilan balik peristiwa. Panggilan balik dapat memulai permintaan WSK lainnya (dengan asumsi bahwa panggilan balik tidak menghabiskan terlalu banyak waktu pada DISPATCH_LEVEL), tetapi tidak boleh menunggu penyelesaiannya bahkan ketika panggilan balik dipanggil di IRQL = PASSIVE_LEVEL.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia di Windows Vista dan versi yang lebih baru dari sistem operasi Windows. |
Target Platform | Windows |
Header | wsk.h (termasuk Wsk.h) |
IRQL | <= DISPATCH_LEVEL |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk