Funzione DCompositionCreateDevice2 (dcomp.h)

Crea un nuovo oggetto dispositivo che può essere usato per creare altri oggetti Microsoft DirectComposition.

Sintassi

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

Parametri

[in, optional] renderingDevice

Puntatore facoltativo a un dispositivo DirectX da usare per creare oggetti di superficie DirectComposition. Deve essere un puntatore a un oggetto che implementa le interfacce IDXGIDevice o ID2D1Device .

[in] iid

Identificatore dell'interfaccia da recuperare. Questo deve essere uno dei __uuidof(IDCompositionDevice) o __uuidof(IDCompositionDesktopDevice).

[out] dcompositionDevice

Riceve un puntatore dell'interfaccia all'oggetto dispositivo appena creato. Il puntatore è del tipo specificato dal parametro iid . Questo parametro non deve essere NULL.

Valore restituito

Se la funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT . Per un elenco di codici di errore, vedere Codici di errore DirectComposition .

Commenti

Un oggetto dispositivo funge da factory per tutti gli altri oggetti DirectComposition. Controlla anche la composizione transazionale tramite il metodo IDCompositionDevice2::Commit.

Il parametro renderingDevice può puntare a un oggetto dispositivo DXGI, Direct3D, Direct2D o null. Questo parametro influisce sul comportamento dei metodi IDCompositionDevice2::CreateSurface, IDCompositionDevice2::CreateVirtualSurface e IDCompositionSurface::BeginDraw.

Se il parametro renderingDevice è NULL, il dispositivo DirectComposition restituito non può creare direttamente oggetti superficie DirectComposition. In particolare, i metodi IDCompositionDevice2::CreateSurface e IDCompositionDevice2::CreateVirtualSurface restituiscono E_INVALIDARG, indipendentemente dai parametri specificati. Tuttavia, tale oggetto dispositivo DirectComposition può comunque essere usato per creare superfici indirettamente se l'applicazione crea un oggetto surface factory tramite il metodo IDCompositionDevice2::CreateSurfaceFactory.

Se il parametro renderingDevice punta a un dispositivo DXGI, tale dispositivo viene usato per allocare tutta la memoria video necessaria dai metodi IDCompositionDevice2::CreateSurface e IDCompositionDevice2::CreateVirtualSurface. Inoltre, il metodo IDCompositionSurface::BeginDraw restituisce un puntatore dell'interfaccia a una superficie DXGI appartenente allo stesso dispositivo DXGI.

Se il parametro renderingDevice punta a un oggetto dispositivo Direct2D, DirectComposition estrae dall'oggetto dispositivo DXGI sottostante e lo usa come se tale oggetto dispositivo DXGI fosse stato passato come parametro renderingDevice . Tuttavia, passando un oggetto Direct2D fa in modo che IDCompositionSurface::BeginDraw accetti __uuidof(ID2D1DeviceContext) per il relativo parametro iid per gli oggetti creati con IDCompositionDevice2::CreateSurface o IDCompositionDevice2::CreateVirtualSurface. In tal caso, l'oggetto contesto del dispositivo Direct2D restituito da IDCompositionSurface::BeginDraw appartiene allo stesso dispositivo Direct2D passato come parametro renderingDevice .

Se il parametro iid è __uuidof(IDCompositionDevice), il parametro dcompositionDevice riceve un puntatore a un'interfaccia IDCompositionDevice versione 1, ma l'oggetto sottostante è un oggetto dispositivo desktop versione 2. L'applicazione può in seguito ottenere un puntatore alle interfacce IDCompositionDevice2 o IDCompositionDesktopDevice chiamando il metodo QueryInterface nel dispositivo. Analogamente, tutti gli oggetti DirectComposition creati da tale dispositivo sono oggetti versione 2 sotto le copertine. Ad esempio, il metodo IDCompositionDevice::CreateVisual restituirà un'interfaccia IDCompositionVisual all'oggetto visivo creato, ma l'applicazione può ottenere un puntatore all'interfaccia IDCompositionVisual2 tramite il metodo QueryInterface. Questo comportamento consente a un'applicazione scritta nell'API DirectComposition V1 di adottare in modo incrementale le funzionalità DirectComposition V2 modificando il metodo di creazione del dispositivo da DCompositionCreateDevice a DCompositionCreateDevice2, pur richiedendo ancora l'interfaccia IDCompositionDevice2. Ciò consente al resto del codice di rimanere invariato, consentendo all'applicazione di usare QueryInterface nelle posizioni in cui è necessaria una nuova funzionalità.

Requisiti

Requisito Valore
Client minimo supportato Windows 8.1 [solo app desktop]
Server minimo supportato Windows Server 2012 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione dcomp.h
Libreria Dcomp.lib
DLL Dcomp.dll

Vedi anche

IDCompositionDesktopDevice

IDCompositionDevice2

IDCompositionDevice2::CreateSurface

IDCompositionDevice2::CreateSurfaceFactory

IDCompositionDevice2::CreateVirtualSurface

IDCompositionSurface::BeginDraw