ID3D11Device1::OpenSharedResource1-Methode (d3d11_1.h)

Gewährt einem Gerät Zugriff auf eine freigegebene Ressource, auf die ein Handle verweist 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 D3D11_RESOURCE_MISC_SHARED_NTHANDLE-Flag fest).

Syntax

HRESULT OpenSharedResource1(
  [in]  HANDLE hResource,
  [in]  REFIID returnedInterface,
  [out] void   **ppResource
);

Parameter

[in] hResource

Ein Handle für die zu öffnende Ressource. Weitere Informationen zu diesem Parameter finden Sie unter Hinweise.

[in] returnedInterface

Der globally unique Identifier (GUID) für die Ressourcenschnittstelle. Weitere Informationen zu diesem Parameter 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 OpenSharedResource1 mit E_NOTIMPL fehl, da NTHANDLES verwendet werden. Weitere Informationen zum Plattformupdate für Windows 7 finden Sie unter Plattformupdate für Windows 7.

Hinweise

Das Verhalten von OpenSharedResource1 ähnelt dem Verhalten der ID3D11Device::OpenSharedResource-Methode . Jeder Aufruf von OpenSharedResource1 für den Zugriff auf eine Ressource erstellt ein neues Ressourcenobjekt. Anders ausgedrückt: Wenn Sie OpenSharedResource1 zweimal aufrufen und dasselbe Ressourcenhandle an hResource ü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 sie NT-Handles verwendet, 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.

Beispiele

HANDLE handle = GetSharedHandleFromOtherProcess();
ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;

pDevice->OpenSharedResource1(
          handle, 
          __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