ID3D11Device1 ::OpenSharedResourceByName, méthode (d3d11_1.h)
Donne à un appareil l’accès à une ressource partagée référencée par son nom 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 avez défini l’indicateur D3D11_RESOURCE_MISC_SHARED_NTHANDLE ).
Syntaxe
HRESULT OpenSharedResourceByName(
[in] LPCWSTR lpName,
[in] DWORD dwDesiredAccess,
[in] REFIID returnedInterface,
[out] void **ppResource
);
Paramètres
[in] lpName
Nom de la ressource à ouvrir. Ce paramètre ne peut pas avoir la valeur NULL.
[in] dwDesiredAccess
Droits d’accès demandés à la ressource. En plus des droits d’accès génériques, DXGI définit les valeurs suivantes :
- DXGI_SHARED_RESOURCE_READ ( 0x80000000L ) : spécifie l’accès en lecture à la ressource.
- DXGI_SHARED_RESOURCE_WRITE ( 1 ) : spécifie l’accès en écriture à la ressource.
[in] returnedInterface
Identificateur global unique (GUID) pour l’interface de ressource. Pour plus d’informations, 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 la plateforme pour Windows 7 : Sur Windows 7 ou Windows Server 2008 R2 sur lequel la mise à jour de la plateforme pour Windows 7 est installée, OpenSharedResourceByName échoue avec E_NOTIMPL car NTHANDLES sont utilisés. 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’OpenSharedResourceByName est similaire au comportement de la méthode ID3D11Device1 ::OpenSharedResource1 ; chaque appel à OpenSharedResourceByName pour accéder à une ressource crée un objet de ressource. En d’autres termes, si vous appelez OpenSharedResourceByName deux fois et passez le même nom de ressource à lpName, vous recevez deux objets de ressource avec des pointeurs IUnknown différents.
Pour partager une ressource entre deux appareils
- Créez la ressource en tant que 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 sur une texture 2D.
- Interrogez la ressource pour l’interface IDXGIResource1 .
- Appelez la méthode IDXGIResource1 ::CreateSharedHandle pour obtenir le handle unique de la ressource. Dans cet appel IDXGIResource1 ::CreateSharedHandle , vous devez passer un nom pour la ressource si vous souhaitez appeler par la suite OpenSharedResourceByName pour accéder à la ressource par son nom.
Exemples
ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;
pDevice->OpenSharedResourceByName(
"MySurface",
DXGI_SHARED_RESOURCE_READ,
__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 |