ID3D11VideoContext::EncryptionBlt 方法 (d3d11.h)
從受保護的表面讀取加密的數據。
語法
void EncryptionBlt(
[in] ID3D11CryptoSession *pCryptoSession,
[in] ID3D11Texture2D *pSrcSurface,
[in] ID3D11Texture2D *pDstSurface,
[in] UINT IVSize,
[in] void *pIV
);
參數
[in] pCryptoSession
密碼編譯會話之 ID3D11CryptoSession 介面的指標。
[in] pSrcSurface
受保護表面之 ID3D11Texture2D 介面的指標。
[in] pDstSurface
接收加密數據之介面之 ID3D11Texture2D 介面的指標。
[in] IVSize
pIV 緩衝區的大小,以位元組為單位。
[in] pIV
接收初始化向量之緩衝區的指標, (IV) 。 呼叫端會配置此緩衝區,但驅動程式會產生IV。
若為128位 AES-CTR 加密, pIV 會指向 D3D11_AES_CTR_IV 結構。 當驅動程式產生第一個IV時,它會將結構初始化為隨機數。 針對每個後續的 IV,驅動程式只會遞增 結構的 IV 成員,以確保值一律增加。 應用程式可以驗證相同的 IV 永遠不會使用相同的金鑰組多次使用。
傳回值
如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
備註
並非所有驅動程式都支援此方法。 若要查詢驅動程式功能,請呼叫 ID3D11VideoDevice::GetContentProtectionCaps ,並在 D3D11_VIDEO_CONTENT_PROTECTION_CAPS 結構的 Caps 成員中檢查 D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK 旗標。
某些驅動程式可能需要個別的密鑰來解密所讀取的數據。 若要檢查此需求,請呼叫 GetContentProtectionCaps 並檢查 D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK_KEY 旗標。 如果存在此旗標,請呼叫 ID3D11VideoContext::GetEncryptionBltKey 以取得解密密鑰。
此方法有下列限制:
- 不支援回讀子矩形。
- 不支援回讀部分加密表面。
- 受保護的表面必須是螢幕外純螢幕或轉譯目標。
- 目的地介面必須是 D3D11_USAGE_STAGING 資源。
- 受保護的表面無法進行多重取樣。
- 不支援延展和色彩空間轉換。
此函式不接受可能已設定的 D3D11 述詞。
如果應用程式使用 D3D11 查詢,則使用低於 11 的功能層級時,此函式可能不會考慮 D3D11_QUERY_EVENT 和 D3D11_QUERY_TIMESTAMP 。 D3D11_QUERY_PIPELINE_STATISTICS 不會針對任何功能層級包含此函式。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2012 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | d3d11.h |