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