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.
Puede combinar valores mediante una operación OR bit a bit.

[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

  1. Cree el recurso como compartido y especifique que usa identificadores NT; para ello, establezca la marca D3D11_RESOURCE_MISC_SHARED_NTHANDLE .
  2. 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.
  3. Consulte el recurso para la interfaz IDXGIResource1 .
  4. 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

Consulte también

ID3D11Device1