Freigeben über


KS-Ereignisse

Wenn Sie einen AVStream-Minidriver schreiben, lesen Sie die Ereignisbehandlung in AVStream.

Ereignissätze sind Gruppen verwandter Ereignisse, für die ein Listener eine Benachrichtigung anfordern kann. Beispielsweise könnte sich ein Listener anmelden, um über Änderungen am Gerätestatus oder der Datenstromposition benachrichtigt zu werden. Wenn ein Ereignis auftritt, benachrichtigt kernelstreaming alle Clients, die für dieses Ereignis registriert wurden.

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 durch Aufrufen der Kernel-Streamingproxyroutine KsSynchronousDeviceControl mit dem IOCTL_KS_ENABLE_EVENT Steuercode und Zeigern auf KSEVENT und KSEVENTDATA.structures.

Die IOCTL_KS_DISABLE_EVENT-Anforderung deaktiviert ein angegebenes Ereignis. Derselbe Zeiger, der zum Aktivieren des Ereignisses verwendet wurde, muss verwendet werden, um es zu deaktivieren. Dieser Zeiger identifiziert das Ereignis eindeutig. Optional kann der Client einen NULL-Zeiger und die Länge null 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 Ereigniskennzeichnungen finden Sie unter KSEVENT .

Für einige Ereignistypen sind zusätzliche Parameter erforderlich, 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. Folglich müssen Clients, die sich für die Benachrichtigung über dieses Ereignis registrieren, den Zeitstempel angeben, an dem das Ereignis ausgelöst werden soll.

In diesem Fall übergibt ein Minidriver im Datenpuffer zusätzliche Datenparameter 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 zu speichern.