DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP função de retorno de chamada (dispmprt.h)
O sistema operacional chama a função kmd (driver de exibição) do modo kernel (KMD) DxgkddiStopDeviceAndReleasePostDisplayOwnership função para solicitar que o KMD redefina o dispositivo de exibição e libere a propriedade do dispositivo POST (auto-teste de energia) atual.
Sintaxe
DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP DxgkddiStopDeviceAndReleasePostDisplayOwnership;
NTSTATUS DxgkddiStopDeviceAndReleasePostDisplayOwnership(
[in] PVOID MiniportDeviceContext,
[in] D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
[out] PDXGK_DISPLAY_INFORMATION DisplayInfo
)
{...}
Parâmetros
[in] MiniportDeviceContext
Um identificador para um bloco de contexto associado a um adaptador de exibição. A função
[in] TargetId
Um valor D3DDDI_VIDEO_PRESENT_TARGET_ID que especifica o identificador do destino do vídeo presente no adaptador de exibição ao qual o dispositivo de exibição está conectado. Esse identificador pode ser para o destino que foi deixado no estado VidPN (rede atual de vídeo presente) durante a chamada anterior para DxgkDdiCommitVidPn.
Para obter mais detalhes sobre o uso do parâmetro TargetId, consulte a seção Comentários.
[out] DisplayInfo
Um ponteiro para uma estrutura DXGK_DISPLAY_INFORMATION alocada pelo sistema operacional.
Valor de retorno
Retorna STATUS_SUCCESS se tiver êxito. Caso contrário, ele retornará um dos códigos de erro definidos em Ntstatus.h. Para obter mais informações, consulte a seção Comentários.
Observações
A partir do Windows 8 (WDDM 1.2), o sistema operacional chama essa função durante uma operação de parada de Plug and Play (PnP).
Para indicar ao sistema operacional que essa função tem suporte, o driver deve definir o nonVGASupport membro da estrutura DXGK_DRIVERCAPS quando sua função DxgkDdiQueryAdapterInfo for chamada.
Formatos de cor permitidos
O KMD deve relatar apenas um formato de cor de 32 bits. Portanto, o membro
- D3DDDIFMT_X8R8G8B8
- D3DDDIFMT_A8R8G8B8
Inicialização de destino de apresentação de vídeo
O KMD deve definir o membro DisplayInfo->TargetId para o identificador de destino da exibição que permanece ativa. Normalmente, esse identificador será o valor do parâmetro TargetId que o sistema operacional passou para o driver.
Da mesma forma, o KMD deve definir o membro DisplayInfo->AcpiId para o identificador ACPI da exibição que permanece ativo.
Etapas necessárias do KMD
O KMD deve seguir estas etapas quando sua função DxgkDdiStopDeviceAndReleasePostDisplayOwnership é chamada:
Interrompa o dispositivo de exibição associado ao destino presente do vídeo indicado pelo parâmetro TargetId, mas deve manter a exibição associada a esse destino ativada e visível.
Verifique a conectividade da exibição associada a esse destino. Se o destino não tiver uma exibição conectada, o KMD deverá concluir a chamada para essa função e retornar o código de erro STATUS_NOT_SUPPORTED.
Desabilite o sinal para todas as outras exibições conectadas ao adaptador de exibição. Se isso não for possível, o driver deverá tentar colocar uma imagem em branco em todas as outras exibições. Se isso não for possível, o driver deverá deixar a última imagem na tela inalterada.
Mantenha o modo de exibição atual no destino indicado e forneça esse modo de volta ao sistema operacional como parte dessa chamada de função.
Se o driver não conseguir manter o modo de exibição atual ou se o destino não fizer parte da topologia ativa, o driver deverá selecionar um destino ativo alternativo e tentar manter a resolução atual desse destino. Se isso não for possível, o driver deverá tentar definir a exibição para sua resolução nativa ou para um modo de alta resolução. Nesse caso, a resolução de exibição deve ser definida como pelo menos 800 x 600 pixels em formatos de cor D3DDDIFMT_R8G8B8 (24 bits por pixel) ou D3DDDIFMT_X8R8G8B8 (32 bpp).
Se nenhum destino estiver ativo, o driver deverá tentar habilitar um destino, preferencialmente o painel interno, se ele estiver disponível.
Se possível, o driver deve limpar o buffer de quadro atual e desabilitar o cursor de hardware e todas as sobreposições de exibição.
Se possível, o driver deve definir a rampa gama do dispositivo como seus valores padrão.
O driver deve definir o buffer de quadro atual para estar em um modo linear. O driver faz isso usando o intervalo de swizzle padrão ou desabilitando o modo swizzle.
O driver deve tornar o buffer de quadro atual acessível à CPU mapeando o buffer de quadro atual linearmente para o espaço de endereço da CPU.
O driver deve garantir que a visibilidade do destino indicado esteja definida como "habilitada".
Depois que o KMD executar essas etapas, ele deverá retornar as configurações de exibição atuais para o dispositivo. O driver retorna essas informações definindo os membros da estrutura
Depois que o dispositivo for interrompido, essas informações de exibição poderão ser usadas pelo driver de exibição genérico do Windows para gerenciar o dispositivo de exibição.
Outros requisitos
Em sistemas que dão suporte à UEFI (Unified Extensible Firmware Interface), não existe um BIOS (sistema de entrada/saída) básico da VGA. Para dar suporte a operações de parada PnP nesses sistemas, o WDDM 1.2 e posterior fornece suporte para o sistema operacional redefinir o dispositivo POST e obter suas informações de exibição durante uma operação de parada PnP. O sistema operacional faz isso chamando a função DxgkDdiStopDeviceAndReleasePostDisplayOwnership do KMD.
Uma operação de parada PnP pode ocorrer em resposta a solicitações por processos como o Gerenciador de Dispositivos ou durante um processo de atualização do driver.
A partir do Windows 8, o sistema operacional chama a função DxgkDdiStopDeviceAndReleasePostDisplayOwner ship do driver apenas no dispositivo POST durante uma operação de parada PnP.
É opcional para KMD chamar DxgkCbAcquirePostDisplayOwnership. No entanto, o sistema operacional ainda pode chamar a função DxgkDdiStopDeviceAndReleasePostDisplayOwnership do KMD, independentemente de o driver ter feito uma chamada anterior para DxgkCbAcquirePostDisplayOwnership.
Se o driver concluir com êxito uma chamada para essa função, o sistema operacional não chamará a função DxgkDdiStopDevice do KMD. Se o driver não concluir uma chamada para essa função, o sistema operacional chamará DxgkDdiStopDevicee o comportamento do dispositivo será o mesmo que no Windows 7.
Em sistemas somente UEFI, se o KMD falhar em uma chamada para essa função, uma tela preta será exibida e o driver IHV não estará instalado. A solução alternativa para esse cenário é que o usuário reinicialize o computador.
Para obter mais informações sobre como essa função é usada em cenários PnP, consulte Plug and Play (PnP) no WDDM 1.2 e posterior.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 8 (WDDM 1.2) |
servidor com suporte mínimo | Windows Server 2012 |
da Plataforma de Destino |
Área de trabalho |
cabeçalho | dispmprt.h |
IRQL | PASSIVE_LEVEL |