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.
The following figure shows how the display miniport driver typically implements 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
DxgkDdiOPMConfigureProtectedOutput
DxgkDdiOPMDestroyProtectedOutput