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

Fornece a um dispositivo acesso a um recurso compartilhado que é referenciado pelo nome e que foi criado em um dispositivo diferente. Você deve ter criado o recurso anteriormente como compartilhado e especificado que ele usa identificadores NT (ou seja, você define o sinalizador D3D11_RESOURCE_MISC_SHARED_NTHANDLE ).

Sintaxe

HRESULT OpenSharedResourceByName(
  [in]  LPCWSTR lpName,
  [in]  DWORD   dwDesiredAccess,
  [in]  REFIID  returnedInterface,
  [out] void    **ppResource
);

Parâmetros

[in] lpName

O nome do recurso a ser aberto. Esse parâmetro não pode ser NULL.

[in] dwDesiredAccess

Os direitos de acesso solicitados ao recurso. Além dos direitos de acesso genéricos, o DXGI define os seguintes valores:

  • DXGI_SHARED_RESOURCE_READ ( 0x80000000L ) – especifica o acesso de leitura ao recurso.
  • DXGI_SHARED_RESOURCE_WRITE ( 1 ) – especifica o acesso de gravação ao recurso.
Você pode combinar valores usando uma operação OR bit a bit.

[in] returnedInterface

O GUID (identificador global exclusivo) para a interface de recurso. Para obter mais informações, consulte Comentários.

[out] ppResource

Um ponteiro para uma variável que recebe um ponteiro para a interface para o objeto de recurso compartilhado acessar.

Retornar valor

Esse método retorna um dos códigos de retorno do Direct3D 11. Esse método também retornará E_ACCESSDENIED se as permissões para acessar o recurso não forem válidas.

Atualização de plataforma para Windows 7: No Windows 7 ou windows server 2008 R2 com a Atualização de Plataforma para Windows 7 instalada, OpenSharedResourceByName falha com E_NOTIMPL porque NTHANDLES são usados. Para obter mais informações sobre a Atualização de Plataforma para Windows 7, consulte Atualização de plataforma para Windows 7.

Comentários

O comportamento de OpenSharedResourceByName é semelhante ao comportamento do método ID3D11Device1::OpenSharedResource1 ; cada chamada para OpenSharedResourceByName para acessar um recurso cria um novo objeto de recurso. Em outras palavras, se você chamar OpenSharedResourceByName duas vezes e passar o mesmo nome de recurso para lpName, receberá dois objetos de recurso com ponteiros IUnknown diferentes.

Para compartilhar um recurso entre dois dispositivos

  1. Crie o recurso como compartilhado e especifique que ele usa identificadores NT definindo o sinalizador D3D11_RESOURCE_MISC_SHARED_NTHANDLE .
  2. Obtenha o REFIID, ou GUID, da interface para o recurso usando a macro __uuidof(). Por exemplo, __uuidof(ID3D11Texture2D) recupera o GUID da interface para uma textura 2D.
  3. Consulte o recurso para a interface IDXGIResource1 .
  4. Chame o método IDXGIResource1::CreateSharedHandle para obter o identificador exclusivo para o recurso. Nesta chamada IDXGIResource1::CreateSharedHandle , você deverá passar um nome para o recurso se quiser chamar o OpenSharedResourceByName posteriormente para acessar o recurso pelo nome.

Exemplos

ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;

pDevice->OpenSharedResourceByName(
          "MySurface", 
          DXGI_SHARED_RESOURCE_READ, 
          __uuidof(ID3D11Texture2D), 
         (void**)&pTexture2D);

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2012 e Atualização de Plataforma para Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho d3d11_1.h
Biblioteca D3D11.lib

Confira também

ID3D11Device1