Интерфейс IKsDataTypeHandler (ksproxy.h)
Интерфейс IKsDataTypeHandler предоставляет методы, которые выполняют необязательную предварительную и постобработку примеров мультимедиа. Этот интерфейс также может возвращать размер дополнительных сведений заголовка потока, необходимых для обработки, и может определить, находится ли конкретный тип мультимедиа в заданном наборе диапазонов данных потоковой передачи ядра.
Идентификатор IID для этого интерфейса IID_IKsDataTypeHandler.
Наследование
Интерфейс IKsDataTypeHandler наследуется от интерфейса IUnknown .
Методы
Интерфейс IKsDataTypeHandler содержит следующие методы.
IKsDataTypeHandler::KsCompleteIoOperation Метод KsCompleteIoOperation очищает расширенный заголовок и завершает операцию ввода-вывода. |
IKsDataTypeHandler::KsIsMediaTypeInRanges Метод KsIsMediaTypeInRanges проверяет, находится ли тип носителя в пределах предоставленных диапазонов данных. |
IKsDataTypeHandler::KsPrepareIoOperation Метод KsPrepareIoOperation инициализирует расширенный заголовок и подготавливает образец носителя для операции ввода-вывода. |
IKsDataTypeHandler::KsQueryExtendedSize Метод KsQueryExtendedSize извлекает расширенные сведения о заголовке, необходимые для операций ввода-вывода. |
IKsDataTypeHandler::KsSetMediaType Метод KsSetMediaType задает тип носителя для обработчика типа данных. |
Комментарии
Чтобы сохранить нейтральный тип данных прокси-сервера, можно загрузить необязательные обработчики типов данных для передачи потока данных по мере его передачи в фильтры режима ядра или из него. Следует реализовать обработчик типов данных в качестве COM-сервера, который, по крайней мере, поддерживает интерфейс IKsDataTypeHandler . Обработчик типов данных может при необходимости поддерживать интерфейс IKsDataTypeCompletion .
Обработчик типов данных обычно загружается в процессе соединения с закреплением и выгружается при разрыве соединения. Однако обработчик типов данных иногда загружается кратко для других целей. Например, если приложение использует метод IAMStreamConfig::SetFormat DirectShow , приложение может использовать обработчик типа данных для завершения частичного параметра типа мультимедиа, отправленного в метод .
Прокси-сервер использует идентификаторы GUID из типа мультимедиа в качестве классов COM-серверов, чтобы определить, что нужно загрузить обработчику типа данных. Если обработчик типа данных зарегистрирован как COM-сервер в ожидаемом классе GUID, который ищет прокси-сервер, он загружается. Основной тип формата сначала используется для открытия COM-сервера обработчика типов данных, а затем подтипа и описатель формата в случае сбоя при открытии обработчика типа данных с использованием основного типа формата. Если какая-либо из попыток завершается успешно, прокси-сервер запрашивает интерфейс IKsDataTypeHandler и вызывает метод KsSetMediaType интерфейса, чтобы установить текущий тип мультимедиа, используемый с обработчиком, на случай, если обработчик поддерживает много типов. Если обработчик не найден, прокси-сервер предполагает, что при маршалинге потока в режим ядра или из него, а также для выполнения других необходимых задач не требуется.
В запросе на создание типа данных обработчика с помощью CoCreateInstance на сервере всегда отображается внешний IUnknown , с помощью которого создается COM-объект. Этот интерфейс IUnknown является интерфейсом для закрепленного объекта, который загружает этот обработчик. Указатель интерфейса IUnknown можно использовать для запроса сведений или интерфейсов из закрепления, таких как интерфейсы IKsPin или IKsControl , хотя контакт в режиме ядра, возможно, не был создан во время загрузки обработчика. Не следует оставлять ссылки на внешнем объекте путем получения каких-либо интерфейсов, так как это приведет к циклической подсчету ссылок. Использование интерфейсов без количества ссылок допустимо, так как внешний объект владеет обработчиком и по определению уничтожается, когда число ссылок внешнего объекта достигает нуля.
Дополнительные сведения о IAMStreamConfig::SetFormat и CoCreateInstance см. в документации по Microsoft Windows SDK.
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | ksproxy.h |