DXGKDDI_OPM_CREATE_PROTECTED_OUTPUT callback function (dispmprt.h)

The DxgkDdiOPMCreateProtectedOutput function creates a new protected output object with Certified Output Protection Protocol (COPP) or OPM semantics.

Syntax

DXGKDDI_OPM_CREATE_PROTECTED_OUTPUT DxgkddiOpmCreateProtectedOutput;

NTSTATUS DxgkddiOpmCreateProtectedOutput(
  [in]  PVOID MiniportDeviceContext,
  [in]  D3DDDI_VIDEO_PRESENT_TARGET_ID VidPnTargetId,
  [in]  DXGKMDT_OPM_VIDEO_OUTPUT_SEMANTICS NewVideoOutputSemantics,
  [out] PHANDLE NewProtectedOutputHandle
)
{...}

Parameters

[in] MiniportDeviceContext

A handle to a context block associated with a display adapter. Previously, the display miniport driver's DxgkDdiAddDevice function provided this handle to the DirectX graphics kernel subsystem.

[in] VidPnTargetId

An integer that uniquely identifies the video present target that corresponds to the new protected output object. Each video present target must correspond to one physical monitor connector. If VidPnTargetId corresponds to multiple physical monitor connectors, DxgkDdiOPMCreateProtectedOutput should return the STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED or STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED error code.

[in] NewVideoOutputSemantics

A DXGKMDT_OPM_VIDEO_OUTPUT_SEMANTICS-typed value that determines whether the new protected output has COPP or OPM semantics.

[out] NewProtectedOutputHandle

A pointer to a variable that receives the handle to the new protected output object if DxgkDdiOPMCreateProtectedOutput returns successfully. The DirectX graphics kernel subsystem passes this handle in calls to the display miniport driver's DxgkDdiOPMGetRandomNumber, DxgkDdiOPMSetSigningKeyAndSequenceNumbers DxgkDdiOPMGetInformation, DxgkDdiOPMGetCOPPCompatibleInformation, DxgkDdiOPMConfigureProtectedOutput, and DxgkDdiOPMDestroyProtectedOutput.

If DxgkDdiOPMCreateProtectedOutput fails, the value of the variable is unchanged.

Return value

DxgkDdiOPMCreateProtectedOutput returns one of the following values.

Return code Description
STATUS_SUCCESS The function successfully created a new protected output object.
STATUS_GRAPHICS_OPM_NOT_SUPPORTED The display miniport driver does not support OPM either because the hardware vendor never signed the OPM license agreement or the miniport driver's graphics hardware does not comply with OPM rules.
STATUS_GRAPHICS_COPP_NOT_SUPPORTED The display miniport driver does not support COPP either because the hardware vendor never signed the COPP license agreement or the miniport driver's graphics hardware does not comply with COPP rules.
STATUS_NO_MEMORY DxgkDdiOPMCreateProtectedOutput cannot allocate memory required for it to complete.
STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED DxgkDdiOPMCreateProtectedOutput could not create a protected output because the video present target is in spanning mode. When the video present target is in spanning mode, it corresponds to multiple physical monitor connectors and each connector displays a separate part of the frame buffer. For a diagram of how the display miniport driver typically implements spanning mode, see the Remarks section. The display miniport driver informs the operating system on how the frame buffer corresponds to a particular monitor. The left half of the frame buffer is displayed on one monitor, and the right half of the frame buffer is displayed on the other monitor.
STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED DxgkDdiOPMCreateProtectedOutput could not create a protected output because the video present target is in theater mode. When the video present target is in theater mode, it corresponds to two physical monitor connectors; one connector displays the entire frame buffer and the other connector displays only part of the frame buffer. Theater mode is also known as mirror mode. For a diagram of how the display miniport driver typically implements theater mode, see the Remarks section. The display miniport driver informs the operating system on how the frame buffer corresponds to a particular monitor. The entire frame buffer is displayed on one monitor, and only part of the frame buffer is displayed on the other monitor.

This function might also return other error codes that are defined in Ntstatus.h.

Remarks

The following figure shows how the display miniport driver typically implements spanning mode.

Diagram illustrating spanning mode The following figure shows how the display miniport driver typically implements theater mode. Diagram illustrating theater mode *DxgkDdiOPMCreateProtectedOutput* should be made pageable.

Requirements

Requirement Value
Target Platform Desktop
Header dispmprt.h (include Dispmprt.h)
IRQL PASSIVE_LEVEL (see Remarks section)

See also

DXGKMDT_OPM_VIDEO_OUTPUT_SEMANTICS

DxgkDdiAddDevice

DxgkDdiOPMConfigureProtectedOutput

DxgkDdiOPMDestroyProtectedOutput

DxgkDdiOPMGetCOPPCompatibleInformation

DxgkDdiOPMGetInformation

DxgkDdiOPMGetRandomNumber

DxgkDdiOPMSetSigningKeyAndSequenceNumbers