共用方式為


DCompositionCreateDevice2 函式 (dcomp.h)

建立可用來建立其他 Microsoft DirectComposition 物件的新裝置物件。

語法

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

參數

[in, optional] renderingDevice

用來建立 DirectComposition 介面物件的 DirectX 裝置選擇性指標。 必須是實作 IDXGIDeviceID2D1Device 介面之物件的指標。

[in] iid

要擷取之介面的標識碼。 這必須是其中一個__uuidof (IDCompositionDevice) 或__uuidof (IDCompositionDesktopDevice) 。

[out] dcompositionDevice

接收新建立之裝置物件的介面指標。 指標的類型是由 iid 參數所指定。 此參數不得為 NULL。

傳回值

如果函式成功,它會傳回S_OK。 否則,它會傳回 HRESULT 錯誤碼。 如需錯誤碼的清單,請參閱 DirectComposition 錯誤 碼。

備註

裝置物件可作為所有其他 DirectComposition 對象的處理站。 它也會透過IDCompositionDevice2::Commit方法控制交易組合。

renderingDevice 參數可能指向 DXGI、Direct3D、Direct2D 裝置物件,或可能是 NULL。 此參數會影響 IDCompositionDevice2::CreateSurface、IDCompositionDevice2::CreateVirtualSurface 和 IDCompositionSurface::BeginDraw 方法的行為。

如果 renderingDevice 參數為 NULL,則傳回的 DirectComposition 裝置無法直接建立 DirectComposition 介面物件。 特別是,不論提供的參數為何,IDCompositionDevice2::CreateSurface 和 IDCompositionDevice2::CreateVirtualSurface 方法都會傳回E_INVALIDARG。 不過,如果應用程式透過IDCompositionDevice2::CreateSurfaceFactory方法建立 Surface Factory 物件,仍然可以使用這類 DirectComposition 裝置物件間接建立介面。

如果 renderingDevice 參數指向 DXGI 裝置,該裝置會用來配置 IDCompositionDevice2::CreateSurface 和 IDCompositionDevice2::CreateVirtualSurface 方法所需的所有視訊記憶體。 此外,IDCompositionSurface::BeginDraw 方法會傳回屬於該相同 DXGI 裝置的 DXGI 介面指標。

如果 renderingDevice 參數指向 Direct2D 裝置物件,DirectComposition 會從它擷取基礎 DXGI 裝置物件,並使用它,就像該 DXGI 裝置物件已當做 renderingDevice 參數傳入一樣。 不過,傳入 Direct2D 物件會導致 IDCompositionSurface::BeginDraw 接受其 iid 參數的 idCompositionDeviceContext __uuidof (ID2D1DeviceContext) ,以使用 IDCompositionDevice2::CreateSurface 或 IDCompositionDevice2::CreateVirtualSurface 方法建立的任何物件。 在此情況下,IDCompositionSurface::BeginDraw 所傳回的 Direct2D 裝置內容對象會屬於與 renderingDevice 參數傳遞的相同 Direct2D 裝置。

如果 iid 參數__uuidof (IDCompositionDevice) ,則 dcompositionDevice 參數會收到第 1 版 IDCompositionDevice 介面的指標,但基礎對像是第 2 版桌面裝置物件。 應用程式稍後可以藉由在該裝置上呼叫 QueryInterface 方法,取得 IDCompositionDevice2 或 IDCompositionDesktopDevice 介面的指標。 同樣地,從這類裝置建立的所有 DirectComposition 物件都是底下的第 2 版物件。 例如,IDCompositionDevice::CreateVisual 方法會將 IDCompositionVisual 介面傳回至建立的視覺效果,但應用程式可以透過 QueryInterface 方法取得 IDCompositionVisual2 介面的指標。 此行為可讓寫入 DirectComposition V1 API 的應用程式透過將裝置建立方法從 DCompositionCreateDevice 變更為 DCompositionCreateDevice2,同時仍要求 IDCompositionDevice2 介面,以累加方式採用 DirectComposition V2 功能。 這可讓其餘的程式代碼維持不變,同時讓應用程式只能夠在需要新功能的地方使用 QueryInterface。

規格需求

需求
最低支援的用戶端 Windows 8.1 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2012 R2 [僅限傳統型應用程式]
目標平台 Windows
標頭 dcomp.h
程式庫 Dcomp.lib
Dll Dcomp.dll

另請參閱

IDCompositionDesktopDevice

IDCompositionDevice2

IDCompositionDevice2::CreateSurface

IDCompositionDevice2::CreateSurfaceFactory

IDCompositionDevice2::CreateVirtualSurface

IDCompositionSurface::BeginDraw