상태 전환

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