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.
Vous pouvez combiner des valeurs à l’aide d’une opération OR au niveau du bit.

[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

  1. 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 .
  2. 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.
  3. Interrogez la ressource pour l’interface IDXGIResource1 .
  4. 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

Voir aussi

ID3D11Device1