Metode IDirect3DCryptoSession9::D ecryptionBlt (d3d9.h)
Menulis data terenkripsi ke permukaan yang dilindungi.
Sintaks
HRESULT DecryptionBlt(
IDirect3DSurface9 *pSrcSurface,
IDirect3DSurface9 *pDstSurface,
UINT SrcSurfaceSize,
D3DENCRYPTED_BLOCK_INFO *pEncryptedBlockInfo,
VOID *pContentKey,
VOID *pIV
);
Parameter
pSrcSurface
Penunjuk ke permukaan yang berisi data sumber.
pDstSurface
Penunjuk ke permukaan yang dilindungi tempat data terenkripsi ditulis.
SrcSurfaceSize
Ukuran memori permukaan yang ditunjuk pSrcSurface , dalam byte. Ukuran harus diselaraskan dengan nilai BlockAlignmentSize dalam struktur kemampuan driver; lihat Keterangan.
pEncryptedBlockInfo
Penunjuk ke struktur D3DENCRYPTED_BLOCK_INFO , atau NULL.
Jika driver mendukung buffer yang dienkripsi sebagian, pEncryptedBlockInfo menunjukkan bagian buffer mana yang dienkripsi. Jika seluruh permukaan dienkripsi, atur parameter ini ke NULL.
Untuk memeriksa apakah driver mendukung buffer yang dienkripsi sebagian, panggil IDirect3DDevice9Video::GetContentProtectionCaps dan periksa bendera kemampuan D3DCPCAPS_PARTIALDECRYPTION . Jika driver tidak mendukung buffer yang dienkripsi sebagian, atur parameter ini ke NULL.
pContentKey
Penunjuk ke buffer yang berisi kunci enkripsi konten, atau NULL. Untuk mengkueri apakah driver mendukung penggunaan kunci konten, panggil IDirect3DDevice9Video::GetContentProtectionCaps dan periksa bendera kemampuan D3DCPCAPS_CONTENTKEY .
Jika driver mendukung kunci konten, gunakan kunci konten untuk mengenkripsi permukaan. Enkripsi kunci konten menggunakan kunci sesi, dan letakkan teks sandi yang dihasilkan di pContentKey. Jika driver tidak mendukung kunci konten, gunakan kunci sesi untuk mengenkripsi permukaan dan mengatur pContentKey ke NULL.
pIV
Penunjuk ke buffer yang berisi vektor inisialisasi (IV).
Jika jenis enkripsi D3DCRYPTOTYPE_AES128_CTR, buffer adalah struktur D3DAES_CTR_IV . Penelepon mengalokasikan struktur dan menghasilkan IV. Ketika Anda menghasilkan IV pertama, inisialisasi struktur ke angka acak. Untuk setiap IV berikutnya, cukup tambahkan anggota IV struktur, memastikan bahwa nilai selalu meningkat. Prosedur ini memungkinkan driver untuk memvalidasi bahwa IV yang sama tidak pernah digunakan lebih dari sekali dengan pasangan kunci yang sama.
Untuk jenis enkripsi lainnya, struktur yang berbeda dapat digunakan, atau enkripsi mungkin tidak menggunakan IV.
Mengembalikan nilai
Jika metode ini berhasil, metode ini mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.
Keterangan
Tidak semua perangkat keras atau driver mendukung fungsionalitas ini untuk semua jenis kriptografi.
Permukaan sumber harus merupakan permukaan memori sistem yang dibuat dengan pembatasan perataan yang tepat. Buffer harus cukup besar untuk mengakomodasi nada dan tinggi permukaan yang dilindungi, ditambah padding untuk mengakomodasi pembatasan perataan awal dan ukuran transfer blok.
Secara khusus, Anda harus mengalokasikan permukaan sumber sebagai berikut:
- Panggil IDirect3DCryptoSession9::GetSurfacePitch untuk mendapatkan langkah permukaan yang dilindungi.
- Panggil metode IDirect3DDevice9Video::GetContentProtectionCaps untuk mendapatkan nilai anggota BufferAlignmentStart dan BlockAlignmentSize dalam struktur D3DCONTENTPROTECTIONCAPS .
- Hitung ukuran minimum memori permukaan sebagai SysMemSize = langkah permukaan yang dilindungi × ketinggian permukaan yang dilindungi.
- Tambahkan padding untuk mengakomodasi nilai BufferAlignmentStart dan BlockAlignmentSize.
- Alokasikan buffer dalam memori sistem, dengan ukuran yang sama dengan SysMemSize (termasuk padding).
- Jika alamat buffer memori sistem tidak selaras dengan nilai BufferAlignmentStart, hitung pointer selaras memori yang merupakan offset dari awal buffer.
- Panggil IDirect3DDevice9Ex::CreateOffscreenPlainSurfaceEx untuk membuat permukaan sumber. Teruskan penunjuk yang selaras dengan memori sebagai handel sumber daya bersama (pSharedHandle).
Metode ini tidak mendukung penulisan ke sub-persegi permukaan.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 7 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 R2 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | d3d9.h |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk