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

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

IKsDataTypeCompletion