Método ID3D11Device1::OpenSharedResourceByName (d3d11_1.h)
Proporciona a un dispositivo acceso a un recurso compartido al que se hace referencia por nombre y que se creó en un dispositivo diferente. Debe haber creado previamente el recurso como compartido y especificado que usa identificadores NT (es decir, establezca la marca D3D11_RESOURCE_MISC_SHARED_NTHANDLE ).
Sintaxis
HRESULT OpenSharedResourceByName(
[in] LPCWSTR lpName,
[in] DWORD dwDesiredAccess,
[in] REFIID returnedInterface,
[out] void **ppResource
);
Parámetros
[in] lpName
Nombre del recurso que se va a abrir. Este parámetro no puede ser NULL.
[in] dwDesiredAccess
Derechos de acceso solicitados al recurso. Además de los derechos de acceso genéricos, DXGI define los siguientes valores:
- DXGI_SHARED_RESOURCE_READ ( 0x800000000L ): especifica el acceso de lectura al recurso.
- DXGI_SHARED_RESOURCE_WRITE ( 1 ): especifica el acceso de escritura al recurso.
[in] returnedInterface
Identificador único global (GUID) de la interfaz de recursos. Para obtener más información, consulta Comentarios.
[out] ppResource
Puntero a una variable que recibe un puntero a la interfaz para que el objeto de recurso compartido tenga acceso.
Valor devuelto
Este método devuelve uno de los códigos de retorno de Direct3D 11. Este método también devuelve E_ACCESSDENIED si los permisos para acceder al recurso no son válidos.
Actualización de la plataforma para Windows 7: En Windows 7 o Windows Server 2008 R2 con la actualización de plataforma para Windows 7 instalada, OpenSharedResourceByName produce un error E_NOTIMPL porque se usan NTHANDLES. Para obtener más información sobre la actualización de plataforma para Windows 7, consulta Actualización de plataforma para Windows 7.
Comentarios
El comportamiento de OpenSharedResourceByName es similar al comportamiento del método ID3D11Device1::OpenSharedResource1 ; cada llamada a OpenSharedResourceByName para acceder a un recurso crea un nuevo objeto de recurso. En otras palabras, si llama a OpenSharedResourceByName dos veces y pasa el mismo nombre de recurso a lpName, recibirá dos objetos de recursos con punteros IUnknown diferentes.
Para compartir un recurso entre dos dispositivos
- Cree el recurso como compartido y especifique que usa identificadores NT; para ello, establezca la marca D3D11_RESOURCE_MISC_SHARED_NTHANDLE .
- Obtenga el REFIID, o GUID, de la interfaz al recurso mediante la macro __uuidof(). Por ejemplo, __uuidof(ID3D11Texture2D) recupera el GUID de la interfaz en una textura 2D.
- Consulte el recurso para la interfaz IDXGIResource1 .
- Llame al método IDXGIResource1::CreateSharedHandle para obtener el identificador único del recurso. En esta llamada IDXGIResource1::CreateSharedHandle , debe pasar un nombre para el recurso si desea llamar posteriormente a OpenSharedResourceByName para acceder al recurso por nombre.
Ejemplos
ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;
pDevice->OpenSharedResourceByName(
"MySurface",
DXGI_SHARED_RESOURCE_READ,
__uuidof(ID3D11Texture2D),
(void**)&pTexture2D);
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 y Actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2012 y actualización de plataforma para Windows Server 2008 R2 [aplicaciones de escritorio | Aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | d3d11_1.h |
Library | D3D11.lib |