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 指標的資源物件。
在兩部裝置之間共享資源
- 藉由設定 D3D11_RESOURCE_MISC_SHARED_NTHANDLE 旗標,將資源建立為共用並指定其使用NT句柄。
- 使用 __uuidof () 宏,取得資源的介面 REFIID 或 GUID。 例如,__uuidof (ID3D11Texture2D) 會擷取介面的 GUID 到 2D 紋理。
- 查詢 IDXGIResource1 介面的資源。
- 呼叫 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 |