DCompositionCreateDevice2 函式 (dcomp.h)
建立可用來建立其他 Microsoft DirectComposition 物件的新裝置物件。
語法
HRESULT DCompositionCreateDevice2(
[in, optional] IUnknown *renderingDevice,
[in] REFIID iid,
[out] void **dcompositionDevice
);
參數
[in, optional] renderingDevice
用來建立 DirectComposition 介面物件的 DirectX 裝置選擇性指標。 必須是實作 IDXGIDevice 或 ID2D1Device 介面之物件的指標。
[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