다음을 통해 공유


PFND3DDDI_ENCRYPTIONBLT 콜백 함수(d3dumddi.h)

EncryptionBlt 함수는 보호된 표면에서 암호화된 데이터를 읽습니다.

구문

PFND3DDDI_ENCRYPTIONBLT Pfnd3dddiEncryptionblt;

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

매개 변수

hDevice

디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다.

unnamedParam2

pData [in]

암호화된 비트 블록 전송(비트블렛) 작업의 매개 변수를 설명하는 D3DDDIARG_ENCRYPTIONBLT 구조체에 대한 포인터입니다.

반환 값

EncryptionBlt은 다음 값 중 하나를 반환합니다.

반환 코드 설명
S_OK 암호화된 비트blt 작업이 성공적으로 수행됩니다.
E_OUTOFMEMORY EncryptionBlt에서 완료하는 데 필요한 메모리를 할당할 수 없습니다.
D3DDDIERR_NOTAVAILABLE 드라이버는 EncryptionBlt 함수를 지원하지 않습니다.

설명

하드웨어 및 드라이버는 선택적으로 EncryptionBlt을 지원할 수 있습니다. 일부 하드웨어는 별도의 키를 사용하여 다시 읽은 데이터의 암호를 해독해야 할 수도 있습니다. 드라이버는 D3DDDIARG_ENCRYPTIONBLTpIV 멤버가 가리키는 메모리 블록에서 이 키를 반환합니다.

드라이버와 하드웨어가 암호화 비트블렛에 별도의 키를 사용하는 경우 애플리케이션은 이 사실을 인식하고 키를 사용해야 합니다.

암호화 형식이 D3DCRYPTOTYPE_AES128_CTR 경우 pIV 는 애플리케이션이 할당하는 D3DAES_CTR_IV 구조를 가리킵니다. 그러나 D3DAES_CTR_IV 구조체의 실제 콘텐츠는 드라이버 및 하드웨어에 의해 채워집니다. 드라이버와 하드웨어가 첫 번째 초기화 벡터를 생성하는 경우 D3DAES_CTR_IV 구조체의 IV 멤버를 난수(너무 크지 않음)로 초기화해야 합니다. 이후의 각 초기화 벡터는 IV 멤버를 증가시켜야 하므로 IV 의 값이 항상 증가합니다. 이 사실을 통해 애플리케이션은 동일한 IV 가 동일한 키 쌍으로 여러 번 사용되지 않는지 확인할 수 있습니다.

EncryptionBlt은 하위 사각형을 다시 읽을 수 없습니다. 또한 많은 하드웨어 기반 솔루션에서 보호된 메모리에서 암호화되지 않은 읽기를 허용하지 않으므로 EncryptionBlt은 부분적으로 암호화된 버퍼를 다시 읽을 수 없습니다.

Direct3D 런타임은 D3DDDIARG_ENCRYPTIONBLT DstSubResourceIndex 멤버가 지정한 대상 표면이 시스템 메모리에 있고 늘어나고 색 공간 변환이 수행되지 않는지 확인합니다. 애플리케이션은 시스템 메모리 버퍼가 제대로 정렬되고 버퍼의 크기가 원본 표면과 일치하는지 확인해야 합니다. 드라이버는 메모리 맞춤 및 버퍼 크기(D3DDDIARG_ENCRYPTIONBLT DstResourceSize 멤버)를 확인하고 이러한 조건이 올바르지 않으면 실패해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 EncryptionBlt은 Windows 7 운영 체제부터 지원됩니다.
대상 플랫폼 데스크톱
머리글 d3dumddi.h(D3dumddi.h 포함)

추가 정보

D3DDDIARG_ENCRYPTIONBLT

D3DDDI_DEVICEFUNCS