Statusübergänge
Um eine geordnete Ressourcenzuordnung sicherzustellen, ist nur eine Teilmenge der möglichen Kernel-Streamingstatusübergänge zulässig. In der folgenden Tabelle sind die zulässigen Übergänge zusammen mit Aufgaben aufgeführt, die ein Stream-Klassenminidriver normalerweise während solcher Übergänge ausführt.
Übergang | Beschreibung |
---|---|
Anhalten, um anzuhalten |
Zuordnen von Ressourcen. Die Lese-SRBs werden nach Abschluss des Übergangs zu KSSTATE_PAUSE in die Warteschlange eingereiht. |
Anhalten der Ausführung |
Beginnen Sie mit dem Streaming. |
Ausführen, um anzuhalten |
Streaming beenden. Die ausstehenden Lese-SRBs verbleiben in der Warteschlange, die vom Minitreiber verwaltet wird. |
Anhalten, um anzuhalten |
Aufheben der Zuordnung von Ressourcen und Abschließen aller ausstehenden Lese-SRBs. SRBs, die nicht mit einem Bild gefüllt wurden, werden mit der Länge 0 (null) im DataUsed-Member der KSSTREAM_HEADER-Struktur abgeschlossen. |
Hinweis : Übergänge können mehrmals zwischen dem KSSTATE_PAUSE - und KSSTATE_RUN zustand wechseln, bevor sie zum KSSTATE_STOP Zustand zurückkehren. Videoaufnahme-Minitreiber sollten Übergänge erwarten, z. B.:
KSSTATE_STOP ->KSSTATE_ACQUIRE ->KSSTATE_PAUSE ->KSSTATE_RUN ->KSSTATE_PAUSE ->KSSTATE_RUN ->KSSTATE_PAUSE -> KSSTATE_STOP
Wenn sich ein Stream in einem KSSTATE_STOP Zustand befindet, muss der Minidriver sofort alle ausstehenden SRBs mit Lesedaten abschließen.
Da eine Anwendung im Benutzermodus während des Streamings unerwartet beendet werden kann, müssen alle Stream-Klassen-Minitreiber jederzeit eine SRB_CLOSE_STREAM-Anforderung von der Stream-Klassenschnittstelle akzeptieren und verarbeiten. Bevor die Stream-Klassenschnittstelle SRB_CLOSE_STREAM an einen Minitreiber sendet, werden alle ausstehenden Puffer über die HwCancelPacket-Routine des Minitreibers abgebrochen. Beachten Sie, dass der Streamstatus nicht auf KSSTATE_STOP festgelegt werden kann, bevor die Anwendung beendet wird.
Aktualisieren Sie die PictureNumber - oder DropCount-Member von KS_FRAME_INFO, KS_VBI_FRAME_INFO oder KSPROPERTY_DROPPEDFRAMES_CURRENT_S nicht beim Übergang von KSSTATE_PAUSE zu KSSTATE_RUN oder KSSTATE_RUN zu KSSTATE_PAUSE. Weitere Informationen finden Sie unter Aufzeichnen von Videos.