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

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

Sintaxe

HRESULT OpenSharedResource1(
  [in]  HANDLE hResource,
  [in]  REFIID returnedInterface,
  [out] void   **ppResource
);

Parâmetros

[in] hResource

Um identificador para o recurso a ser aberto. Para obter mais informações sobre esse parâmetro, consulte Comentários.

[in] returnedInterface

O GUID (identificador global exclusivo) para a interface de recurso. Para obter mais informações sobre esse parâmetro, 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, o OpenSharedResource1 falha com E_NOTIMPL porque NTHANDLES são usados. Para obter mais informações sobre a Atualização de Plataforma para Windows 7, consulte Platform Update para Windows 7.

Comentários

O comportamento de OpenSharedResource1 é semelhante ao comportamento do método ID3D11Device::OpenSharedResource ; cada chamada para OpenSharedResource1 para acessar um recurso cria um novo objeto de recurso. Em outras palavras, se você chamar OpenSharedResource1 duas vezes e passar o mesmo identificador de recurso para hResource, 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.

Exemplos

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

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