ID3D11Device1 ::OpenSharedResource1, méthode (d3d11_1.h)
Donne à un appareil l’accès à une ressource partagée référencée par un handle et qui a été créée sur un autre appareil. Vous devez avoir précédemment créé la ressource comme partagée et spécifié qu’elle utilise des handles NT (autrement dit, vous définissez l’indicateur D3D11_RESOURCE_MISC_SHARED_NTHANDLE ).
Syntaxe
HRESULT OpenSharedResource1(
[in] HANDLE hResource,
[in] REFIID returnedInterface,
[out] void **ppResource
);
Paramètres
[in] hResource
Handle de la ressource à ouvrir. Pour plus d’informations sur ce paramètre, consultez Remarques.
[in] returnedInterface
Identificateur global unique (GUID) pour l’interface de ressource. Pour plus d’informations sur ce paramètre, consultez Remarques.
[out] ppResource
Pointeur vers une variable qui reçoit un pointeur vers l’interface à laquelle l’objet de ressource partagé doit accéder.
Valeur retournée
Cette méthode retourne l’un des codes de retour Direct3D 11. Cette méthode retourne également E_ACCESSDENIED si les autorisations d’accès à la ressource ne sont pas valides.
Mise à jour de plateforme pour Windows 7 : Sur Windows 7 ou Windows Server 2008 R2 sur lequel la mise à jour de plateforme pour Windows 7 est installée, OpenSharedResource1 échoue avec E_NOTIMPL car NTHANDLES est utilisé. Pour plus d’informations sur la mise à jour de plateforme pour Windows 7, consultez Mise à jour de plateforme pour Windows 7.
Remarques
Le comportement d’OpenSharedResource1 est similaire au comportement de la méthode ID3D11Device ::OpenSharedResource ; chaque appel à OpenSharedResource1 pour accéder à une ressource crée un objet de ressource. En d’autres termes, si vous appelez OpenSharedResource1 deux fois et que vous passez le même handle de ressource à hResource, vous recevez deux objets de ressource avec des pointeurs IUnknown différents.
Pour partager une ressource entre deux appareils
- Créez la ressource comme partagée et spécifiez qu’elle utilise des handles NT en définissant l’indicateur D3D11_RESOURCE_MISC_SHARED_NTHANDLE .
- Obtenez le REFIID, ou GUID, de l’interface de la ressource à l’aide de la macro __uuidof(). Par exemple, __uuidof(ID3D11Texture2D) récupère le GUID de l’interface dans une texture 2D.
- Interrogez la ressource pour l’interface IDXGIResource1 .
- Appelez la méthode IDXGIResource1 ::CreateSharedHandle pour obtenir le handle unique de la ressource.
Exemples
HANDLE handle = GetSharedHandleFromOtherProcess();
ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;
pDevice->OpenSharedResource1(
handle,
__uuidof(ID3D11Texture2D),
(void**)&pTexture2D);
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows Server 2012 et mise à jour de plateforme pour Windows Server 2008 R2 [applications de bureau | Applications UWP] |
Plateforme cible | Windows |
En-tête | d3d11_1.h |
Bibliothèque | D3D11.lib |