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