다음을 통해 공유


KS 이벤트

AVStream 미니드라이버를 작성하는 경우 AVStream의 이벤트 처리를 참조하세요.

이벤트 집합은 수신기가 알림을 요청할 수 있는 관련 이벤트 그룹입니다. 예를 들어 수신기는 등록하여 디바이스 상태 변경 또는 스트림 위치 변경에 대한 알림을 받을 수 있습니다. 이벤트가 발생하면 커널 스트리밍은 이 이벤트에 등록된 모든 클라이언트에 알릴 수 있습니다.

미니드라이버에서는 루틴 처리에 대한 포인터가 포함된 KSEVENT_ITEM 구조를 제공하여 이벤트를 지원하는 방법을 설명합니다.

수신기는 KSEVENTKSEVENTDATA.structures에 대한 IOCTL_KS_ENABLE_EVENT 제어 코드 및 포인터를 사용하여 커널 스트리밍 프록시 루틴 KsSynchronousDeviceControl을 호출하여 알림을 등록합니다.

IOCTL_KS_DISABLE_EVENT 요청은 지정된 이벤트를 사용하지 않도록 설정합니다. 이벤트를 사용하도록 설정하는 데 사용된 것과 동일한 포인터를 사용하여 사용하지 않도록 설정해야 합니다. 이 포인터는 이벤트를 고유하게 식별합니다. 필요에 따라 클라이언트는 NULL 포인터와 길이를 0으로 지정하여 클라이언트에 대한 모든 활성 이벤트를 사용하지 않도록 설정할 수 있습니다.

모든 이벤트 집합은 KSEVENT_TYPE_BASICSUPPORT 플래그를 지원해야 합니다. 사용 가능한 이벤트 플래그 목록은 KSEVENT 를 참조하세요.

일부 이벤트 유형에는 이벤트 알림을 등록하려면 추가 매개 변수가 필요합니다. 예를 들어 클록의 KSEVENT_CLOCK_POSITION_MARK 이벤트는 클록이 특정 타임스탬프를 도달할 때 트리거됩니다. 따라서 이 이벤트에 대한 알림을 받도록 등록하는 클라이언트는 이벤트를 트리거할 타임스탬프를 지정해야 합니다.

이 경우 미니드라이버가 KSEVENTDATA 구조 후에 데이터 버퍼에 추가 데이터 매개 변수를 전달합니다. 이러한 이벤트 형식을 지원하는 미니드라이버에서는 확장된 데이터 구조를 사용하며, 그 중 첫 번째 멤버는 KSEVENTDATA 형식의 확장 데이터 구조를 사용하여 알림 데이터를 보유합니다.