Compartilhar via


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 DxgkDdiAddDevice do KMD anteriormente forneceu esse identificador para o subsistema de kernel de elementos gráficos DirectX (Dxgkrnl).

[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 DisplayInfo-ColorFormat deve incluir apenas um dos dois seguintes formatos de D3DDDIFORMAT:

  • 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:

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

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

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

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

  5. 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).

  6. Se nenhum destino estiver ativo, o driver deverá tentar habilitar um destino, preferencialmente o painel interno, se ele estiver disponível.

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

  8. Se possível, o driver deve definir a rampa gama do dispositivo como seus valores padrão.

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

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

  11. 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 DXGK_DISPLAY_INFORMATION referenciada pelo parâmetro DisplayInfo.

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

Consulte também

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DXGK_DRIVERCAPS

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryAdapterInfo

DxgkDdiStartDevice

DxgkDdiStopDevice