ID3D11Device1::OpenSharedResourceByName-Methode (d3d11_1.h)

Gewährt einem Gerät Zugriff auf eine freigegebene Ressource, auf die mit dem Namen verwiesen wird und die auf einem anderen Gerät erstellt wurde. Sie müssen die Ressource zuvor als freigegeben erstellt und angegeben haben, dass sie NT-Handles verwendet (d. h. Sie legen das flag D3D11_RESOURCE_MISC_SHARED_NTHANDLE fest).

Syntax

HRESULT OpenSharedResourceByName(
  [in]  LPCWSTR lpName,
  [in]  DWORD   dwDesiredAccess,
  [in]  REFIID  returnedInterface,
  [out] void    **ppResource
);

Parameter

[in] lpName

Der Name der zu öffnenden Ressource. Dieser Parameter darf nicht NULL sein.

[in] dwDesiredAccess

Die angeforderten Zugriffsrechte für die Ressource. Zusätzlich zu den generischen Zugriffsrechten definiert DXGI die folgenden Werte:

  • DXGI_SHARED_RESOURCE_READ ( 0x80000000L ) – gibt lesezugriff auf die Ressource an.
  • DXGI_SHARED_RESOURCE_WRITE ( 1 ) – gibt Schreibzugriff auf die Ressource an.
Sie können Werte mithilfe einer bitweisen OR-Operation kombinieren.

[in] returnedInterface

Die GUID (Globally Unique Identifier) für die Ressourcenschnittstelle. Weitere Informationen finden Sie unter Hinweise.

[out] ppResource

Ein Zeiger auf eine Variable, die einen Zeiger auf die Schnittstelle empfängt, auf die das freigegebene Ressourcenobjekt zugreifen soll.

Rückgabewert

Diese Methode gibt einen der Direct3D 11-Rückgabecodes zurück. Diese Methode gibt auch E_ACCESSDENIED zurück, wenn die Berechtigungen für den Zugriff auf die Ressource ungültig sind.

Plattformupdate für Windows 7: Unter Windows 7 oder Windows Server 2008 R2 mit installiertem Plattformupdate für Windows 7 schlägt OpenSharedResourceByName mit E_NOTIMPL fehl, da NTHANDLES verwendet wird. Weitere Informationen zum Plattformupdate für Windows 7 finden Sie unter Plattformupdate für Windows 7.

Hinweise

Das Verhalten von OpenSharedResourceByName ähnelt dem Verhalten der ID3D11Device1::OpenSharedResource1-Methode . Jeder Aufruf von OpenSharedResourceByName für den Zugriff auf eine Ressource erstellt ein neues Ressourcenobjekt. Anders ausgedrückt: Wenn Sie OpenSharedResourceByName zweimal aufrufen und denselben Ressourcennamen an lpName übergeben, erhalten Sie zwei Ressourcenobjekte mit unterschiedlichen IUnknown-Zeigern .

So teilen Sie eine Ressource zwischen zwei Geräten

  1. Erstellen Sie die Ressource als freigegeben, und geben Sie an, dass NT-Handles verwendet werden, indem Sie das flag D3D11_RESOURCE_MISC_SHARED_NTHANDLE festlegen.
  2. Rufen Sie die REFIID oder GUID der Schnittstelle für die Ressource mithilfe des Makros __uuidof() ab. Beispielsweise ruft __uuidof(ID3D11Texture2D) die GUID der Schnittstelle in eine 2D-Textur ab.
  3. Fragen Sie die Ressource für die IDXGIResource1-Schnittstelle ab.
  4. Rufen Sie die IDXGIResource1::CreateSharedHandle-Methode auf, um das eindeutige Handle für die Ressource abzurufen. In diesem IDXGIResource1::CreateSharedHandle-Aufruf müssen Sie einen Namen für die Ressource übergeben, wenn Sie anschließend OpenSharedResourceByName aufrufen möchten, um anhand des Namens auf die Ressource zuzugreifen.

Beispiele

ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;

pDevice->OpenSharedResourceByName(
          "MySurface", 
          DXGI_SHARED_RESOURCE_READ, 
          __uuidof(ID3D11Texture2D), 
         (void**)&pTexture2D);

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 und Plattformupdate für Windows Server 2008 R2 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile d3d11_1.h
Bibliothek D3D11.lib

Weitere Informationen

ID3D11Device1