Интерфейс IKsInterfaceHandler (ksproxy.h)

Интерфейс IKsInterfaceHandler предоставляет методы, которые маршалируют примеры в ядро на основе структуры KSPIN_INTERFACE , указанной для установленного соединения. Идентификатор IID для этого интерфейса IID_IKsInterfaceHandler.

Наследование

Интерфейс IKsInterfaceHandler наследуется от интерфейса IUnknown .

Методы

Интерфейс IKsInterfaceHandler содержит следующие методы.

 
IKsInterfaceHandler::KsCompleteIo

Метод KsCompleteIo очищает расширенные заголовки и освобождает примеры мультимедиа после завершения ввода-вывода.
IKsInterfaceHandler::KsProcessMediaSamples

Метод KsProcessMediaSamples обрабатывает примеры мультимедиа.
IKsInterfaceHandler::KsSetPin

Метод KsSetPin сообщает обработчику интерфейса потоковой передачи о контакте, с которым необходимо обмениваться данными при передаче данных.

Комментарии

Чтобы сохранить прокси-сервер нейтральным по отношению к интерфейсу, используемому для потоковой передачи данных, загружаются обработчики интерфейса для преобразования примеров мультимедиа DirectShow в драйвер уровня ядра и из нее. Обработчик интерфейса реализует методы интерфейса IKsInterfaceHandler для выполнения предварительной и постобработки на всех примерах носителей, а также для передачи сигналов о завершении ввода-вывода ввода-вывода.

Каждый обработчик интерфейса может маршалирование примеров мультимедиа с помощью собственного метода. Стандартный обработчик интерфейса, который реализует прокси-сервер KS, использует IOCTL_KS_WRITE_STREAM для операции получения и IOCTL_KS_READ_STREAM для операции отправки, но обработчик пользовательского интерфейса может использовать другой метод.

При подключении контакта прокси-сервер использует GUID в элементе Setструктуры KSPIN_INTERFACE , чтобы определить, какой обработчик интерфейса следует загрузить. Обработчик интерфейса регистрируется как COM-сервер в этом классе GUID. Обработчик интерфейса должен обрабатывать все варианты интерфейса в наборе интерфейсов. Контакты моста не должны выполнять потоковую передачу данных, и обработчики интерфейса для них не загружаются.

В запросе на создание обработчика интерфейса через CoCreateInstance на сервере всегда отображается внешний интерфейс IUnknown , с помощью которого создается COM-объект. Этот интерфейс IUnknown является интерфейсом в закрепленном объекте, который загружает этот обработчик интерфейса. Указатель интерфейса IUnknown можно использовать для запроса информации или интерфейсов, таких как интерфейс IKsControl , из контакта, хотя контакт в режиме ядра мог не быть создан во время загрузки обработчика интерфейса. Не следует оставлять ссылки на внешний объект путем получения каких-либо интерфейсов, так как это приведет к циклическим подсчетам ссылок. Использование интерфейсов без счетчика ссылок допустимо, так как внешний объект владеет обработчиком и по определению уничтожается, когда число ссылок внешнего объекта достигает нуля.

Требования

Требование Значение
Целевая платформа Windows
Header ksproxy.h

См. также раздел

CoCreateInstance

IKsControl

KSPIN_INTERFACE