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