상태 전환
질서 정연한 리소스 할당을 보장하기 위해 가능한 커널 스트리밍 상태 전환의 하위 집합만 허용됩니다. 다음 표에서는 Stream 클래스 미니드라이버가 일반적으로 이러한 전환 중에 수행하는 작업과 함께 허용되는 전환을 나열합니다.
전환 | 설명 |
---|---|
중지하여 일시 중지 |
리소스를 할당합니다. 읽기 SRB는 KSSTATE_PAUSE 전환이 완료된 후 큐에 대기됩니다. |
일시 중지하여 실행 |
스트리밍을 시작합니다. |
를 실행하여 일시 중지 |
스트리밍을 중지합니다. 미해결 읽기 SRB는 미니드라이버에서 유지 관리하는 큐에 남아 있습니다. |
중지하려면 일시 중지 |
리소스 할당을 취소하고 미해결 읽기 SRB를 모두 완료합니다. 이미지로 채워지지 않은 SRB는 KSSTREAM_HEADER 구조체의 DataUsed 멤버에서 길이가 0으로 완료됩니다. |
참고: 전환은 KSSTATE_STOP 상태로 돌아가기 전에 KSSTATE_PAUSE 상태와 KSSTATE_RUN 상태 간에 여러 번 순환할 수 있습니다. 비디오 캡처 미니드라이버에는 다음과 같은 전환이 예상되어야 합니다.
KSSTATE_STOP ->KSSTATE_ACQUIRE -KSSTATE_PAUSE ->KSSTATE_RUN ->>KSSTATE_PAUSE -KSSTATE_RUN ->KSSTATE_PAUSE ->>KSSTATE_STOP
스트림이 KSSTATE_STOP 상태이면 미니드라이버가 미해결 데이터 읽기 SRB를 즉시 완료해야 합니다.
스트리밍하는 동안 사용자 모드 애플리케이션이 예기치 않게 종료할 수 있으므로 모든 Stream 클래스 미니드라이버가 언제든지 Stream 클래스 인터페이스에서 SRB_CLOSE_STREAM 요청을 수락하고 처리해야 합니다. Stream 클래스 인터페이스는 미니 드라이버에 SRB_CLOSE_STREAM 보내기 전에 미니 드라이버의 HwCancelPacket 루틴을 통해 모든 미해결 버퍼를 취소합니다. 애플리케이션이 종료되기 전에 스트림 상태를 KSSTATE_STOP 설정할 수 없습니다.
KSSTATE_PAUSE KSSTATE_RUN 또는 KSSTATE_RUN KSSTATE_PAUSE전환할 때 KS_FRAME_INFO, KS_VBI_FRAME_INFO또는KSPROPERTY_DROPPEDFRAMES_CURRENT_SPictureNumber 또는 DropCount 멤버를 업데이트하지 마세요. 자세한 내용은 비디오 캡처를 참조하세요.