使用限制字段

注意

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

 

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

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

注册和枚举

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

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

显示 mft 和应用程序将数据发送到注册表关系图

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

解锁 MFT

若要将 MFT 与使用字段限制配合使用,请执行以下步骤:

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

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

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

 

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

关系图,显示应用程序、激活对象和 mft,其箭头指向 fou 对象,其箭头返回 mft

媒体基础转换