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

Интерфейс IKsDataTypeHandler предоставляет методы, которые выполняют необязательную предварительную обработку и постпроцессирование примеров мультимедиа. Этот интерфейс также может возвращать размер дополнительных сведений о заголовке потока, необходимых для обработки, и может определить, находится ли определенный тип мультимедиа в заданном наборе диапазонов потоковых данных ядра.

ID для этого интерфейса IID_IKsDataTypeHandler.

Наследство

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

Методика

Интерфейс IKsDataTypeHandler имеет эти методы.

 
IKsDataTypeHandler::KsCompleteIoOperation

Метод KsCompleteIoOperation очищает расширенный заголовок и завершает операцию ввода-вывода (ввода-вывода).
IKsDataTypeHandler::KsIsMediaTypeInRanges

Метод KsIsMediaTypeInRanges проверяет, находится ли тип носителя в указанных диапазонах данных.
IKsDataTypeHandler::KsPrepareIoOperation

Метод KsPrepareIoOperation инициализирует расширенный заголовок и подготавливает образец носителя для операции ввода-вывода.
IKsDataTypeHandler::KsQueryExtendedSize

Метод KsQueryExtendedSize извлекает расширенные сведения заголовка, необходимые для операций ввода-вывода (ввода-вывода).
IKsDataTypeHandler::KsSetMediaType

Метод KsSetMediaType задает тип носителя для обработчика типов данных.

Замечания

Чтобы нейтрализовать тип данных прокси-сервера, можно загрузить необязательные обработчики типов данных для обработки потока данных по мере передачи или из фильтров в режиме ядра. Необходимо реализовать обработчик типов данных в качестве COM-сервера, который, по крайней мере, поддерживает интерфейс IKsDataTypeHandler. Обработчик типов данных может также поддерживать интерфейс IKsDataTypeCompletion.

Обработчик типов данных обычно загружается во время процесса подключения к закреплению и выгружается при сломе подключения. Однако обработчик типов данных иногда загружается кратко для других целей. Например, если приложение использует метод DirectShow IAMStreamConfig::SetFormat, приложение может использовать обработчик типов данных для завершения параметра частичного типа носителя, отправленного методу.

Прокси-сервер использует идентификаторы GUID из типа носителя в качестве классов COM-серверов, чтобы определить, что следует загружать, если какой-либо обработчик типов данных требуется загрузить. Если обработчик типов данных зарегистрирован в качестве COM-сервера в ожидаемом классе GUID, который ищет прокси-сервер, загружается обработчик типов данных. Основной тип формата сначала используется для попытки открыть COM-сервер обработчика типов данных, за которым следует подтип и описатель формата, если открытие обработчика типов данных завершается ошибкой с использованием основного типа формата. Если любая из попыток выполнена успешно, прокси-сервер запрашивает интерфейс IKsDataTypeHandler и вызывает метод KsSetMediaType интерфейса, чтобы установить текущий тип мультимедиа, используемый с обработчиком, если обработчик поддерживает множество типов. Если обработчик не найден, прокси-сервер предполагает, что при маршалинге потока в режим ядра или из режима ядра не требуется никаких других задач.

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

Дополнительные сведения о IAMStreamConfig::SetFormat и CoCreateInstanceсм. в документации по пакету SDK для Microsoft Windows.

Требования

Требование Ценность
целевая платформа Виндоус
заголовка ksproxy.h

См. также

IKsDataTypeCompletion