PFND3D11_1DDI_DECRYPTIONBLT コールバック関数 (d3d10umddi.h)
暗号化されたデータを保護されたサーフェスに書き込みます。 この関数は、D3D11_1DDI_VIDEO_CONTENT_PROTECTION_CAPS構造体のCaps メンバーにD3D11_1DDI_CONTENT_PROTECTION_CAPS_DECRYPTION_BLTが設定されている場合にのみ呼び出されます。
構文
PFND3D11_1DDI_DECRYPTIONBLT Pfnd3d111DdiDecryptionblt;
void Pfnd3d111DdiDecryptionblt(
D3D10DDI_HDEVICE hDevice,
D3D11_1DDI_HCRYPTOSESSION hCryptoSession,
D3D10DDI_HRESOURCE hSrcResource,
D3D10DDI_HRESOURCE hDstResource,
const D3D11_1DDI_ENCRYPTED_BLOCK_INFO *pEncryptedBlockInfo,
UINT ContentKeySize,
const VOID *pContentKey,
UINT IVSize,
const VOID *pIV
)
{...}
パラメーター
hDevice
ディスプレイ デバイス (グラフィックス コンテキスト) へのハンドル。
hCryptoSession
暗号化セッションのドライバーのプライベート データへのハンドル。 このハンドルは Direct3D ランタイムによって作成され、 CreateCryptoSession 関数の呼び出しでドライバーに渡されました。
hSrcResource
ソース データを含むリソースへのハンドル。
hDstResource
暗号化されたデータを書き込むリソースへのポインター。
pEncryptedBlockInfo
暗号化されるバッファーの部分を記述する D3D11_1DDI_ENCRYPTED_BLOCK_INFO 構造体へのポインター。
ContentKeySize
コンテンツ キーのサイズ (バイト単位)。
pContentKey
ビット ブロック転送 (bitblt) データの暗号化を解除するために必要なコンテンツ キーを含むメモリ ブロックへのポインター。
pContentKey が NULL に設定されていない場合、バッファー データは指定されたコンテンツ キーを使用して暗号化されます。 このキーのデータは、セッション キーと AES-ECB アルゴリズムを使用して暗号化されます。
pContentKey が NULL の場合、グラフィックス アダプターでは、データの暗号化を解除するために別のコンテンツ キーは必要ありません。 この場合、セッション キーを使用してデータの暗号化を解除します。
IVSize
初期化ベクトル (IV) のサイズ (バイト単位)。
pIV
ビットblt データの暗号化を解除するために必要な初期化ベクトルを含むメモリ ブロックへのポインター。 詳細については、「解説」を参照してください。
pIV が NULL の場合、グラフィックス アダプターでは、データの暗号化を解除するために個別の初期化ベクトルは必要ありません。 つまり、セッション キーを使用してデータの暗号化を解除します。
戻り値
なし
解説
128 ビット AES-CTR 暗号化の場合、 pIV パラメーターは、アプリケーションによって割り当てられる D3D11_1DDI_AES_CTR_IV 構造体を指します。 ただし、この構造体の実際の内容は、ドライバーまたはグラフィックス アダプターによって入力されます。 最初の IV が生成されると、ドライバーまたはアダプターは、この構造体の IV メンバーを乱数に初期化します。 後続の IV ごとに、呼び出し元は IV メンバーをインクリメントし、値が常に増加することを確認します。 この手順により、アプリケーションは、同じ IV が同じキー ペアで複数回使用されないように検証できます。
他の暗号化の種類の場合は、別の構造を使用するか、暗号化で IV を使用しない可能性があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 |
サポートされている最小のサーバー | Windows Server 2012 |
対象プラットフォーム | デスクトップ |
Header | d3d10umddi.h (D3d10umddi.h を含む) |