D3DCONTENTPROTECTIONCAPS structure (d3d9caps.h)

Describes the content protection capabilities of a display driver. To get the capabilities, call IDirect3DDevice9Video::GetContentProtectionCaps.

Syntax

typedef struct _D3DCONTENTPROTECTIONCAPS {
  DWORD     Caps;
  GUID      KeyExchangeType;
  UINT      BufferAlignmentStart;
  UINT      BlockAlignmentSize;
  ULONGLONG ProtectedMemorySize;
} D3DCONTENTPROTECTIONCAPS;

Members

Caps

Bitwise OR of zero or more flags.

Value Meaning
D3DCPCAPS_SOFTWARE
0x00000001
The encryption is implemented in software by the driver.
D3DCPCAPS_HARDWARE
0x00000002
The encryption is implemented in hardware by the GPU.
D3DCPCAPS_PROTECTIONALWAYSON
0x00000004
Content protection is always applied to a protected Direct3D surface, regardless of whether the application explicitly enables content protection.
D3DCPCAPS_PARTIALDECRYPTION
0x00000008
The driver can use partially encrypted buffers. If this capability is not present, the entire buffer must be either encrypted or clear.
D3DCPCAPS_CONTENTKEY
0x00000010
The driver can encrypt data using a separate content key that is encrypted using the session key. For more information, see IDirect3DCryptoSession9::DecryptionBlt.
D3DCPCAPS_FRESHENSESSIONKEY
0x00000020
The driver can refresh the session key without renegotiating the key. To refresh the session key, call IDirect3DCryptoSession9::StartSessionKeyRefresh.
D3DCPCAPS_ENCRYPTEDREADBACK
0x00000040
The driver can read back encrypted data from a protected surface, using the IDirect3DCryptoSession9::EncryptionBlt method.
D3DCPCAPS_ENCRYPTEDREADBACKKEY
0x00000080
The driver requires a separate key to read encrypted data from a protected surface. To get this second key, call IDirect3DCryptoSession9::GetEncryptionBltKey.
D3DCPCAPS_SEQUENTIAL_CTR_IV
0x00000100
If the encryption type is D3DCRYPTOTYPE_AES128_CTR, the application must use a sequential count in the DXVA2_AES_CTR_IV structure. For more information, see the remarks for DXVA2_AES_CTR_IV.

KeyExchangeType

Specifies the type of key exchange required to negotiate the session key. The following GUIDs are defined.

Value Meaning
D3DKEYEXCHANGE_RSAES_OAEP
The decoder encrypts the session key using RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OAEP).
D3DKEYEXCHANGE_DXVA
Use the key exchange mechanism defined for DirectX Video Acceleration 2 (DXVA-2).

BufferAlignmentStart

The memory alignment required for buffers used by the GPU cryptographic engine. If the application uses a system memory buffer to pass encrypted content to the GPU, or to read back encrypted content from the GPU, the buffer's starting address must be a multiple of this value.

BlockAlignmentSize

The block alignment required by the GPU cryptographic engine. The size of data to be encrypted must be a multiple of this value.

ProtectedMemorySize

The total amount of memory that can be used to hold protected surfaces.

Requirements

Requirement Value
Minimum supported client Windows 7 [desktop apps only]
Minimum supported server Windows Server 2008 R2 [desktop apps only]
Header d3d9caps.h (include D3d9.h)

See also

Direct3D Video Structures

IDirect3DDevice9Video::GetContentProtectionCaps