共用方式為


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_DECRYPTIONBLTpIV 成員指向 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)

另請參閱

CreateCryptoSession

D3DDDIARG_CREATECRYPTOSESSION

D3DDDIARG_DECRYPTIONBLT

D3DDDI_DEVICEFUNCS