функция обратного вызова 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 | РасшифровкаBlt не могла выделить необходимую память для завершения. |
D3DDDIERR_NOTAVAILABLE | Драйвер не поддерживает функцию DecryptionBlt. |
Замечания
Оборудование и драйверы могут при необходимости поддерживать DecryptionBlt для некоторых типов шифрования.
Если вызывающее приложение требует использования ключа содержимого, приложение использует ключ содержимого для шифрования данных и ключ сеанса для шифрования ключа содержимого перед передачей ключа содержимого в блок памяти, на который указывает элемент pContentKey член D3DDDIARG_DECRYPTIONBLT. Если pContentKeyNULL, это означает, что приложение использовало ключ сеанса для шифрования данных.
Если функция createCryptoSession драйвера ранее создала сеанс шифрования с элементом CryptoType структуры D3DDDIARG_CREATECRYPTOSESSION, установленной для D3DCRYPTOTYPE_AES128_CTR, p IV-член D3DDDIARG_DECRYPTIONBLT указывает на структуру DXVADDI_PVP_HW_IV и содержит вектор инициализации, используемый приложением для шифрования буфера. Функция decryptionBlt драйвера должна завершиться ошибкой, если она определяет, что вектор инициализации ранее использовался для того же ключа содержимого (или сеанса, если ключ содержимого не используется). Приложение должно увеличить элемент IV структуры DXVADDI_PVP_HW_IV для каждого буфера, зашифрованного приложением. Таким образом, функция decryptionBlt драйвера может завершиться ошибкой, если элемент IV меньше или равен предыдущему значению IV, переданное DecryptionBlt.
Если драйвер и оборудование поддерживают частично зашифрованные буферы, pEncryptedBlockInfo член D3DDDIARG_DECRYPTIONBLT указывает части буфера, зашифрованные и не зашифрованные части. Если весь буфер зашифрован, pEncryptedBlockInfo должен быть null.
DecryptionBlt не может записывать вложенные прямоугольники.
Среда выполнения Direct3D проверяет, что исходная поверхность, указанная SrcSubResourceIndex, элемент структуры D3DDDIARG_DECRYPTIONBLT находится в системной памяти, и что не выполняется преобразование растяжения, цветового пространства и т. д. Приложение должно убедиться, что буфер системной памяти правильно выровнен и размер буфера соответствует целевой поверхности. Драйвер должен проверить выравнивание памяти и размер буфера (SrcResourceSize член D3DDDIARG_DECRYPTIONBLT) и завершиться ошибкой, если эти условия не верны.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | DecryptionBlt поддерживается начиная с операционной системы Windows 7. |
целевая платформа | Настольный |
заголовка | d3dumddi.h (include D3dumddi.h) |