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