ID3D11VideoContext::D ecryptionBlt 메서드(d3d11.h)

보호된 표면에 암호화된 데이터를 씁니다.

구문

void DecryptionBlt(
  [in] ID3D11CryptoSession        *pCryptoSession,
  [in] ID3D11Texture2D            *pSrcSurface,
  [in] ID3D11Texture2D            *pDstSurface,
  [in] D3D11_ENCRYPTED_BLOCK_INFO *pEncryptedBlockInfo,
  [in] UINT                       ContentKeySize,
  [in] const void                 *pContentKey,
  [in] UINT                       IVSize,
  [in] void                       *pIV
);

매개 변수

[in] pCryptoSession

ID3D11CryptoSession 인터페이스에 대한 포인터입니다.

[in] pSrcSurface

원본 데이터를 포함하는 표면에 대한 포인터입니다.

[in] pDstSurface

암호화된 데이터가 기록되는 보호된 표면에 대한 포인터입니다.

[in] pEncryptedBlockInfo

D3D11_ENCRYPTED_BLOCK_INFO 구조체 또는 NULL에 대한 포인터입니다.

드라이버가 부분적으로 암호화된 버퍼를 지원하는 경우 pEncryptedBlockInfo 는 암호화된 버퍼 부분을 나타냅니다. 전체 표면이 암호화된 경우 이 매개 변수를 NULL로 설정합니다.

드라이버가 부분적으로 암호화된 버퍼를 지원하는지 여부를 검사 ID3D11VideoDevice::GetContentProtectionCaps를 호출하고 D3D11_CONTENT_PROTECTION_CAPS_PARTIAL_DECRYPTION 기능 플래그에 대한 검사. 드라이버가 부분적으로 암호화된 버퍼를 지원하지 않는 경우 이 매개 변수를 NULL로 설정합니다.

[in] ContentKeySize

암호화된 콘텐츠 키의 크기(바이트)입니다.

[in] pContentKey

콘텐츠 암호화 키 또는 NULL을 포함하는 버퍼에 대한 포인터입니다. 드라이버가 콘텐츠 키 사용을 지원하는지 여부를 쿼리하려면 ID3D11VideoDevice::GetContentProtectionCaps를 호출하고 D3D11_CONTENT_PROTECTION_CAPS_CONTENT_KEY 기능 플래그에 대한 검사.

드라이버가 콘텐츠 키를 지원하는 경우 콘텐츠 키를 사용하여 표면을 암호화합니다. 세션 키를 사용하여 콘텐츠 키를 암호화하고 결과 암호 텍스트를 pContentKey에 배치합니다. 드라이버가 콘텐츠 키를 지원하지 않는 경우 세션 키를 사용하여 표면을 암호화하고 pContentKeyNULL로 설정합니다.

[in] IVSize

pIV 버퍼의 크기(바이트)입니다.

[in] pIV

IV(초기화 벡터)를 포함하는 버퍼에 대한 포인터입니다.

128비트 AES-CTR 암호화의 경우 pIVD3D11_AES_CTR_IV 구조를 가리킵니다. 호출자는 구조를 할당하고 IV를 생성합니다. 첫 번째 IV를 생성할 때 구조체를 난수로 초기화합니다. 이후의 각 IV에 대해 단순히 구조체의 IV 멤버를 증가하여 값이 항상 증가하도록 합니다. 이 절차를 통해 드라이버는 동일한 IV가 동일한 키 쌍에서 두 번 이상 사용되지 않는지 확인할 수 있습니다.

다른 암호화 유형의 경우 다른 구조가 사용되거나 암호화가 IV를 사용하지 않을 수 있습니다.

반환 값

메서드가 성공하면 S_OK를 반환하고, 그러지 않으면 HRESULT 오류 코드를 반환합니다.

설명

모든 하드웨어 또는 드라이버가 모든 암호화 유형에 대해 이 기능을 지원하는 것은 아닙니다. 이 함수는 D3D11_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT 한도가 보고된 경우에만 호출할 수 있습니다.

이 메서드는 표면의 하위 사각형에 쓰기를 지원하지 않습니다.

하드웨어 및 드라이버가 콘텐츠 키를 지원하는 경우:

  • 데이터는 콘텐츠 키를 사용하여 호출자에 의해 암호화됩니다.
  • 콘텐츠 키는 세션 키를 사용하여 호출자에 의해 암호화됩니다.
  • 암호화된 콘텐츠 키가 드라이버에 전달됩니다.
그렇지 않으면 세션 키를 사용하여 호출자가 데이터를 암호화하고 NULL이 콘텐츠 키로 전달됩니다.

드라이버와 하드웨어가 부분적으로 암호화된 버퍼를 지원하는 경우 pEncryptedBlockInfo 는 암호화된 버퍼의 일부와 암호화되지 않은 부분을 나타냅니다. 전체 버퍼가 암호화된 경우 pEncryptedBlockinfoNULL이어야 합니다.

D3D11_ENCRYPTED_BLOCK_INFO 애플리케이션이 버퍼에서 암호화되는 바이트를 나타낼 수 있습니다. 이 값은 바이트로 지정되므로 애플리케이션은 암호화된 블록이 GPU의 암호화 블록 맞춤과 일치하는지 확인해야 합니다.

이 함수는 설정되었을 수 있는 D3D11 조건자를 적용하지 않습니다.

애플리케이션에서 D3D11 쿼리를 사용하는 경우 이 함수는 11보다 낮은 기능 수준을 사용할 때 D3D11_QUERY_EVENTD3D11_QUERY_TIMESTAMP 고려되지 않을 수 있습니다. D3D11_QUERY_PIPELINE_STATISTICS 기능 수준에 대해 이 함수를 포함하지 않습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 d3d11.h

추가 정보

ID3D11VideoContext