Интерфейс 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 |