Поделиться через


Метод ID3D11VideoContext::EncryptionBlt (d3d11.h)

Считывает зашифрованные данные с защищенной поверхности.

Синтаксис

void EncryptionBlt(
  [in] ID3D11CryptoSession *pCryptoSession,
  [in] ID3D11Texture2D     *pSrcSurface,
  [in] ID3D11Texture2D     *pDstSurface,
  [in] UINT                IVSize,
  [in] void                *pIV
);

Параметры

[in] pCryptoSession

Указатель на интерфейс ID3D11CryptoSession сеанса шифрования.

[in] pSrcSurface

Указатель на интерфейс ID3D11Texture2D защищенной поверхности.

[in] pDstSurface

Указатель на интерфейс ID3D11Texture2D поверхности, получающей зашифрованные данные.

[in] IVSize

Размер буфера pIV в байтах.

[in] pIV

Указатель на буфер, который получает вектор инициализации (IV). Вызывающий объект выделяет этот буфер, но драйвер создает инициализацию.

Для 128-разрядного шифрования AES-CTR pIV указывает на D3D11_AES_CTR_IV структуру. Когда драйвер создает первый iv, он инициализирует структуру случайным числом. Для каждого последующего вектора драйвер просто увеличивает элемент IV структуры, гарантируя, что значение всегда увеличивается. Приложение может убедиться, что один и тот же iv никогда не используется более одного раза с одной и той же парой ключей.

Возвращаемое значение

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Не все драйверы поддерживают этот метод. Чтобы запросить возможности драйвера, вызовите ID3D11VideoDevice::GetContentProtectionCaps и проверка для флага D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK в элементе Caps структуры D3D11_VIDEO_CONTENT_PROTECTION_CAPS.

Некоторым драйверам может потребоваться отдельный ключ для расшифровки данных, которые считываются обратно. Чтобы проверка для этого требования, вызовите GetContentProtectionCaps и проверка для флага D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK_KEY. Если этот флаг присутствует, вызовите ID3D11VideoContext::GetEncryptionBltKey , чтобы получить ключ расшифровки.

Этот метод имеет следующие ограничения:

  • Чтение вложенных прямоугольников не поддерживается.
  • Чтение частично зашифрованных поверхностей не поддерживается.
  • Защищенная поверхность должна быть либо открытой поверхностью вне экрана, либо целевым объектом отрисовки.
  • Область назначения должна быть D3D11_USAGE_STAGING ресурсом.
  • Защищенная поверхность не может быть многопримерной.
  • Растяжение и преобразование цветового пространства не поддерживаются.

Эта функция не учитывает предикат D3D11, который, возможно, был задан.

Если приложение использует запросы D3D11, эта функция может не учитываться с D3D11_QUERY_EVENT и D3D11_QUERY_TIMESTAMP при использовании уровней компонентов ниже 11. D3D11_QUERY_PIPELINE_STATISTICS не будет включать эту функцию для какого-либо уровня компонентов.

Требования

Требование Значение
Минимальная версия клиента Windows 8 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2012 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header d3d11.h

См. также раздел

ID3D11VideoContext