Metodo ID3D11Device1::OpenSharedResourceByName (d3d11_1.h)

Consente a un dispositivo di accedere a una risorsa condivisa a cui fa riferimento il nome e che è stata creata in un dispositivo diverso. È necessario creare in precedenza la risorsa come condivisa e specificare che usa handle NT, ovvero si imposta il flag di D3D11_RESOURCE_MISC_SHARED_NTHANDLE .

Sintassi

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

Parametri

[in] lpName

Nome della risorsa da aprire. Questo parametro non può essere NULL.

[in] dwDesiredAccess

Diritti di accesso richiesti alla risorsa. Oltre ai diritti di accesso generici, DXGI definisce i valori seguenti:

  • DXGI_SHARED_RESOURCE_READ ( 0x80000000L ): specifica l'accesso in lettura alla risorsa.
  • DXGI_SHARED_RESOURCE_WRITE ( 1 ) : specifica l'accesso in scrittura alla risorsa.
È possibile combinare i valori usando un'operazione OR bit per bit.

[in] returnedInterface

Identificatore univoco globale (GUID) per l'interfaccia della risorsa. Per altre informazioni, vedere Osservazioni.

[out] ppResource

Puntatore a una variabile che riceve un puntatore all'interfaccia per l'oggetto risorsa condivisa a cui accedere.

Valore restituito

Questo metodo restituisce uno dei codici restituiti Direct3D 11. Questo metodo restituisce anche E_ACCESSDENIED se le autorizzazioni per accedere alla risorsa non sono valide.

Aggiornamento della piattaforma per Windows 7: In Windows 7 o Windows Server 2008 R2 con l'aggiornamento della piattaforma per Windows 7 installato, OpenSharedResourceByName ha esito negativo con E_NOTIMPL perché vengono usati NTHANDLES. Per altre informazioni sull'aggiornamento della piattaforma per Windows 7, vedere Platform Update per Windows 7.

Commenti

Il comportamento di OpenSharedResourceByName è simile al comportamento del metodo ID3D11Device1::OpenSharedResource1 ; ogni chiamata a OpenSharedResourceByName per accedere a una risorsa crea un nuovo oggetto risorsa. In altre parole, se si chiama OpenSharedResourceByName due volte e si passa lo stesso nome di risorsa a lpName, si ricevono due oggetti di risorsa con puntatori IUnknown diversi.

Per condividere una risorsa tra due dispositivi

  1. Creare la risorsa come condivisa e specificare che usa handle NT impostando il flag di D3D11_RESOURCE_MISC_SHARED_NTHANDLE .
  2. Ottenere il GUID REFIID o l'interfaccia nella risorsa usando la macro __uuidof(). Ad esempio, __uuidof(ID3D11Texture2D) recupera il GUID dell'interfaccia in una trama 2D.
  3. Eseguire una query sulla risorsa per l'interfaccia IDXGIResource1 .
  4. Chiamare il metodo IDXGIResource1::CreateSharedHandle per ottenere l'handle univoco alla risorsa. In questa chiamata IDXGIResource1::CreateSharedHandle è necessario passare un nome per la risorsa se si vuole successivamente chiamare OpenSharedResourceByName per accedere alla risorsa in base al nome.

Esempio

ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;

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

Requisiti

Requisito Valore
Client minimo supportato Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App UWP]
Server minimo supportato Windows Server 2012 e Aggiornamento della piattaforma per Windows Server 2008 R2 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione d3d11_1.h
Libreria D3D11.lib

Vedi anche

ID3D11Device1