Método ID3D11Device1::OpenSharedResource1 (d3d11_1.h)

Proporciona a un dispositivo acceso a un recurso compartido al que hace referencia un identificador 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 OpenSharedResource1(
  [in]  HANDLE hResource,
  [in]  REFIID returnedInterface,
  [out] void   **ppResource
);

Parámetros

[in] hResource

Identificador del recurso que se va a abrir. Para obtener más información sobre este parámetro, vea Comentarios.

[in] returnedInterface

Identificador único global (GUID) de la interfaz de recursos. Para obtener más información sobre este parámetro, vea 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, OpenSharedResource1 produce un error E_NOTIMPL porque se usan NTHANDLES. Para obtener más información sobre platform Update para Windows 7, consulta Platform Update para Windows 7.

Comentarios

El comportamiento de OpenSharedResource1 es similar al comportamiento del método ID3D11Device::OpenSharedResource ; cada llamada a OpenSharedResource1 para acceder a un recurso crea un nuevo objeto de recurso. En otras palabras, si llama a OpenSharedResource1 dos veces y pasa el mismo identificador de recurso a hResource, 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.

Ejemplos

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

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