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