Freigeben über


DCompositionCreateDevice2-Funktion (dcomp.h)

Erstellt ein neues Geräteobjekt, das zum Erstellen anderer Microsoft DirectComposition-Objekte verwendet werden kann.

Syntax

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

Parameter

[in, optional] renderingDevice

Ein optionaler Zeiger auf ein DirectX-Gerät, das zum Erstellen von DirectComposition-Oberflächenobjekten verwendet werden soll. Muss ein Zeiger auf ein Objekt sein, das die SCHNITTSTELLEN IDXGIDevice oder ID2D1Device implementiert.

[in] iid

Der Bezeichner der abzurufenden Schnittstelle. Dies muss eine der __uuidof(IDCompositionDevice) oder __uuidof(IDCompositionDesktopDevice) sein.

[out] dcompositionDevice

Empfängt einen Schnittstellenzeiger auf das neu erstellte Geräteobjekt. Der Zeiger hat den vom iid-Parameter angegebenen Typ. Dieser Parameter darf nicht NULL sein.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben. Eine Liste der Fehlercodes finden Sie unter DirectComposition-Fehlercodes .

Hinweise

Ein Geräteobjekt dient als Factory für alle anderen DirectComposition-Objekte. Außerdem wird die Transaktionskomposition über die IDCompositionDevice2::Commit-Methode gesteuert.

Der RenderingDevice-Parameter kann auf ein DXGI-, Direct3D- oder Direct2D-Geräteobjekt verweisen oder NULL sein. Dieser Parameter wirkt sich auf das Verhalten der Methoden IDCompositionDevice2::CreateSurface, IDCompositionDevice2::CreateVirtualSurface und IDCompositionSurface::BeginDraw aus.

Wenn der renderingDevice-Parameter NULL ist, kann das zurückgegebene DirectComposition-Gerät keine DirectComposition-Oberflächenobjekte direkt erstellen. Insbesondere geben die Methoden IDCompositionDevice2::CreateSurface und IDCompositionDevice2::CreateVirtualSurface E_INVALIDARG zurück, unabhängig von den angegebenen Parametern. Ein solches DirectComposition-Geräteobjekt kann jedoch weiterhin verwendet werden, um indirekt Oberflächen zu erstellen, wenn die Anwendung ein Surface Factory-Objekt über die IDCompositionDevice2::CreateSurfaceFactory-Methode erstellt.

Wenn der Parameter renderingDevice auf ein DXGI-Gerät verweist, wird dieses Gerät verwendet, um den gesamten Videospeicher zuzuordnen, der von den Methoden IDCompositionDevice2::CreateSurface und IDCompositionDevice2::CreateVirtualSurface benötigt wird. Darüber hinaus gibt die IDCompositionSurface::BeginDraw-Methode einen Schnittstellenzeiger auf eine DXGI-Oberfläche zurück, die zum gleichen DXGI-Gerät gehört.

Wenn der RenderingDevice-Parameter auf ein Direct2D-Geräteobjekt zeigt, extrahiert DirectComposition daraus das zugrunde liegende DXGI-Geräteobjekt und verwendet es, als ob dieses DXGI-Geräteobjekt als renderingDevice-Parameter übergeben worden wäre. Die Übergabe eines Direct2D-Objekts bewirkt jedoch, dass IDCompositionSurface::BeginDraw __uuidof(ID2D1DeviceContext) für den iid-Parameter für alle Objekte akzeptiert, die mit den Methoden IDCompositionDevice2::CreateSurface oder IDCompositionDevice2::CreateVirtualSurface erstellt wurden. In diesem Fall gehört das von IDCompositionSurface::BeginDraw zurückgegebene Direct2D-Gerätekontextobjekt zu demselben Direct2D-Gerät, das als renderingDevice-Parameter übergeben wird.

Wenn der iid-Parameter __uuidof(IDCompositionDevice) ist, empfängt der dcompositionDevice-Parameter einen Zeiger auf eine IDCompositionDevice-Schnittstelle der Version 1, aber das zugrunde liegende Objekt ist ein Version 2-Desktopgeräteobjekt. Die Anwendung kann später einen Zeiger auf die SCHNITTSTELLEN IDCompositionDevice2 oder IDCompositionDesktopDevice abrufen, indem sie die QueryInterface-Methode auf diesem Gerät aufruft. Ebenso sind alle DirectComposition-Objekte, die von einem solchen Gerät erstellt werden, Objekte der Version 2 im Cover. Beispielsweise gibt die IDCompositionDevice::CreateVisual-Methode eine IDCompositionVisual-Schnittstelle an das erstellte Visual zurück, aber die Anwendung kann über die QueryInterface-Methode einen Zeiger auf die IDCompositionVisual2-Schnittstelle abrufen. Dieses Verhalten ermöglicht es einer Anwendung, die in die DirectComposition V1-API geschrieben wurde, DirectComposition V2-Features inkrementell zu übernehmen, indem die Methode zur Geräteerstellung von DCompositionCreateDevice in DCompositionCreateDevice2 geändert wird, während weiterhin die IDCompositionDevice2-Schnittstelle angefordert wird. Dadurch bleibt der Rest des Codes unverändert, während die Anwendung QueryInterface nur an den Stellen verwenden kann, an denen neue Funktionen benötigt werden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8.1 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile dcomp.h
Bibliothek Dcomp.lib
DLL Dcomp.dll

Weitere Informationen

IDCompositionDesktopDevice

IDCompositionDevice2

IDCompositionDevice2::CreateSurface

IDCompositionDevice2::CreateSurfaceFactory

IDCompositionDevice2::CreateVirtualSurface

IDCompositionSurface::BeginDraw