ID3D11Device1::OpenSharedResource1 方法 (d3d11_1.h)

提供裝置存取由句柄所參考且在不同裝置上建立的共享資源。 您先前必須已將資源建立為共用,並指定它使用NT句柄 (,也就是您設定 D3D11_RESOURCE_MISC_SHARED_NTHANDLE 旗標) 。

語法

HRESULT OpenSharedResource1(
  [in]  HANDLE hResource,
  [in]  REFIID returnedInterface,
  [out] void   **ppResource
);

參數

[in] hResource

要開啟之資源的句柄。 如需此參數的詳細資訊,請參閱。

[in] returnedInterface

資源介面的全域唯一標識碼 (GUID) 。 如需此參數的詳細資訊,請參閱。

[out] ppResource

變數的指標,接收要存取之共用資源物件的介面指標。

傳回值

這個方法會傳回其中一個 Direct3D 11 傳回碼。 如果存取資源的許可權無效,這個方法也會傳回E_ACCESSDENIED。

適用於 Windows 7 的平臺更新: 在已安裝 Windows 7 平臺更新 的 Windows 7 或 Windows Server 2008 R2 上, OpenSharedResource1 會因為使用 NTHANDLES 而失敗,E_NOTIMPL。 如需 Windows 7 平臺更新的詳細資訊,請參閱 適用於 Windows 7 的平臺更新

備註

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

在兩部裝置之間共享資源

  1. 藉由設定 D3D11_RESOURCE_MISC_SHARED_NTHANDLE 旗標,將資源建立為共用並指定其使用NT句柄。
  2. 使用 __uuidof () 宏,取得資源的介面 REFIID 或 GUID。 例如,__uuidof (ID3D11Texture2D) 會擷取介面的 GUID 到 2D 紋理。
  3. 查詢 IDXGIResource1 介面的資源。
  4. 呼叫 IDXGIResource1::CreateSharedHandle 方法,以取得資源的唯一句柄。

範例

HANDLE handle = GetSharedHandleFromOtherProcess();
ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;

pDevice->OpenSharedResource1(
          handle, 
          __uuidof(ID3D11Texture2D), 
         (void**)&pTexture2D);

規格需求

需求
最低支援的用戶端 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 適用於 Windows Server 2008 R2 的 Windows Server 2012 和平臺更新 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 d3d11_1.h
程式庫 D3D11.lib

另請參閱

ID3D11Device1