Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Интерфейс 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 |