Ограничения области использования

Примечание

Этот раздел относится к 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 . Этот процесс представлен на схеме ниже.

схема, показывающая mft и приложение, отправляющее данные в реестр

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

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

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

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

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

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

 

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

схема, показывающая приложение, объект активации и MFT со стрелками к объекту fou, который имеет стрелку назад в MFT

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