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 上,由于使用了 NTHANDLES,OpenSharedResource1 将失败并E_NOTIMPL。 有关 Windows 7 平台更新的详细信息,请参阅 适用于 Windows 7 的平台更新。
注解
OpenSharedResource1 的行为类似于 ID3D11Device::OpenSharedResource 方法的行为;每次调用 OpenSharedResource1 来访问资源都会创建一个新的资源对象。 换句话说,如果调用 OpenSharedResource1 两次并将同一资源句柄传递给 hResource,则会收到两个具有不同 IUnknown 指针的资源对象。
在两个设备之间共享资源
- 通过设置 D3D11_RESOURCE_MISC_SHARED_NTHANDLE 标志, 将资源创建为共享资源,并指定它使用 NT 句柄。
- 使用 __uuidof () 宏获取资源接口的 REFIID 或 GUID。 例如,__uuidof (ID3D11Texture2D) 检索 2D 纹理接口的 GUID。
- 查询 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 |
Library | D3D11.lib |