次の方法で共有


ID3D11Device1::OpenSharedResourceByName メソッド (d3d11_1.h)

名前で参照され、別のデバイスで作成された共有リソースへのデバイス アクセス権をデバイスに付与します。 リソースを共有として作成し、NT ハンドルを使用するように指定しておく必要があります (つまり、 D3D11_RESOURCE_MISC_SHARED_NTHANDLE フラグを設定します)。

構文

HRESULT OpenSharedResourceByName(
  [in]  LPCWSTR lpName,
  [in]  DWORD   dwDesiredAccess,
  [in]  REFIID  returnedInterface,
  [out] void    **ppResource
);

パラメーター

[in] lpName

開くリソースの名前。 このパラメーターを NULL にすることはできません。

[in] dwDesiredAccess

リソースに対して要求されたアクセス権。 DXGI では、 汎用アクセス権に加えて、次の値を定義します。

  • DXGI_SHARED_RESOURCE_READ ( 0x80000000L ) - リソースへの読み取りアクセスを指定します。
  • DXGI_SHARED_RESOURCE_WRITE ( 1 ) - リソースへの書き込みアクセスを指定します。
ビットごとの OR 演算を使用して値を結合できます。

[in] returnedInterface

リソース インターフェイスのグローバル一意識別子 (GUID)。 詳細については、「備考」を参照してください。

[out] ppResource

アクセスする共有リソース オブジェクトのインターフェイスへのポインターを受け取る変数へのポインター。

戻り値

このメソッドは、 Direct3D 11 のリターン コードのいずれかを返します。 このメソッドは、リソースにアクセスするためのアクセス許可が無効な場合もE_ACCESSDENIEDを返します。

Windows 7 のプラットフォーム更新プログラム: Windows 7 のプラットフォーム更新プログラム がインストールされている Windows 7 または Windows Server 2008 R2 では、NTHANDLES が使用されているため、 OpenSharedResourceByName はE_NOTIMPLで失敗します。 Windows 7 のプラットフォーム更新プログラムの詳細については、「Windows 7 用プラットフォーム更新プログラム」を参照してください。

注釈

OpenSharedResourceByName の動作は、ID3D11Device1::OpenSharedResource1 メソッドの動作に似ています。OpenSharedResourceByName を呼び出してリソースにアクセスするたびに、新しいリソース オブジェクトが作成されます。 言い換えると、 OpenSharedResourceByName を 2 回呼び出し、 lpName に同じリソース名を渡すと、異なる IUnknown ポインターを持つ 2 つのリソース オブジェクトを受け取ります。

2 つのデバイス間でリソースを共有するには

  1. D3D11_RESOURCE_MISC_SHARED_NTHANDLE フラグを設定して、リソースを共有として作成し、NT ハンドルを使用するように指定します。
  2. __uuidof() マクロを使用して、リソースへのインターフェイスの REFIID (GUID) を取得します。 たとえば、__uuidof(ID3D11Texture2D) は、インターフェイスの GUID を 2D テクスチャに取得します。
  3. IDXGIResource1 インターフェイスのリソースに対してクエリを実行します。
  4. IDXGIResource1::CreateSharedHandle メソッドを呼び出して、リソースへの一意のハンドルを取得します。 この IDXGIResource1::CreateSharedHandle 呼び出しでは、後で OpenSharedResourceByName を呼び出してリソースに名前でアクセスする場合は、リソースの名前を渡す必要があります。

ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;

pDevice->OpenSharedResourceByName(
          "MySurface", 
          DXGI_SHARED_RESOURCE_READ, 
          __uuidof(ID3D11Texture2D), 
         (void**)&pTexture2D);

要件

要件
サポートされている最小のクライアント Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 R2 のWindows Server 2012とプラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー d3d11_1.h
Library D3D11.lib

こちらもご覧ください

ID3D11Device1