使用限制字段

注意

本主题适用于 Windows 7 或更高版本。

 

使用领域限制是一项规定,用于限制如何使用特定技术的许可证。

Media Foundation 提供了一种机制,用于强制实施媒体基础转换的字段限制, (MFT) ,尤其是编解码器。 此机制要求 MFT 阻止应用程序自己使用,直到应用程序与 MFT 执行握手。 Media Foundation 不定义握手 ,通常涉及某种加密交换。

注册和枚举

如果 MFT 具有使用字段限制,则注册 MFT 时设置 MFT_ENUM_FLAG_FIELDOFUSE 标志。 此标志适用于以下 MFT 注册 API:

默认情况下,向此标志注册的 MFT 将从枚举结果中排除。 若要枚举具有使用字段限制的 MFT,请调用 MFTEnumEx 并在 Flags 参数中指定MFT_ENUM_FLAG_FIELDOFUSE标志。 下图演示了此过程。

diagram showing mft and an application sending data to the registry

MFTEnum 函数始终排除具有使用字段限制的任何 MFT。

解锁 MFT

若要对使用字段限制使用 MFT,请执行以下步骤:

  1. 应用程序实现 IMFFieldOfUseMFTUnlock 接口。
  2. IMFFieldOfUseMFTUnlock::Unlock 方法使用指向 MFT 的 IUnknown 接口的指针。
  3. Unlock 方法中,应用程序使用 MFT 定义的任何机制执行所需的握手。 此步骤未由 Media Foundation API 定义。
  4. 如果 Unlock 方法成功,MFT 将自行解锁。

应用程序通过设置MFT_FIELDOFUSE_UNLOCK_Attribute属性来指定 IMFFieldOfUseMFTUnlock 指针。 设置此属性的方法有多种不同,具体取决于应用程序如何创建解码器或编码管道:

API 如何解锁使用字段
源读取器 如果应用程序使用 源读取器 解码媒体文件,请在配置参数中设置 MFT_FIELDOFUSE_UNLOCK_Attribute 属性。 请参阅 源读取器属性
接收器编写器 如果应用程序使用接收器编写器对媒体文件进行编码,请在配置参数中设置 MFT_FIELDOFUSE_UNLOCK_Attribute 属性。 请参阅 接收器编写器属性
快速转码 如果应用程序使用快速转码功能创建编码拓扑,请在调用 IMFTranscodeProfile::SetContainerAttributes 时设置MFT_FIELDOFUSE_UNLOCK_Attribute。 有关快速转码功能的详细信息,请参阅 转码 API
拓扑 如果直接创建拓扑,请将 MFT_FIELDOFUSE_UNLOCK_Attribute 设置为拓扑上的属性。 请参阅 拓扑属性
MFT 激活对象 如果应用程序直接枚举要使用的解码器或编码器,请在 MFTEnumEx 函数返回的 IMFActivate 指针上设置MFT_FIELDOFUSE_UNLOCK_Attribute
在调用 IMFActivate::ActivateObject 之前设置属性以创建 MFT。 激活对象在创建 MFT 时调用 IMFFieldOfUseMFTUnlock::Unlock

 

下图显示了 MFT 激活对象与 IMFFieldOfUseMFTUnlock 接口之间的关系。

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

媒体基础转换