Peristiwa KS
Jika Anda menulis minidriver AVStream, lihat Penanganan Peristiwa di AVStream.
Set peristiwa adalah grup peristiwa terkait yang pendengarnya dapat meminta pemberitahuan. Misalnya, pendengar dapat mendaftar untuk diberi tahu tentang perubahan status perangkat, atau perubahan posisi aliran. Ketika suatu peristiwa terjadi, streaming kernel memberi tahu klien apa pun yang telah mendaftar untuk peristiwa ini.
Minidriver menjelaskan bagaimana mereka mendukung peristiwa dengan menyediakan struktur KSEVENT_ITEM yang berisi pointer untuk menangani rutinitas.
Pendengar mendaftar untuk pemberitahuan dengan memanggil rutinitas proksi streaming kernel KsSynchronousDeviceControl dengan kode kontrol IOCTL_KS_ENABLE_EVENT dan pointer ke KSEVENT dan KSEVENTDATA.structures.
Permintaan IOCTL_KS_DISABLE_EVENT menonaktifkan peristiwa tertentu. Penunjuk yang sama yang digunakan untuk mengaktifkan peristiwa harus digunakan untuk menonaktifkannya. Pointer ini secara unik mengidentifikasi peristiwa. Secara opsional, klien dapat menentukan pointer NULL dan panjang nol untuk menonaktifkan semua peristiwa aktif untuk klien.
Semua set peristiwa harus mendukung bendera KSEVENT_TYPE_BASICSUPPORT. Lihat KSEVENT untuk daftar bendera peristiwa yang tersedia.
Beberapa jenis peristiwa memerlukan parameter tambahan untuk mendaftar pemberitahuan peristiwa. Misalnya, peristiwa KSEVENT_CLOCK_POSITION_MARK pada jam dipicu ketika jam mencapai stempel waktu tertentu. Akibatnya, klien yang mendaftar untuk diberi tahu tentang peristiwa ini harus menentukan stempel waktu untuk memicu peristiwa.
Dalam kasus seperti itu, minidriver meneruskan parameter data tambahan dalam buffer data setelah struktur KSEVENTDATA . Minidriver yang mendukung jenis peristiwa seperti itu menggunakan struktur data yang diperluas, di mana anggota pertama berjenis KSEVENTDATA, untuk menyimpan data pemberitahuan.