다음을 통해 공유


상태 전환

질서 정연한 리소스 할당을 보장하기 위해 가능한 커널 스트리밍 상태 전환의 하위 집합만 허용됩니다. 다음 표에서는 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 멤버를 업데이트하지 마세요. 자세한 내용은 비디오 캡처를 참조하세요.