KS-Ereignisse
Wenn Sie einen AVStream-Minidriver schreiben, finden Sie weitere Informationen unter Ereignisbehandlung in AVStream.
Ereignissätze sind Gruppen verwandter Ereignisse, für die ein Listener Benachrichtigungen anfordern kann. Ein Listener kann sich beispielsweise registrieren, um über Änderungen des Gerätezustands oder Änderungen an der Streamposition benachrichtigt zu werden. Wenn ein Ereignis auftritt, benachrichtigt das Kernelstreaming alle Clients, die sich für dieses Ereignis registriert haben.
Minidriver beschreiben, wie sie ein Ereignis unterstützen, indem sie eine KSEVENT_ITEM-Struktur bereitstellen, die Zeiger auf die Behandlung von Routinen enthält.
Listener registrieren sich für Benachrichtigungen, indem sie die Kernelstreamingproxyroutine KsSynchronousDeviceControl mit dem IOCTL_KS_ENABLE_EVENT Steuerelementcode und Zeigern auf KSEVENT und KSEVENTDATA.structures aufrufen.
Die IOCTL_KS_DISABLE_EVENT Anforderung deaktiviert ein angegebenes Ereignis. Derselbe Zeiger, der zum Aktivieren des Ereignisses verwendet wurde, muss zum Deaktivieren verwendet werden. Dieser Zeiger identifiziert das Ereignis eindeutig. Optional kann der Client einen NULL-Zeiger und die Länge 0 angeben, um alle aktiven Ereignisse für den Client zu deaktivieren.
Alle Ereignissätze müssen das KSEVENT_TYPE_BASICSUPPORT-Flag unterstützen. Eine Liste der verfügbaren Ereignisflags finden Sie unter KSEVENT .
Einige Ereignistypen erfordern zusätzliche Parameter, um sich für Ereignisbenachrichtigungen zu registrieren. Beispielsweise wird das KSEVENT_CLOCK_POSITION_MARK-Ereignis auf einer Uhr ausgelöst, wenn die Uhr einen bestimmten Zeitstempel erreicht. Daher müssen Clients, die sich registrieren, um über dieses Ereignis benachrichtigt zu werden, den Zeitstempel angeben, mit dem das Ereignis ausgelöst werden soll.
In einem solchen Fall übergibt ein Minidriver zusätzliche Datenparameter im Datenpuffer nach der KSEVENTDATA-Struktur . Minidriver, die einen solchen Ereignistyp unterstützen, verwenden eine erweiterte Datenstruktur, deren erstes Element vom Typ KSEVENTDATA ist, um die Benachrichtigungsdaten aufzunehmen.