DRMFORWARD 结构 (drmk.h)

DRMFORWARD 结构包含 DRMK 系统驱动程序 需要的信息,以便将 DRM 内容 ID 转发到处理受保护内容的设备。

语法

typedef struct tagDRMFORWARD {
  DWORD          Flags;
  PDEVICE_OBJECT DeviceObject;
  PFILE_OBJECT   FileObject;
  PVOID          Context;
} DRMFORWARD, *PDRMFORWARD;

成员

Flags

当前未定义任何标志位。 将此成员设置为零。

DeviceObject

指向设备对象的指针,它是 DEVICE_OBJECT类型的系统结构。

FileObject

指向文件对象的指针,它是 FILE_OBJECT类型的系统结构。

Context

指向上下文数据的指针。 有关详细信息,请参阅以下“备注”部分。

言论

此结构是 DrmForwardContentToDeviceObject 函数的调用参数之一。 该结构包含函数需要向 WDM 驱动程序发送 KSPROPERTY_DRMAUDIOSTREAM_CONTENTIDset-property 请求的信息。

WDM 驱动程序管理由 DeviceObject 成员表示的设备。 DrmForwardContentToDeviceObject 函数将属性请求发送到此设备对象。

构造包含属性请求的 IRP 时,DrmForwardContentToDeviceObject 函数会将 FileObject 成员复制到 IRP 驱动程序的 I/O 堆栈位置 FileObject 字段。 如果 WDM 驱动程序是 KS 驱动程序(它实现 KS 筛选器的全部或部分),则 FileObject 成员表示要接收包含受保护内容的流的筛选器上的引脚。 对于非 KS 驱动程序,FILE_OBJECT结构中的上下文字段可以包含任何值,其含义在驱动程序与 DrmForwardContentToDeviceObject 函数的调用方之间达成一致。

Context 成员包含 DrmForwardContentToDeviceObject 函数复制到KSPROPERTY_DRMAUDIOSTREAM_CONTENTID set-property 请求的属性描述符(KSP_DRMAUDIOSTREAM_CONTENTID 结构的 Context 成员)的属性描述符)。 Context 成员可以包含其含义在驱动程序与 DrmForwardContentToDeviceObject 函数之间的约定的任何值。

按照约定,如果下游模块是 KS 筛选器,则 Context 成员指向一个文件对象,该对象指定 DrmForwardContentToDeviceObject 函数向其发送属性请求的 KS 引脚。 换句话说,Context 成员指向与 FileObject 成员相同的文件对象。

PcForwardContentToDeviceObject 函数和 IDrmPort2::ForwardContentToDeviceObject 方法也使用了 DRMFORWARD 结构,该方法是 DrmForwardContentToDeviceObject 函数的替代入口点。 有关详细信息,请参阅 DRM 函数和接口

当音频驱动程序将 DRM 内容转发到系统提供的 USB 驱动程序时,以下条件适用:

  • DRMFORWARD。必须将 DeviceObject 放在设备堆栈的顶部。
  • DRMFORWARD。FileObject 可以 NULL,因为 USB 堆栈不使用IO_STACK_LOCATION。FileObject。
  • DRMFORWARD。上下文 必须设置为与音频驱动程序使用的管道对应的USBD_PIPE_HANDLE值。

有关 DRM 的一般信息,请参阅 数字权限管理

要求

要求 价值
标头 drmk.h (包括 Drmk.h)

另请参阅

DEVICE_OBJECT

DrmForwardContentToDeviceObject

FILE_OBJECT

IDrmPort2::ForwardContentToDeviceObject

KSPROPERTY_DRMAUDIOSTREAM_CONTENTID

KSP_DRMAUDIOSTREAM_CONTENTID

PcForwardContentToDeviceObject