DCompositionCreateDevice2, fonction (dcomp.h)

Crée un objet d’appareil qui peut être utilisé pour créer d’autres objets Microsoft DirectComposition.

Syntaxe

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

Paramètres

[in, optional] renderingDevice

Pointeur facultatif vers un appareil DirectX à utiliser pour créer des objets de surface DirectComposition. Doit être un pointeur vers un objet implémentant les interfaces IDXGIDevice ou ID2D1Device .

[in] iid

Identificateur de l’interface à récupérer. Il doit s’agir de __uuidof(IDCompositionDevice) ou __uuidof(IDCompositionDesktopDevice).

[out] dcompositionDevice

Reçoit un pointeur d’interface vers l’objet d’appareil nouvellement créé. Le pointeur est du type spécifié par le paramètre iid . Ce paramètre ne doit pas être NULL.

Valeur retournée

Si la fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT. Pour obtenir la liste des codes d’erreur, consultez Codes d’erreur DirectComposition .

Remarques

Un objet d’appareil sert de fabrique pour tous les autres objets DirectComposition. Il contrôle également la composition transactionnelle via la méthode IDCompositionDevice2 ::Commit.

Le paramètre renderingDevice peut pointer vers un objet d’appareil DXGI, Direct3D, Direct2D ou null. Ce paramètre affecte le comportement des méthodes IDCompositionDevice2 ::CreateSurface, IDCompositionDevice2 ::CreateVirtualSurface et IDCompositionSurface ::BeginDraw.

Si le paramètre renderingDevice a la valeur NULL, l’appareil DirectComposition renvoyé ne peut pas créer directement des objets de surface DirectComposition. En particulier, les méthodes IDCompositionDevice2 ::CreateSurface et IDCompositionDevice2 ::CreateVirtualSurface retournent E_INVALIDARG, quels que soient les paramètres fournis. Toutefois, un tel objet d’appareil DirectComposition peut toujours être utilisé pour créer indirectement des surfaces si l’application crée un objet surface factory via la méthode IDCompositionDevice2 ::CreateSurfaceFactory.

Si le paramètre renderingDevice pointe vers un appareil DXGI, cet appareil est utilisé pour allouer toute la mémoire vidéo nécessaire aux méthodes IDCompositionDevice2 ::CreateSurface et IDCompositionDevice2 ::CreateVirtualSurface. En outre, la méthode IDCompositionSurface ::BeginDraw retourne un pointeur d’interface vers une surface DXGI qui appartient à ce même appareil DXGI.

Si le paramètre renderingDevice pointe vers un objet d’appareil Direct2D, DirectComposition en extrait l’objet d’appareil DXGI sous-jacent et l’utilise comme si cet objet d’appareil DXGI avait été passé en tant que paramètre renderingDevice . Toutefois, si vous transmettez un objet Direct2D, IDCompositionSurface ::BeginDraw accepte __uuidof(ID2D1DeviceContext) pour son paramètre iid pour tous les objets créés avec les méthodes IDCompositionDevice2 ::CreateSurface ou IDCompositionDevice2 ::CreateVirtualSurface. Dans ce cas, l’objet de contexte d’appareil Direct2D retourné par IDCompositionSurface ::BeginDraw appartient au même appareil Direct2D passé en tant que paramètre renderingDevice .

Si le paramètre iid est __uuidof(IDCompositionDevice), le paramètre dcompositionDevice reçoit un pointeur vers une interface IDCompositionDevice version 1, mais l’objet sous-jacent est un objet d’appareil de bureau version 2. L’application peut ensuite obtenir un pointeur vers les interfaces IDCompositionDevice2 ou IDCompositionDesktopDevice en appelant la méthode QueryInterface sur cet appareil. De même, tous les objets DirectComposition créés à partir d’un tel appareil sont des objets version 2 sous couverture. Par exemple, la méthode IDCompositionDevice ::CreateVisual retourne une interface IDCompositionVisual au visuel créé, mais l’application peut obtenir un pointeur vers l’interface IDCompositionVisual2 via la méthode QueryInterface. Ce comportement permet à une application écrite dans l’API DirectComposition V1 d’adopter de manière incrémentielle les fonctionnalités DirectComposition V2 en modifiant la méthode de création d’appareil de DCompositionCreateDevice en DCompositionCreateDevice2, tout en demandant l’interface IDCompositionDevice2. Cela permet au reste du code de rester inchangé, tout en permettant à l’application d’utiliser QueryInterface uniquement aux endroits où de nouvelles fonctionnalités sont nécessaires.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8.1 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête dcomp.h
Bibliothèque Dcomp.lib
DLL Dcomp.dll

Voir aussi

IDCompositionDesktopDevice

IDCompositionDevice2

IDCompositionDevice2 ::CreateSurface

IDCompositionDevice2 ::CreateSurfaceFactory

IDCompositionDevice2 ::CreateVirtualSurface

IDCompositionSurface ::BeginDraw