DrmForwardContentToInterface 函数 (drmk.h)
DrmForwardContentToInterface
函数接受指向调用方要转发受保护内容的对象的 COM 接口的指针。 该函数对对象进行身份验证,并向对象发送系统分配给受保护内容的内容 ID 和 DRM 权限。
语法
NTSTATUS DrmForwardContentToInterface(
[in] ULONG ContentId,
[in] PUNKNOWN pUnknown,
[in] ULONG NumMethods
);
参数
[in] ContentId
指定 DRM 内容 ID。 此参数标识受保护的 KS 音频流。
[in] pUnknown
指向直接接收 KS 音频筛选器 KS 音频流数据的 COM 接口的指针。
[in] NumMethods
指定 COM 接口中 pUnknown 指向的方法总数,包括其基接口中的所有方法。
返回值
如果调用成功,DrmForwardContentToInterface
返回STATUS_SUCCESS。 否则,该方法将返回适当的错误代码。 下表显示了一些可能的返回状态代码。
返回代码 | 描述 |
---|---|
|
指示与 pUnknown 关联的 KS 音频流不支持分配给 ContentId的 DRM 内容权限。 |
言论
在允许受保护的内容流经数据路径之前,系统会验证数据路径是否安全。 为此,系统对数据路径中每个模块进行身份验证,该模块从数据路径的上游端开始,然后向下游移动。 由于每个模块都经过身份验证,该模块会提供有关数据路径中下一个模块的系统信息,以便还可以对其进行身份验证。 若要成功进行身份验证,模块的二进制文件必须签名为符合 DRM。
如果数据路径中的两个相邻模块通过下游模块的 COM 接口相互通信,上游模块将调用 DrmForwardContentToInterface
函数,以便向系统提供指向 COM 接口的指针。 (如果两个模块通过 IoCallDriver 函数或下游模块的内容处理程序进行通信,上游模块将改为 DrmForwardContentToDeviceObject 或 DrmAddContentHandlers。
DrmForwardContentToInterface
对实现由 pUnknown 指向的 COM 接口中的方法的模块进行身份验证。 (如果方法分布在多个模块之间,该函数会验证所有这些模块。此供应商定义的接口必须由调用接口的模块和实现接口的模块理解。
DrmForwardContentToInterface
对此接口没有假设,但该接口派生自 IUnknown 。
如果 DrmForwardContentToInterface
成功对驱动程序或库进行身份验证,请执行以下作:
-
查询 pUnknown 接口,以获取其 IDrmAudioStream 接口。 请注意,尽管
DrmForwardContentToInterface
对 pUnknown 接口中的所有方法进行身份验证,但它不会调用除基本 IUnknown 方法以外的 pUnknown 接口中的任何方法。 -
调用 IDrmAudioStream::SetContentId 以在音频流上设置 DRM 内容 ID 和 DRM 内容权限。 在返回之前,
DrmForwardContentToInterface
释放 IDrmAudioStream 接口。
DrmForwardContentToInterface
执行与 PcForwardContentToInterface 和 IDrmPort::ForwardContentToInterface相同的函数。 有关详细信息,请参阅 DRM 函数和接口。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | drmk.h (包括 Drmk.h) |
库 | Drmk.lib |
IRQL | PASSIVE_LEVEL |
另请参阅
DrmForwardContentToDeviceObject