Metodo ID3D11Device1::OpenSharedResource1 (d3d11_1.h)

Fornisce a un dispositivo l'accesso a una risorsa condivisa a cui fa riferimento un handle e che è stato creato in un dispositivo diverso. È necessario aver creato in precedenza la risorsa come condivisa e aver specificato che utilizza handle NT, ovvero si imposta il flag di D3D11_RESOURCE_MISC_SHARED_NTHANDLE .

Sintassi

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

Parametri

[in] hResource

Handle per la risorsa da aprire. Per altre info su questo parametro, vedi Osservazioni.

[in] returnedInterface

Identificatore univoco globale (GUID) per l'interfaccia della risorsa. Per altre info su questo parametro, vedi Osservazioni.

[out] ppResource

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

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, OpenSharedResource1 ha esito negativo con E_NOTIMPL perché vengono usati NTHANDLES. Per altre info sull'aggiornamento della piattaforma per Windows 7, vedi Platform Update per Windows 7.

Commenti

Il comportamento di OpenSharedResource1 è simile al comportamento del metodo ID3D11Device::OpenSharedResource ; ogni chiamata a OpenSharedResource1 per accedere a una risorsa crea un nuovo oggetto risorsa. In altre parole, se si chiama OpenSharedResource1 due volte e si passa lo stesso handle di risorsa a hResource, si ricevono due oggetti 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 D3D11_RESOURCE_MISC_SHARED_NTHANDLE .
  2. Ottenere il REFIID o IL GUID dell'interfaccia alla 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 per la risorsa.

Esempio

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

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