Поле ограничений использования

Примечание

Этот раздел относится к Windows 7 или более поздней версии.

 

Ограничение в области использования — это подготовка, которая ограничивает способ использования лицензии для конкретной технологии.

Media Foundation предоставляет механизм применения ограничений на использование преобразований Media Foundation (MFT), в частности кодеков. Этот механизм требует, чтобы MFT блокировал свое собственное использование приложениями, пока приложение не выполнило подтверждение с помощью MFT. Media Foundation не определяет подтверждение , как правило, это будет включать какой-то криптографический обмен.

Регистрация и перечисление

Если MFT имеет ограничения на использование, установите флаг MFT_ENUM_FLAG_FIELDOFUSE при регистрации MFT. Этот флаг применяется к следующим API регистрации MFT:

По умолчанию MFT, зарегистрированные с этим флагом, исключаются из результатов перечисления. Чтобы перечислить MFT с ограничениями поля использования, вызовите MFTEnumEx и укажите флаг MFT_ENUM_FLAG_FIELDOFUSE в параметре Flags . Этот процесс представлен на схеме ниже.

diagram showing mft and an application sending data to the registry

Функция MFTEnum всегда исключает все MFT , имеющие ограничения на использование.

Разблокировка MFT

Чтобы использовать MFT с ограничениями на использование полей, выполните следующие действия:

  1. Приложение реализует интерфейс IMFFieldOfUseMFTUnlock .
  2. Метод IMFFieldOfUseMFTUnlock::Unlock принимает указатель на интерфейс IUnknown MFT.
  3. В методе Unlock приложение выполняет необходимое подтверждение, используя любой механизм, определенный MFT. Этот шаг не определен API Media Foundation.
  4. Если метод Разблокировки завершается успешно, MFT разблокирует себя.

Приложение указывает указатель IMFFieldOfUseMFTUnlock , задав атрибут MFT_FIELDOFUSE_UNLOCK_Attribute . Задать этот атрибут можно несколькими способами в зависимости от того, как приложение создает декодер или конвейер кодирования:

API Как разблокировать поле использования
Средство чтения исходного кода Если приложение использует средство чтения источника для декодирования файла мультимедиа, задайте атрибут MFT_FIELDOFUSE_UNLOCK_Attribute в параметрах конфигурации. См . атрибуты средства чтения источника.
Модуль записи приемника Если приложение использует модуль записи приемника для кодирования файла мультимедиа, задайте атрибут MFT_FIELDOFUSE_UNLOCK_Attribute в параметрах конфигурации. См . атрибуты модуля записи приемника.
Быстрый транскод Если приложение использует функцию быстрого транскода для создания топологии кодирования, задайте MFT_FIELDOFUSE_UNLOCK_Attribute при вызове IMFTranscodeProfile::SetContainerAttributes. Дополнительные сведения о функции быстрого транскода см. в разделе API Transcode.
Топология Если топология создается напрямую, задайте MFT_FIELDOFUSE_UNLOCK_Attribute в качестве атрибута в топологии. См . атрибуты топологии.
Объект активации MFT Если приложение напрямую перечисляет декодеры или кодировщики, которые он будет использовать, задайте MFT_FIELDOFUSE_UNLOCK_Attribute в указателях IMFActivate , возвращаемых функцией MFTEnumEx .
Задайте атрибут перед вызовом IMFActivate::ActivateObject для создания MFT. Объект активации вызывает IMFFieldOfUseMFTUnlock::Unlock при создании MFT .

 

На следующей схеме показана связь между объектами активации MFT и интерфейсом IMFFieldOfUseMFTUnlock .

diagram showing an application, activation object and mft with arrows to an fou object, which has an arrow back to mft

Преобразования Media Foundation