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


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

Функция EncryptionBlt считывает зашифрованные данные из защищенной поверхности.

Синтаксис

PFND3DDDI_ENCRYPTIONBLT Pfnd3dddiEncryptionblt;

HRESULT Pfnd3dddiEncryptionblt(
  HANDLE hDevice,
  const D3DDDIARG_ENCRYPTIONBLT *unnamedParam2
)
{...}

Параметры

hDevice

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

unnamedParam2

pData [in]

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

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

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

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

Замечания

Оборудование и драйверы могут также поддерживать EncryptionBlt. Для расшифровки данных, которые считываются обратно, может потребоваться использовать отдельный ключ. Драйвер возвращает этот ключ в блоке памяти, на который указывает pIV член D3DDDIARG_ENCRYPTIONBLT.

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

Если тип шифрования D3DCRYPTOTYPE_AES128_CTR, pIV указывает на структуру D3DAES_CTR_IV, выделенную приложением. Однако фактическое содержимое структуры D3DAES_CTR_IV заполняется драйвером и оборудованием. Когда драйвер и оборудование создают первый вектор инициализации, они должны инициализировать iv член структуры D3DAES_CTR_IV случайным числом (не слишком большим). Каждый последующий вектор инициализации должен просто увеличить элемент IV, что гарантирует, что IV всегда увеличивается. Этот факт позволяет приложению проверить, что один и тот же IV никогда не используется несколько раз с одной парой ключей.

EncryptionBlt не может считывать вложенные прямоугольники. EncryptionBlt также не может считывать частично зашифрованные буферы, так как многие аппаратные решения не разрешают нешифрованные операции чтения из защищенной памяти.

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские ШифрованиеBlt поддерживается начиная с операционной системы Windows 7.
целевая платформа Настольный
заголовка d3dumddi.h (include D3dumddi.h)

См. также

D3DDDIARG_ENCRYPTIONBLT

D3DDDI_DEVICEFUNCS