Метод 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 Server 2008 R2 с установленным обновлением платформы для Windows 7openSharedResource1 завершается сбоем с E_NOTIMPL, так как используются NTHANDLES. Дополнительные сведения об Обновлении платформы для Windows 7 см. в разделе Обновление платформы для Windows 7.
Комментарии
Поведение OpenSharedResource1 аналогично поведению метода ID3D11Device::OpenSharedResource ; Каждый вызов OpenSharedResource1 для доступа к ресурсу создает новый объект ресурса. Другими словами, если вызвать OpenSharedResource1 дважды и передать один и тот же дескриптор ресурса в hResource, вы получите два объекта ресурсов с разными указателями IUnknown .
Совместное использование ресурса между двумя устройствами
- Создайте ресурс как общий и укажите, что он использует дескрипторы NT, установив флаг D3D11_RESOURCE_MISC_SHARED_NTHANDLE .
- Получите ИДЕНТИФИКАТОР REFIID или GUID интерфейса к ресурсу с помощью макроса __uuidof(). Например, __uuidof(ID3D11Texture2D) извлекает GUID интерфейса в двухd-текстуру.
- Запросите ресурс для интерфейса IDXGIResource1 .
- Вызовите метод IDXGIResource1::CreateSharedHandle , чтобы получить уникальный дескриптор ресурса.
Примеры
HANDLE handle = GetSharedHandleFromOtherProcess();
ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;
pDevice->OpenSharedResource1(
handle,
__uuidof(ID3D11Texture2D),
(void**)&pTexture2D);
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 и обновление платформы для Windows Server 2008 R2 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | d3d11_1.h |
Библиотека | D3D11.lib |