Partager via


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

  1. 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 .
  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 dans 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.

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

Voir aussi

ID3D11Device1