次の方法で共有


ID3D11VideoContext::D ecryptionBlt メソッド (d3d11.h)

暗号化されたデータを保護されたサーフェスに書き込みます。

構文

void DecryptionBlt(
  [in] ID3D11CryptoSession        *pCryptoSession,
  [in] ID3D11Texture2D            *pSrcSurface,
  [in] ID3D11Texture2D            *pDstSurface,
  [in] D3D11_ENCRYPTED_BLOCK_INFO *pEncryptedBlockInfo,
  [in] UINT                       ContentKeySize,
  [in] const void                 *pContentKey,
  [in] UINT                       IVSize,
  [in] void                       *pIV
);

パラメーター

[in] pCryptoSession

ID3D11CryptoSession インターフェイスへのポインター。

[in] pSrcSurface

ソース データを含むサーフェスへのポインター。

[in] pDstSurface

暗号化されたデータが書き込まれる保護されたサーフェスへのポインター。

[in] pEncryptedBlockInfo

D3D11_ENCRYPTED_BLOCK_INFO構造体 (NULL) へのポインター。

ドライバーが部分的に暗号化されたバッファーをサポートしている場合、 pEncryptedBlockInfo はバッファーのどの部分が暗号化されているかを示します。 サーフェス全体が暗号化されている場合は、このパラメーターを NULL に設定 します

ドライバーが部分的に暗号化されたバッファーをサポートしているかどうかをチェックするには、ID3D11VideoDevice::GetContentProtectionCaps を呼び出し、D3D11_CONTENT_PROTECTION_CAPS_PARTIAL_DECRYPTION機能フラグのチェックします。 ドライバーが部分的に暗号化されたバッファーをサポートしていない場合は、このパラメーターを NULL に設定します。

[in] ContentKeySize

暗号化されたコンテンツ キーのサイズ (バイト単位)。

[in] pContentKey

コンテンツ暗号化キー ( NULL) を含むバッファーへのポインター。 ドライバーがコンテンツ キーの使用をサポートしているかどうかを照会するには、ID3D11VideoDevice::GetContentProtectionCaps を呼び出し、D3D11_CONTENT_PROTECTION_CAPS_CONTENT_KEY機能フラグのチェックします。

ドライバーがコンテンツ キーをサポートしている場合は、コンテンツ キーを使用してサーフェスを暗号化します。 セッション キーを使用してコンテンツ キーを暗号化し、結果の暗号テキストを pContentKey に配置します。 ドライバーがコンテンツ キーをサポートしていない場合は、セッション キーを使用してサーフェスを暗号化し、 pContentKey を NULL に設定 します

[in] IVSize

pIV バッファーのサイズ (バイト単位)。

[in] pIV

初期化ベクトル (IV) を含むバッファーへのポインター。

128 ビット AES-CTR 暗号化の場合、 pIVD3D11_AES_CTR_IV 構造体を指します。 呼び出し元は構造体を割り当て、IV を生成します。 最初の IV を生成するときは、構造体を乱数に初期化します。 後続の IV ごとに、構造体の IV メンバーをインクリメントするだけで、値が常に増加します。 この手順により、ドライバーは、同じ IV が同じキー ペアで複数回使用されないように検証できます。

他の暗号化の種類の場合は、別の構造を使用するか、暗号化で IV を使用しない可能性があります。

戻り値

このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。

解説

すべてのハードウェアまたはドライバーが、すべての暗号化の種類に対してこの機能をサポートしているわけではありません。 この関数は、 D3D11_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT 上限が報告された場合にのみ呼び出すことができます。

このメソッドは、サーフェスのサブ四角形への書き込みをサポートしていません。

ハードウェアとドライバーがコンテンツ キーをサポートしている場合:

  • データは、コンテンツ キーを使用して呼び出し元によって暗号化されます。
  • コンテンツ キーは、呼び出し元がセッション キーを使用して暗号化されます。
  • 暗号化されたコンテンツ キーがドライバーに渡されます。
それ以外の場合、データはセッション キーを使用して呼び出し元によって暗号化され、NULL はコンテンツ キーとして渡されます。

ドライバーとハードウェアが部分的に暗号化されたバッファーをサポートしている場合、 pEncryptedBlockInfo は、バッファーのどの部分が暗号化され、暗号化されていないかを示します。 バッファー全体が暗号化されている場合、 pEncryptedBlockinfoNULL にする必要があります。

D3D11_ENCRYPTED_BLOCK_INFOを使用すると、アプリケーションはバッファー内のどのバイトが暗号化されているかを示すことができます。 これはバイト単位で指定されるため、アプリケーションでは、暗号化されたブロックが GPU の暗号化ブロックのアラインメントと一致していることを確認する必要があります。

この関数では、設定されている可能性がある D3D11 述語は使用されません。

アプリケーションで D3D11 クエリを使用する場合、11 未満の機能レベルを使用する場合、 この 関数は D3D11_QUERY_EVENT および D3D11_QUERY_TIMESTAMP で考慮されない可能性があります。 D3D11_QUERY_PIPELINE_STATISTICS には、どの機能レベルでもこの関数は含まれません。

要件

   
サポートされている最小のクライアント Windows 8 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー d3d11.h

関連項目

ID3D11VideoContext