次の方法で共有


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 メソッドを使用してサーフェス ファクトリ オブジェクトを作成する場合は、このような DirectComposition デバイス オブジェクトを使用してサーフェスを間接的に作成できます。

renderingDevice パラメーターが DXGI デバイスを指している場合、そのデバイスを使用して、IDCompositionDevice2::CreateSurface メソッドと IDCompositionDevice2::CreateVirtualSurface メソッドで必要なすべてのビデオ メモリが割り当てられます。 さらに、IDCompositionSurface::BeginDraw メソッドは、同じ DXGI デバイスに属する DXGI サーフェスへのインターフェイス ポインターを返します。

renderingDevice パラメーターが Direct2D デバイス オブジェクトを指している場合、DirectComposition はそのオブジェクトから基になる DXGI デバイス オブジェクトを抽出し、その DXGI デバイス オブジェクトが renderingDevice パラメーターとして渡されたかのように使用します。 ただし、Direct2D オブジェクトをさらに渡すと、IDCompositionSurface::BeginDraw は、IDCompositionDevice2::CreateSurface メソッドまたは IDCompositionDevice2::CreateVirtualSurface メソッドで作成されたオブジェクトの iid パラメーターに対して、__uuidof(ID2D1DeviceContext) を受け入れます。 その場合、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 に書き込まれたアプリケーションは、IDCompositionDevice2 インターフェイスを要求しながら、デバイスの作成方法を DCompositionCreateDevice から DCompositionCreateDevice2 に変更することで、DirectComposition V2 機能を段階的に採用できます。 これにより、残りのコードは変更されず、アプリケーションは新しい機能が必要な場所でのみ QueryInterface を使用できます。

要件

要件
サポートされている最小のクライアント Windows 8.1 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー dcomp.h
Library Dcomp.lib
[DLL] Dcomp.dll

こちらもご覧ください

IDCompositionDesktopDevice

IDCompositionDevice2

IDCompositionDevice2::CreateSurface

IDCompositionDevice2::CreateSurfaceFactory

IDCompositionDevice2::CreateVirtualSurface

IDCompositionSurface::BeginDraw