次の方法で共有


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 暗号化されたビットブレット操作が正常に実行されます。
E_OUTOFMEMORY EncryptionBlt は、完了するために必要なメモリを割り当てませんでした。
D3DDDIERR_NOTAVAILABLE ドライバーは EncryptionBlt 関数をサポートしていません。

備考

ハードウェアとドライバーは、必要に応じて、EncryptionBltをサポートできます。 一部のハードウェアでは、読み取り戻されるデータの暗号化を解除するために別のキーを使用する必要がある場合もあります。 ドライバーは、D3DDDIARG_ENCRYPTIONBLT のメンバー pIV が指すメモリ ブロック このキーを返します。

ドライバーとハードウェアが暗号化ビットに別のキーを使用する場合、アプリケーションはこの事実を認識し、キーを使用する必要があります。

暗号化の種類が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のメンバー) を確認し、これらの条件が正しくない場合は失敗する必要があります。

必要条件

要件 価値
サポートされる最小クライアント EncryptionBlt は、Windows 7 オペレーティング システム以降でサポートされています。
ターゲット プラットフォーム デスクトップ
ヘッダー d3dumddi.h (D3dumddi.h を含む)

関連項目

D3DDDIARG_ENCRYPTIONBLT

D3DDDI_DEVICEFUNCS