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.
[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
- Creare la risorsa come condivisa e specificare che usa handle NT impostando il flag di D3D11_RESOURCE_MISC_SHARED_NTHANDLE .
- 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.
- Eseguire una query sulla risorsa per l'interfaccia IDXGIResource1 .
- 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 |