Compartilhar via


Função DCompositionCreateDevice2 (dcomp.h)

Cria um novo objeto de dispositivo que pode ser usado para criar outros objetos Do Microsoft DirectComposition.

Sintaxe

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

Parâmetros

[in, optional] renderingDevice

Um ponteiro opcional para um dispositivo DirectX a ser usado para criar objetos de superfície DirectComposition. Deve ser um ponteiro para um objeto que implementa as interfaces IDXGIDevice ou ID2D1Device .

[in] iid

O identificador da interface a ser recuperada. Esse deve ser um dos __uuidof(IDCompositionDevice) ou __uuidof(IDCompositionDesktopDevice).

[out] dcompositionDevice

Recebe um ponteiro de interface para o objeto de dispositivo recém-criado. O ponteiro é do tipo especificado pelo parâmetro iid . Esse parâmetro não deve ser NULL.

Retornar valor

Se a função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT. Consulte Códigos de Erro do DirectComposition para obter uma lista de códigos de erro.

Comentários

Um objeto de dispositivo serve como a fábrica para todos os outros objetos DirectComposition. Ele também controla a composição transacional por meio do método IDCompositionDevice2::Commit.

O parâmetro renderingDevice pode apontar para um objeto DXGI, Direct3D Direct2D dispositivo ou pode ser NULL. Esse parâmetro afeta o comportamento dos métodos IDCompositionDevice2::CreateSurface, IDCompositionDevice2::CreateVirtualSurface e IDCompositionSurface::BeginDraw.

Se o parâmetro renderingDevice for NULL, o dispositivo DirectComposition retornado não poderá criar diretamente objetos de superfície DirectComposition. Em particular, os métodos IDCompositionDevice2::CreateSurface e IDCompositionDevice2::CreateVirtualSurface retornam E_INVALIDARG, independentemente dos parâmetros fornecidos. No entanto, esse objeto de dispositivo DirectComposition ainda poderá ser usado para criar superfícies indiretamente se o aplicativo criar um objeto de fábrica de superfície por meio do método IDCompositionDevice2::CreateSurfaceFactory.

Se o parâmetro renderingDevice apontar para um dispositivo DXGI, esse dispositivo será usado para alocar toda a memória de vídeo necessária pelos métodos IDCompositionDevice2::CreateSurface e IDCompositionDevice2::CreateVirtualSurface. Além disso, o método IDCompositionSurface::BeginDraw retorna um ponteiro de interface para uma superfície DXGI que pertence ao mesmo dispositivo DXGI.

Se o parâmetro renderingDevice apontar para um objeto de dispositivo Direct2D, DirectComposition extrairá dele o objeto de dispositivo DXGI subjacente e o usará como se esse objeto de dispositivo DXGI tivesse sido passado como o parâmetro renderingDevice. No entanto, passar um objeto Direct2D ainda faz com que IDCompositionSurface::BeginDraw aceite __uuidof(ID2D1DeviceContext) para seu parâmetro iid para quaisquer objetos criados com os métodos IDCompositionDevice2::CreateSurface ou IDCompositionDevice2::CreateVirtualSurface. Nesse caso, o objeto de contexto do dispositivo Direct2D retornado por IDCompositionSurface::BeginDraw pertencerá ao mesmo dispositivo Direct2D passado que o parâmetro renderingDevice.

Se o parâmetro iid for __uuidof(IDCompositionDevice), o parâmetro dcompositionDevice receberá um ponteiro para uma interface IDCompositionDevice da versão 1, mas o objeto subjacente é um objeto de dispositivo da área de trabalho versão 2. Posteriormente, o aplicativo pode obter um ponteiro para as interfaces IDCompositionDevice2 ou IDCompositionDesktopDevice chamando o método QueryInterface nesse dispositivo. Da mesma forma, todos os objetos DirectComposition criados a partir desse dispositivo são objetos da Versão 2 sob as capas. Por exemplo, o método IDCompositionDevice::CreateVisual retornará uma interface IDCompositionVisual para o visual criado, mas o aplicativo pode obter um ponteiro para a interface IDCompositionVisual2 por meio do método QueryInterface. Esse comportamento permite que um aplicativo gravado na API DirectComposition V1 adote incrementalmente os recursos do DirectComposition V2 alterando o método de criação do dispositivo de DCompositionCreateDevice para DCompositionCreateDevice2, enquanto ainda solicita a interface IDCompositionDevice2. Isso permite que o restante do código permaneça inalterado, permitindo que o aplicativo use QueryInterface apenas nos locais em que a nova funcionalidade é necessária.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8.1 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2012 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho dcomp.h
Biblioteca Dcomp.lib
DLL Dcomp.dll

Confira também

IDCompositionDesktopDevice

IDCompositionDevice2

IDCompositionDevice2::CreateSurface

IDCompositionDevice2::CreateSurfaceFactory

IDCompositionDevice2::CreateVirtualSurface

IDCompositionSurface::BeginDraw