다음을 통해 공유


DCompositionCreateDevice2 함수(dcomp.h)

다른 Microsoft DirectComposition 개체를 만드는 데 사용할 수 있는 새 디바이스 개체를 만듭니다.

구문

HRESULT DCompositionCreateDevice2(
  [in, optional] IUnknown *renderingDevice,
  [in]           REFIID   iid,
  [out]          void     **dcompositionDevice
);

매개 변수

[in, optional] renderingDevice

DirectComposition 표면 개체를 만드는 데 사용할 DirectX 디바이스에 대한 선택적 포인터입니다. IDXGIDevice 또는 ID2D1Device 인터페이스를 구현하는 개체에 대한 포인터여야 합니다.

[in] iid

검색할 인터페이스의 식별자입니다. 이는 __uuidof(IDCompositionDevice) 또는 __uuidof(IDCompositionDesktopDevice) 중 하나여야 합니다.

[out] dcompositionDevice

새로 만든 디바이스 개체에 대한 인터페이스 포인터를 받습니다. 포인터는 iid 매개 변수에 지정된 형식입니다. 이 매개 변수는 NULL이 아니어야 합니다.

반환 값

함수가 성공하면 S_OK를 반환합니다. 그러지 않으면 HRESULT 오류 코드를 반환합니다. 오류 코드 목록은 DirectComposition 오류 코드를 참조하세요.

설명

디바이스 개체는 다른 모든 DirectComposition 개체의 팩터리 역할을 합니다. 또한 IDCompositionDevice2::Commit 메서드를 통해 트랜잭션 컴퍼지션을 제어합니다.

renderingDevice 매개 변수는 DXGI, Direct3D, Direct2D 디바이스 개체를 가리키거나 NULL일 수 있습니다. 이 매개 변수는 IDCompositionDevice2::CreateSurface, IDCompositionDevice2::CreateVirtualSurface 및 IDCompositionSurface::BeginDraw 메서드의 동작에 영향을 줍니다.

renderingDevice 매개 변수가 NULL인 경우 반환된 DirectComposition 디바이스는 DirectComposition 표면 개체를 직접 만들 수 없습니다. 특히 IDCompositionDevice2::CreateSurface 및 IDCompositionDevice2::CreateVirtualSurface 메서드는 제공된 매개 변수에 관계없이 E_INVALIDARG 반환합니다. 그러나 애플리케이션이 IDCompositionDevice2::CreateSurfaceFactory 메서드를 통해 Surface 팩터리 개체를 만드는 경우 이러한 DirectComposition 디바이스 개체를 사용하여 표면을 간접적으로 만들 수 있습니다.

renderingDevice 매개 변수가 DXGI 디바이스를 가리키는 경우 해당 디바이스는 IDCompositionDevice2::CreateSurface 및 IDCompositionDevice2::CreateVirtualSurface 메서드에 필요한 모든 비디오 메모리를 할당하는 데 사용됩니다. 또한 IDCompositionSurface::BeginDraw 메서드는 동일한 DXGI 디바이스에 속하는 DXGI 표면에 대한 인터페이스 포인터를 반환합니다.

renderingDevice 매개 변수가 Direct2D 디바이스 개체를 가리키는 경우 DirectComposition은 기본 DXGI 디바이스 개체에서 추출하여 해당 DXGI 디바이스 개체가 renderingDevice 매개 변수로 전달된 것처럼 사용합니다. 그러나 Direct2D 개체를 추가로 전달하면 IDCompositionSurface::BeginDraw가 IDCompositionDevice2::CreateSurface 또는 IDCompositionDevice2::CreateVirtualSurface 메서드로 만든 개체에 대한 iid 매개 변수에 대한 __uuidof(ID2D1DeviceContext)를 수락하게 됩니다. 이 경우 IDCompositionSurface::BeginDraw에서 반환된 Direct2D 디바이스 컨텍스트 개체는 renderingDevice 매개 변수로 전달된 동일한 Direct2D 디바이스에 속합니다.

iid 매개 변수가 __uuidof(IDCompositionDevice)인 경우 dcompositionDevice 매개 변수는 버전 1 IDCompositionDevice 인터페이스에 대한 포인터를 수신하지만 기본 개체는 버전 2 데스크톱 디바이스 개체입니다. 애플리케이션은 나중에 해당 디바이스에서 QueryInterface 메서드를 호출하여 IDCompositionDevice2 또는 IDCompositionDesktopDevice 인터페이스에 대한 포인터를 가져올 수 있습니다. 마찬가지로 이러한 디바이스에서 만든 모든 DirectComposition 개체는 덮개 아래에 있는 버전 2 개체입니다. 예를 들어 IDCompositionDevice::CreateVisual 메서드는 생성된 시각적 개체에 IDCompositionVisual 인터페이스를 반환하지만 애플리케이션은 QueryInterface 메서드를 통해 IDCompositionVisual2 인터페이스에 대한 포인터를 가져올 수 있습니다. 이 동작을 통해 DirectComposition V1 API에 기록된 애플리케이션은 디바이스 생성 방법을 DCompositionCreateDevice에서 DCompositionCreateDevice2로 변경하고 IDCompositionDevice2 인터페이스를 계속 요청하여 DirectComposition V2 기능을 증분 방식으로 채택할 수 있습니다. 이렇게 하면 애플리케이션이 새 기능이 필요한 위치에서만 QueryInterface를 사용할 수 있도록 하면서 나머지 코드는 변경되지 않은 상태로 유지할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8.1 [데스크톱 앱만 해당]
지원되는 최소 서버 R2 Windows Server 2012 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 dcomp.h
라이브러리 Dcomp.lib
DLL Dcomp.dll

추가 정보

IDCompositionDesktopDevice

IDCompositionDevice2

IDCompositionDevice2::CreateSurface

IDCompositionDevice2::CreateSurfaceFactory

IDCompositionDevice2::CreateVirtualSurface

IDCompositionSurface::BeginDraw