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 ( 0x800000000L ) - 指定資源的讀取許可權。
  • 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 上, OpenSharedResourceByName 會因為使用 NTHANDLES 而失敗並E_NOTIMPL。 如需 Windows 7 平臺更新的詳細資訊,請參閱 適用於 Windows 7 的平臺更新

備註

OpenSharedResourceByName 的行為類似於 ID3D11Device1::OpenSharedResource1 方法的行為;每個呼叫 OpenSharedResourceByName 來存取資源都會建立新的資源物件。 換句話說,如果您呼叫 OpenSharedResourceByName 兩次,並將相同的資源名稱傳遞至 lpName,您會收到兩個具有不同 IUnknown 指標的資源物件。

在兩部裝置之間共享資源

  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
程式庫 D3D11.lib

另請參閱

ID3D11Device1