使用限制字段
注意
本主题适用于 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 与使用字段限制配合使用,请执行以下步骤:
- 应用程序实现 IMFFieldOfUseMFTUnlock 接口。
- IMFFieldOfUseMFTUnlock::Unlock 方法采用指向 MFT IUnknown 接口的指针。
- 在 Unlock 方法中,应用程序使用 MFT 定义的任何机制执行所需的握手。 媒体基础 API 未定义此步骤。
- 如果 解锁 方法成功,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 接口之间的关系。
相关主题