PFND3DDDI_ENCRYPTIONBLT回呼函式 (d3dumddi.h)
EncryptionBlt 函式會從受保護的表面讀取加密的數據。
語法
PFND3DDDI_ENCRYPTIONBLT Pfnd3dddiEncryptionblt;
HRESULT Pfnd3dddiEncryptionblt(
HANDLE hDevice,
const D3DDDIARG_ENCRYPTIONBLT *unnamedParam2
)
{...}
參數
hDevice
顯示裝置的句柄 (圖形內容) 。
unnamedParam2
pData [in]
D3DDDIARG_ENCRYPTIONBLT 結構的指標,描述加密位區塊傳輸 (bitblt) 作業的參數。
傳回值
EncryptionBlt 會 傳回下列其中一個值:
傳回碼 | 描述 |
---|---|
S_OK | 已成功執行加密的 bitblt 作業。 |
E_OUTOFMEMORY | EncryptionBlt 無法配置所需的記憶體,使其完成。 |
D3DDDIERR_NOTAVAILABLE | 驅動程式不支援 EncryptionBlt 函式。 |
備註
硬體和驅動程式可以選擇性地支援 EncryptionBlt。 有些硬體可能也需要使用不同的密鑰來解密所讀取的數據。 驅動程式會在 pIV 成員 D3DDDIARG_ENCRYPTIONBLT所 指向的記憶體區塊中傳回此索引鍵。
如果驅動程式和硬體針對加密 bitblt 使用不同的金鑰,應用程式必須辨識此事實並使用密鑰。
如果密碼編譯類型 D3DCRYPTOTYPE_AES128_CTR,pIV 會指向應用程式配置的D3DAES_CTR_IV結構。 不過,驅動程式和硬體會填入D3DAES_CTR_IV結構的實際內容。 當驅動程式和硬體產生第一個初始化向量時,它們應該將D3DAES_CTR_IV結構的 IV 成員初始化為不太大) 的隨機數 (。 每個後續的初始化向量應該只會遞增 IV 成員,以確保 IV 一律會以值增加。 這個事實可讓應用程式驗證相同的 IV 永遠不會使用相同的金鑰組多次使用。
EncryptionBlt 無法讀回子矩形。 EncryptionBlt 也無法讀取部分加密的緩衝區,因為許多硬體型解決方案不允許從受保護的記憶體進行非加密讀取。
Direct3D 運行時間會確認 D3DDDIARG_ENCRYPTIONBLT的 DstSubResourceIndex 成員所指定的目的地介面位於系統記憶體中,而且不會執行延展、色彩空間轉換等等。 應用程式應該確保系統記憶體緩衝區已正確對齊,且緩衝區的大小符合來源介面。 驅動程式應該確認記憶體對齊方式和緩衝區大小 (DstResourceSize 成員D3DDDIARG_ENCRYPTIONBLT) ,如果這些條件不正確,則失敗。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 7 操作系統開始支援 EncryptionBlt。 |
目標平台 | 桌面 |
標頭 | d3dumddi.h (包含 D3dumddi.h) |