Udostępnij przez


Zdarzenia KS

Jeśli piszesz minidriver AVStream, zobacz Obsługa zdarzeń w usłudze AVStream.

Zestawy zdarzeń to grupy powiązanych zdarzeń, dla których odbiornik może zażądać powiadomienia. Na przykład odbiornik może zarejestrować się w celu powiadomienia o zmianach stanu urządzenia lub zmianie położenia strumienia. W przypadku wystąpienia zdarzenia przesyłanie strumieniowe jądra powiadamia wszystkich klientów, którzy zarejestrowali się na potrzeby tego zdarzenia.

Minidrivers opisują, jak obsługują zdarzenie, udostępniając KSEVENT_ITEM strukturę zawierającą wskaźniki do procedur obsługi.

Słuchacze rejestrują się do otrzymywania powiadomień przez wywołanie procedury proxy strumieniowania jądra KsSynchronousDeviceControl przy użyciu kodu sterowania IOCTL_KS_ENABLE_EVENT i wskaźników do KSEVENT i struktur KSEVENTDATA.

Żądanie IOCTL_KS_DISABLE_EVENT wyłącza określone zdarzenie. Ten sam wskaźnik, który został użyty do włączenia zdarzenia, musi być używany do jego wyłączenia. Ten wskaźnik jednoznacznie identyfikuje zdarzenie. Opcjonalnie klient może określić wskaźnik o wartości NULL i długość zera, aby wyłączyć wszystkie aktywne zdarzenia dla klienta.

Wszystkie zestawy zdarzeń muszą obsługiwać flagę KSEVENT_TYPE_BASICSUPPORT. Zobacz KSEVENT, aby uzyskać listę dostępnych flag zdarzeń.

Niektóre typy zdarzeń wymagają dodatkowych parametrów do zarejestrowania w celu otrzymywania powiadomień o zdarzeniach. Na przykład zdarzenie KSEVENT_CLOCK_POSITION_MARK na zegarze jest wyzwalane, gdy zegar osiągnie określony znacznik czasu. W związku z tym klienci rejestrujący się, aby otrzymywać powiadomienia o tym zdarzeniu, muszą określić znacznik czasu, który ma wyzwolić zdarzenie.

W takim przypadku minidriver przekazuje dodatkowe parametry danych w buforze danych, umieszczając je za strukturą KSEVENTDATA. Minidrivery, które obsługują taki typ zdarzenia, używają rozszerzonej struktury danych, której pierwszy członek jest typu KSEVENTDATA do przechowywania danych powiadomień.