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.
[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
- 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. 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 |