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
- Crie o recurso como compartilhado e especifique que ele usa identificadores NT, definindo o sinalizador D3D11_RESOURCE_MISC_SHARED_NTHANDLE .
- 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.
- Consulte o recurso para a interface IDXGIResource1 .
- 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 |