IDirect3DCryptoSession9::EncryptionBlt メソッド (d3d9.h)
保護されたサーフェスから暗号化されたデータを読み取ります。
構文
HRESULT EncryptionBlt(
IDirect3DSurface9 *pSrcSurface,
IDirect3DSurface9 *pDstSurface,
UINT DstSurfaceSize,
VOID *pIV
);
パラメーター
pSrcSurface
保護されたサーフェスへのポインター。
pDstSurface
暗号化されたデータを受け取るサーフェスへのポインター。
DstSurfaceSize
pDstSurface が指すサーフェス メモリのサイズ (バイト単位)。 サイズは、ドライバー機能構造の BlockAlignmentSize の値に合わせる必要があります。「解説」を参照してください。
pIV
初期化ベクトル (IV) を受け取るバッファーへのポインター。 呼び出し元はこのバッファーを割り当てますが、ドライバーは IV を生成します。
暗号化の種類が D3DCRYPTOTYPE_AES128_CTR (128 ビット AES-CTR) の場合、 pIV は D3DAES_CTR_IV 構造体を指します。 ドライバーは、最初の IV を生成するときに、構造体を乱数に初期化します。 後続の IV ごとに、ドライバーは構造体の IV メンバーをインクリメントするだけで、値が常に増加します。 この手順により、アプリケーションは、同じ IV が同じキー ペアで複数回使用されることはないことを検証できます。
他の暗号化の種類の場合は、別の構造を使用するか、暗号化で IV を使用しない可能性があります。
戻り値
このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。
注釈
ドライバーは、このメソッドをサポートしている場合は、IDirect3DDevice9Video::GetContentProtectionCaps メソッドによって返される機能構造のD3DCPCAPS_ENCRYPTEDREADBACK フラグを設定します。
ドライバーが D3DCPCAPS_ENCRYPTEDREADBACKKEY 機能フラグを設定する場合は、ドライバーが別のキーを使用してデータを暗号化することを意味します。 このキーを取得するには、 IDirect3DCryptoSession9::GetEncryptionBltKey メソッドを呼び出します。 それ以外の場合、ドライバーはセッション キーを使用してデータを暗号化します。
宛先サーフェス (pDstSurface) を次のように割り当てます。
- IDirect3DCryptoSession9::GetSurfacePitch を呼び出して、保護されたサーフェスのストライドを取得します。
- GetContentProtectionCaps メソッドを呼び出して、D3DCONTENTPROTECTIONCAPS構造体の BufferAlignmentStart メンバーと BlockAlignmentSize メンバーの値を取得します。
- サーフェス メモリの最小サイズを SysMemSize = 保護されたサーフェス ストライド×保護されたサーフェスの高さとして計算します。
- BufferAlignmentStart と BlockAlignmentSize の値に合わせてパディングを追加します。
- SysMemSize (パディングを含む) と同じサイズのバッファーをシステム メモリに割り当てます。
- システム メモリ バッファーのアドレスが BufferAlignmentStart の値に揃っていない場合は、バッファーの先頭からのオフセットであるメモリアラインポインターを計算します。
- IDirect3DDevice9Ex::CreateOffscreenPlainSurfaceEx を呼び出して、宛先サーフェスを作成します。 メモリアラインポインターを共有リソース ハンドル (pSharedHandle) として渡します。
- メソッドは、サブrectanglesまたは部分的に暗号化されたサーフェスを読み取ることができません。
- 保護されたサーフェスは、オフスクリーンプレーンサーフェスまたはレンダーターゲットである必要があります。
- 先のサーフェスは、前に説明したように、適切な配置で作成されたシステム メモリ サーフェスである必要があります。
- 保護されたサーフェスをマルチサンプリングすることはできません。
- メソッドは、ストレッチ変換または色空間変換をサポートしていません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | d3d9.h |