DRMFORWARD structure (drmk.h)

The DRMFORWARD structure contains the information that the DRMK system driver needs in order to forward a DRM content ID to a device that handles protected content.

Syntax

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

Members

Flags

No flag bits are currently defined. Set this member to zero.

DeviceObject

Pointer to the device object, which is a system structure of type DEVICE_OBJECT.

FileObject

Pointer to the file object, which is a system structure of type FILE_OBJECT.

Context

Pointer to context data. For more information, see the following Remarks section.

Remarks

This structure is one of the DrmForwardContentToDeviceObject function's call parameters. The structure contains the information that the function needs to send a KSPROPERTY_DRMAUDIOSTREAM_CONTENTIDset-property request to a WDM driver.

The WDM driver manages the device that is represented by the DeviceObject member. The DrmForwardContentToDeviceObject function sends the property request to this device object.

When constructing the IRP that contains the property request, the DrmForwardContentToDeviceObject function copies the FileObject member into the FileObject field in the driver's I/O stack location in the IRP. If the WDM driver is a KS driver (which implements all or part of a KS filter), the FileObject member represents the pin on the filter that is to receive the stream containing the protected content. For a non-KS driver, the context fields in the FILE_OBJECT structure can contain any value whose meaning is agreed upon between the driver and the caller of the DrmForwardContentToDeviceObject function.

The Context member contains a context value that the DrmForwardContentToDeviceObject function copies into the property descriptor of the KSPROPERTY_DRMAUDIOSTREAM_CONTENTID set-property request (the KSP_DRMAUDIOSTREAM_CONTENTID structure's Context member). The Context member can contain any value whose meaning is agreed upon between the driver and the caller of the DrmForwardContentToDeviceObject function.

By convention, if the downstream module is a KS filter, the Context member points to a file object that specifies the KS pin to which the DrmForwardContentToDeviceObject function sends the property request. In other words, the Context member points to the same file object as the FileObject member.

The DRMFORWARD structure is also used by the PcForwardContentToDeviceObject function and the IDrmPort2::ForwardContentToDeviceObject method, which are alternative entry points for the DrmForwardContentToDeviceObject function. For more information, see DRM Functions and Interfaces.

When an audio driver forwards DRM content to a system-supplied USB driver, the following conditions apply:

  • DRMFORWARD.DeviceObject must be placed at the top of the device stack.
  • DRMFORWARD.FileObject can be NULL because the USB stack does not use IO_STACK_LOCATION.FileObject.
  • DRMFORWARD.Context must be set to a USBD_PIPE_HANDLE value that corresponds to the pipe used by the audio driver.

For general information about DRM, see Digital Rights Management.

Requirements

Requirement Value
Header drmk.h (include Drmk.h)

See also

DEVICE_OBJECT

DrmForwardContentToDeviceObject

FILE_OBJECT

IDrmPort2::ForwardContentToDeviceObject

KSPROPERTY_DRMAUDIOSTREAM_CONTENTID

KSP_DRMAUDIOSTREAM_CONTENTID

PcForwardContentToDeviceObject