Método IDXGIOutput5::D uplicateOutput1 (dxgi1_5.h)
Permite especificar uma lista de formatos com suporte para superfícies de tela inteira que podem ser retornados pelo objeto IDXGIOutputDuplication .
Sintaxe
HRESULT DuplicateOutput1(
[in] IUnknown *pDevice,
UINT Flags,
[in] UINT SupportedFormatsCount,
[in] const DXGI_FORMAT *pSupportedFormats,
[out] IDXGIOutputDuplication **ppOutputDuplication
);
Parâmetros
[in] pDevice
Tipo: IUnknown*
Um ponteiro para a interface do dispositivo Direct3D que você pode usar para processar a imagem da área de trabalho. Esse dispositivo deve ser criado do adaptador ao qual a saída está conectada.
Flags
Tipo: UINT
Um campo de DXGI_OUTDUPL_FLAG valores de enumeração que descrevem o tipo de superfície de captura a ser criada.
[in] SupportedFormatsCount
Tipo: UINT
Especifica o número de formatos com suporte.
[in] pSupportedFormats
Tipo: const DXGI_FORMAT*
Especifica uma matriz de comprimento SupportedFormatsCount de entradas de DXGI_FORMAT .
[out] ppOutputDuplication
Tipo: IDXGIOutputDuplication**
Um ponteiro para uma variável que recebe a nova interface IDXGIOutputDuplication .
Retornar valor
Tipo: HRESULT
- S_OK se DuplicateOutput1 tiver criado com êxito a interface de duplicação da área de trabalho.
- E_INVALIDARG por um dos seguintes motivos:
- O dispositivo especificado (pDevice) é inválido, não foi criado no adaptador correto ou não foi criado a partir de IDXGIFactory1 (ou uma versão posterior de uma interface de fábrica DXGI que herda de IDXGIFactory1).
- O aplicativo de chamada já está duplicando essa saída da área de trabalho.
- E_ACCESSDENIED se o aplicativo não tiver privilégio de acesso à imagem da área de trabalho atual. Por exemplo, apenas um aplicativo executado em LOCAL_SYSTEM pode acessar a área de trabalho segura.
-
DXGI_ERROR_UNSUPPORTED se a interface IDXGIOutputDuplication criada não oferecer suporte ao modo de área de trabalho ou cenário atual. Por exemplo, não há suporte para modos de área de trabalho 8bpp e não DWM.
Se DuplicateOutput1 falhar com DXGI_ERROR_UNSUPPORTED, o aplicativo poderá aguardar a notificação do sistema de alterações de modo e comutadores de área de trabalho e, em seguida, chamar DuplicateOutput1 novamente depois que essa notificação ocorrer. Para obter mais informações, consulte a opção de área de trabalho (EVENT_SYSTEM_DESKTOPSWITCH) e a notificação de alteração de modo (WM_DISPLAYCHANGE).
- DXGI_ERROR_NOT_CURRENTLY_AVAILABLE se o DXGI atingiu o limite no número máximo de aplicativos de duplicação simultânea (padrão de quatro). Portanto, o aplicativo de chamada não pode criar nenhuma interface de duplicação da área de trabalho até que os outros aplicativos sejam fechados.
- DXGI_ERROR_SESSION_DISCONNECTED se DuplicateOutput1 falhou porque a sessão está desconectada no momento.
- Outros códigos de erro são descritos no tópico DXGI_ERROR .
Comentários
Esse método permite receber diretamente o formato de buffer de fundo original usado por um aplicativo de tela inteira em execução. Para comparação, usar a função DuplicateOutput original sempre converte a superfície de tela inteira em um formato BGRA de 32 bits. Nos casos em que o aplicativo de tela inteira atual está usando um formato de buffer diferente, uma conversão em BGRA de 32 bits incorre em uma penalidade de desempenho. Além do benefício de desempenho de poder ignorar a conversão de formato, usar DuplicateOutput1 também permite receber a gama completa de cores em casos em que um formato de alta cor (como R10G10B10A2) está sendo apresentado.
A matriz pSupportedFormats deve conter apenas formatos de verificação de exibição. Consulte Formatar suporte para hardware de nível de recurso 11.0 direct3D para obter os formatos de verificação necessários em cada nível de recurso. Se o formato de buffer de tela inteira atual não estiver contido na matriz pSupportedFormats , o DXGI escolherá um dos formatos fornecidos e converterá o buffer de tela inteira nesse formato antes de retornar de IDXGIOutputDuplication::AcquireNextFrame. A lista de formatos com suporte deve sempre conter DXGI_FORMAT_B8G8R8A8_UNORM, pois esse é o formato mais comum para a área de trabalho.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | dxgi1_5.h |
Biblioteca | Dxgi.lib |
DLL | Dxgi.dll |