Compartir a través de


Función DCompositionCreateDevice2 (dcomp.h)

Crea un nuevo objeto de dispositivo que se puede usar para crear otros objetos Microsoft DirectComposition.

Sintaxis

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

Parámetros

[in, optional] renderingDevice

Puntero opcional a un dispositivo DirectX que se va a usar para crear objetos de superficie DirectComposition. Debe ser un puntero a un objeto que implemente las interfaces IDXGIDevice o ID2D1Device .

[in] iid

Identificador de la interfaz que se va a recuperar. Debe ser una de __uuidof(IDCompositionDevice) o __uuidof(IDCompositionDesktopDevice).

[out] dcompositionDevice

Recibe un puntero de interfaz al objeto de dispositivo recién creado. El puntero es del tipo especificado por el parámetro iid . Este parámetro no debe ser null.

Valor devuelto

Si la función se ejecuta correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT. Consulte Códigos de error de DirectComposition para obtener una lista de códigos de error.

Comentarios

Un objeto de dispositivo actúa como generador para todos los demás objetos DirectComposition. También controla la composición transaccional a través del método IDCompositionDevice2::Commit.

El parámetro renderingDevice puede apuntar a un objeto de dispositivo DXGI, Direct3D, Direct2D o puede ser NULL. Este parámetro afecta al comportamiento de los métodos IDCompositionDevice2::CreateSurface, IDCompositionDevice2::CreateVirtualSurface e IDCompositionSurface::BeginDraw.

Si el parámetro renderingDevice es NULL, el dispositivo DirectComposition devuelto no puede crear directamente objetos de superficie DirectComposition. En concreto, los métodos IDCompositionDevice2::CreateSurface e IDCompositionDevice2::CreateVirtualSurface devuelven E_INVALIDARG, independientemente de los parámetros proporcionados. Sin embargo, este tipo de objeto de dispositivo DirectComposition todavía se puede usar para crear superficies indirectamente si la aplicación crea un objeto de generador de superficies a través del método IDCompositionDevice2::CreateSurfaceFactory.

Si el parámetro renderingDevice apunta a un dispositivo DXGI, ese dispositivo se usa para asignar toda la memoria de vídeo necesaria para los métodos IDCompositionDevice2::CreateSurface e IDCompositionDevice2::CreateVirtualSurface. Además, el método IDCompositionSurface::BeginDraw devuelve un puntero de interfaz a una superficie DXGI que pertenece a ese mismo dispositivo DXGI.

Si el parámetro renderingDevice apunta a un objeto de dispositivo Direct2D, DirectComposition extrae del objeto de dispositivo DXGI subyacente y lo usa como si ese objeto de dispositivo DXGI se hubiera pasado como parámetro renderingDevice . Sin embargo, pasar un objeto Direct2D hace que IDCompositionSurface::BeginDraw acepte __uuidof(ID2D1DeviceContext) para su parámetro iid para los objetos creados con los métodos IDCompositionDevice2::CreateSurface o IDCompositionDevice2::CreateVirtualSurface. En ese caso, el objeto de contexto del dispositivo Direct2D devuelto por IDCompositionSurface::BeginDraw pertenecerá al mismo dispositivo Direct2D pasado como el parámetro renderingDevice .

Si el parámetro iid es __uuidof(IDCompositionDevice), el parámetro dcompositionDevice recibe un puntero a una interfaz IDCompositionDevice de la versión 1, pero el objeto subyacente es un objeto de dispositivo de escritorio versión 2. La aplicación puede obtener posteriormente un puntero a las interfaces IDCompositionDevice2 o IDCompositionDesktopDevice llamando al método QueryInterface en ese dispositivo. Del mismo modo, todos los objetos DirectComposition creados a partir de este dispositivo son objetos de la versión 2 en segundo plano. Por ejemplo, el método IDCompositionDevice::CreateVisual devolverá una interfaz IDCompositionVisual al objeto visual creado, pero la aplicación puede obtener un puntero a la interfaz IDCompositionVisual2 mediante el método QueryInterface. Este comportamiento permite que una aplicación escrita en la API de DirectComposition V1 adopte incrementalmente las características de DirectComposition V2 cambiando el método de creación de dispositivos de DCompositionCreateDevice a DCompositionCreateDevice2, mientras sigue solicitando la interfaz IDCompositionDevice2. Esto permite que el resto del código permanezca sin cambios, al tiempo que permite que la aplicación use QueryInterface en solo los lugares donde se necesita nueva funcionalidad.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8.1 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado dcomp.h
Library Dcomp.lib
Archivo DLL Dcomp.dll

Consulte también

IDCompositionDesktopDevice

IDCompositionDevice2

IDCompositionDevice2::CreateSurface

IDCompositionDevice2::CreateSurfaceFactory

IDCompositionDevice2::CreateVirtualSurface

IDCompositionSurface::BeginDraw