다음을 통해 공유


IKsInterfaceHandler 인터페이스(ksproxy.h)

IKsInterfaceHandler 인터페이스는 설정된 연결에 대해 지정된 KSPIN_INTERFACE 구조에 따라 샘플을 커널로 마샬링하는 메서드를 제공합니다. 이 인터페이스의 IID는 IID_IKsInterfaceHandler.

상속

IKsInterfaceHandler 인터페이스는 IUnknown 인터페이스에서 상속됩니다.

메서드

IKsInterfaceHandler 인터페이스에는 이러한 메서드가 있습니다.

 
IKsInterfaceHandler::KsCompleteIo

KsCompleteIo 메서드는 확장 헤더를 정리하고 입력 및 출력(I/O)이 완료된 후 미디어 샘플을 해제합니다.
IKsInterfaceHandler::KsProcessMediaSamples

KsProcessMediaSamples 메서드는 미디어 샘플을 처리합니다.
IKsInterfaceHandler::KsSetPin

KsSetPin 메서드는 데이터를 전달할 때 통신할 핀에 대해 스트리밍 인터페이스 처리기에 알릴 수 있습니다.

설명

데이터를 스트리밍하는 데 사용되는 인터페이스와 관련하여 프록시를 중립으로 유지하기 위해 인터페이스 처리기가 로드되어 DirectShow 미디어 샘플을 커널 수준 드라이버로 변환합니다. 인터페이스 처리기는 IKsInterfaceHandler 인터페이스의 메서드를 구현하여 모든 미디어 샘플에서 전처리 및 후처리를 수행하고 입력 및 출력(I/O)의 완료를 알릴 수 있습니다.

각 인터페이스 처리기는 자체 메서드를 사용하여 미디어 샘플을 마샬링할 수 있습니다. KS 프록시가 구현하는 표준 인터페이스 처리기는 수신 작업에 IOCTL_KS_WRITE_STREAM 사용하고 보내기 작업에 IOCTL_KS_READ_STREAM 사용자 지정 인터페이스 처리기는 다른 메서드를 사용할 수 있습니다.

핀이 연결되면 프록시는 KSPIN_INTERFACE 구조체의 Set 멤버에서 GUID를 사용하여 로드할 인터페이스 처리기를 결정합니다. 인터페이스 처리기는 해당 GUID 클래스에서 COM 서버로 등록됩니다. 인터페이스 처리기는 인터페이스 집합 내에서 인터페이스의 모든 변형을 처리해야 합니다. 브리지 핀은 데이터를 스트리밍할 것으로 예상되지 않으며 인터페이스 처리기는 로드되지 않습니다.

CoCreateInstance를 통해 요청을 만드는 인터페이스 처리기에서 서버에는 항상 COM 개체를 만들 외부 IUnknown이 표시됩니다. 이 IUnknown 은 이 인터페이스 처리기를 로드하는 핀 개체의 인터페이스입니다. IUnknown 인터페이스 포인터를 사용하여 핀에서 IKsControl 인터페이스와 같은 정보 또는 인터페이스를 쿼리할 수 있지만 인터페이스 처리기가 로드될 때 커널 모드 핀이 만들어지지 않았을 수 있습니다. 인터페이스를 획득하여 외부 개체에 참조를 남겨서는 안 됩니다. 따라서 순환 참조 수가 발생합니다. 외부 개체가 처리기를 소유하고 정의에 따라 외부 개체의 참조 수가 0에 도달하면 제거되므로 참조 횟수 없이 인터페이스를 사용할 수 있습니다.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 ksproxy.h

추가 정보

CoCreateInstance

IKsControl

KSPIN_INTERFACE