PFND3DDDI_DECRYPTIONBLT回呼函式 (d3dumddi.h)
DecryptionBlt 函式會將數據寫入受保護的介面。
語法
PFND3DDDI_DECRYPTIONBLT Pfnd3dddiDecryptionblt;
HRESULT Pfnd3dddiDecryptionblt(
HANDLE hDevice,
const D3DDDIARG_DECRYPTIONBLT *unnamedParam2
)
{...}
參數
hDevice
顯示裝置的句柄(圖形內容)。
unnamedParam2
pData [in]
描述解密位區塊傳輸 (bitblt) 作業參數之 D3DDDIARG_DECRYPTIONBLT 結構的指標。
傳回值
DecryptionBlt 會傳回下列其中一個值:
傳回碼 | 描述 |
---|---|
S_OK | 已成功執行解密的 bitblt 作業。 |
E_OUTOFMEMORY | DecryptionBlt 無法配置所需的記憶體,使其完成。 |
D3DDDIERR_NOTAVAILABLE | 驅動程式不支援 DecryptionBlt 函式。 |
言論
硬體和驅動程式可以選擇性地支援某些加密類型的 DecryptionBlt。
如果呼叫的應用程式需要使用內容密鑰,應用程式會使用內容金鑰來加密數據,而會話密鑰會先加密內容密鑰,再將內容金鑰傳遞至 pContentKeyD3DDDIARG_DECRYPTIONBLT 指向的記憶體區塊中。 如果 pContentKeyNULL,表示應用程式使用會話密鑰來加密數據。
如果驅動程式的 CreateCryptoSession 函式先前使用設定為 D3DCRYPTOTYPE_AES128_CTR 之 D3DDDIARG_CREATECRYPTOSESSION 結構的 CryptoType 成員建立加密會話,則 D3DDDIARG_DECRYPTIONBLT 的 pIV 成員指向 DXVADDI_PVP_HW_IV 結構,並包含應用程式用來加密緩衝區的初始化向量。 驅動程式的 DecryptionBlt 函式如果判斷先前用於相同內容金鑰的初始化向量(如果未使用內容密鑰,則會話密鑰)應該會失敗。 應用程式應該針對應用程式加密的每個緩衝區,遞增 IV 成員DXVADDI_PVP_HW_IV結構的成員。 因此,如果 IV 成員小於或等於先前傳遞至 decryptionBlt DecryptionBlt的先前 IV 值,驅動程式的 DecryptionBlt 函式可能會失敗。
如果驅動程式和硬體支援部分加密的緩衝區,pEncryptedBlockInfo 成員 D3DDDIARG_DECRYPTIONBLT 表示已加密的緩衝區部分,以及未加密的部分。 如果整個緩衝區已加密,pEncryptedBlockInfo 應該 NULL。
DecryptionBlt 無法寫入子矩形。
Direct3D 運行時間會確認 SrcSubResourceIndex 所指定的來源介面D3DDDIARG_DECRYPTIONBLT 結構的成員位於系統記憶體中,而且不會執行延展、色彩空間轉換等等。 應用程式應該確保系統記憶體緩衝區已正確對齊,且緩衝區的大小符合目的地介面。 驅動程式應確認記憶體對齊方式和緩衝區大小(SrcResourceSize D3DDDIARG_DECRYPTIONBLT 成員),如果這些條件不正確,則失敗。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 7作系統開始,支援 DecryptionBlt。 |
目標平臺 | 桌面 |
標頭 | d3dumddi.h (包括 D3dumddi.h) |