функция обратного вызова PFND3DDDI_DECRYPTIONBLT (d3dumddi.h)

Функция DecryptionBlt записывает данные в защищенную поверхность.

Синтаксис

PFND3DDDI_DECRYPTIONBLT Pfnd3dddiDecryptionblt;

HRESULT Pfnd3dddiDecryptionblt(
  HANDLE hDevice,
  const D3DDDIARG_DECRYPTIONBLT *unnamedParam2
)
{...}

Параметры

hDevice

Дескриптор устройства отображения (графический контекст).

unnamedParam2

pData [in]

Указатель на структуру D3DDDIARG_DECRYPTIONBLT , описывающую параметры операции расшифрованной передачи битовых блоков (bitblt).

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

DecryptionBlt возвращает одно из следующих значений:

Код возврата Описание
S_OK Операция расшифровки bitblt успешно выполнена.
E_OUTOFMEMORY DecryptionBlt не удалось выделить необходимую память для ее завершения.
D3DDDIERR_NOTAVAILABLE Драйвер не поддерживает функцию DecryptionBlt.

Комментарии

Оборудование и драйверы могут при необходимости поддерживать DecryptionBlt для некоторых типов шифрования.

Если вызывающее приложение требует использования ключа содержимого, оно использует ключ содержимого для шифрования данных, а сеансовый ключ — для шифрования ключа содержимого перед передачей ключа содержимого в блок памяти, на который указывает элемент pContentKeyD3DDDIARG_DECRYPTIONBLT . Если pContentKey имеет значение NULL, это означает, что приложение использовало сеансовый ключ для шифрования данных.

Если функция CreateCryptoSession драйвера ранее создала сеанс шифрования с элементом CryptoTypeструктуры D3DDDIARG_CREATECRYPTOSESSION , для D3DCRYPTOTYPE_AES128_CTR, то элемент pIVD3DDDIARG_DECRYPTIONBLT указывает на структуру DXVADDI_PVP_HW_IV и содержит вектор инициализации, который приложение использовало для шифрования буфера. Функция DecryptionBlt драйвера должна завершиться ошибкой, если она определяет, что вектор инициализации ранее использовался для того же ключа содержимого (или сеансового ключа, если ключ содержимого не использовался). Приложение должно увеличивать iv член структуры DXVADDI_PVP_HW_IV для каждого буфера, зашифрованного приложением. Таким образом, функция DecryptionBlt драйвера может завершиться ошибкой, если элемент IV меньше или равен предыдущему значению IV , переданного в DecryptionBlt.

Если драйвер и оборудование поддерживают частично зашифрованные буферы, элемент pEncryptedBlockInfoD3DDDIARG_DECRYPTIONBLT указывает части буфера, которые зашифрованы, и части, которые не зашифрованы. Если весь буфер зашифрован, параметр pEncryptedBlockInfo должен иметь значение NULL.

DecryptionBlt не может записывать вложенные прямоугольники.

Среда выполнения Direct3D проверяет, что исходная поверхность, указанная членом SrcSubResourceIndexструктуры D3DDDIARG_DECRYPTIONBLT , находится в системной памяти и не выполняется ли растяжение, преобразование цветового пространства и т. д. Приложение должно убедиться, что буфер системной памяти правильно выровнен и размер буфера соответствует целевой поверхности. Драйвер должен проверить выравнивание памяти и размер буфера (элемент SrcResourceSize D3DDDIARG_DECRYPTIONBLT) и завершить ошибку, если эти условия неверны.

Требования

Требование Значение
Минимальная версия клиента DecryptionBlt поддерживается начиная с операционной системы Windows 7.
Целевая платформа Персональный компьютер
Верхняя часть d3dumddi.h (включая D3dumddi.h)

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

CreateCryptoSession

D3DDDIARG_CREATECRYPTOSESSION

D3DDDIARG_DECRYPTIONBLT

D3DDDI_DEVICEFUNCS