Переходы состояния
Чтобы обеспечить упорядоченное выделение ресурсов, допускается только подмножество возможных переходов состояния потоковой передачи ядра. В следующей таблице перечислены разрешенные переходы, а также задачи, которые мини-driver класса Stream обычно выполняет во время таких переходов.
Переход | Описание |
---|---|
Остановка для приостановки |
Выделение ресурсов. После завершения перехода на KSSTATE_PAUSE файлы SRB для чтения помещаются в очередь. |
Приостановка выполнения |
Начните потоковую передачу. |
Запуск для приостановки |
Остановить потоковую передачу. Невыполненные СРБ для чтения остаются в очереди, поддерживаемой мини-накопителем. |
Приостановка для остановки |
Отмените выделение ресурсов и завершите все невыполненные операции чтения SRB. Объекты SRB, которые не были заполнены изображением, завершаются нулевой длиной в элементе DataUsedструктуры KSSTREAM_HEADER . |
Примечание . Переходы могут циклически переключаться между состояниями KSSTATE_PAUSE и KSSTATE_RUN , прежде чем вернуться в состояние KSSTATE_STOP . Мини-видеоприводы должны ожидать следующие переходы:
KSSTATE_STOP ->KSSTATE_ACQUIRE ->KSSTATE_PAUSE ->KSSTATE_RUN ->KSSTATE_PAUSE ->KSSTATE_RUN ->KSSTATE_PAUSE -> KSSTATE_STOP
Когда поток находится в KSSTATE_STOP состоянии, мини-диск должен немедленно завершить все незавершенные СРБ для чтения данных.
Так как приложение пользовательского режима может неожиданно завершиться во время потоковой передачи, все мини-драйверы класса Stream должны в любое время принимать и обрабатывать запрос SRB_CLOSE_STREAM из интерфейса класса Stream. Прежде чем интерфейс класса Stream отправляет SRB_CLOSE_STREAM в мини-диск, он отменяет все необработанные буферы с помощью подпрограммы HwCancelPacket мини-драйвера. Обратите внимание, что состояние потока не может быть задано как KSSTATE_STOP до завершения работы приложения.
Не обновляйте элементы PictureNumber или DropCountKS_FRAME_INFO, KS_VBI_FRAME_INFO или KSPROPERTY_DROPPEDFRAMES_CURRENT_S при переходе с KSSTATE_PAUSE на KSSTATE_RUN или KSSTATE_RUN на KSSTATE_PAUSE. Дополнительные сведения см. в разделе Запись видео.