DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP função de retorno de chamada (dispmprt.h)

Chamado pelo sistema operacional para solicitar que o driver de miniporta de exibição redefina o dispositivo de exibição e libere a propriedade do dispositivo POST (power-on self-test) atual.

Começando com Windows 8, 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 membro NonVGASupport da estrutura DXGK_DRIVERCAPS quando a função DxgkDdiQueryAdapterInfo for chamada.

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 driver de miniporta de vídeo forneceu anteriormente esse identificador para o subsistema de kernel de elementos gráficos do Microsoft DirectX.

[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 atual da VidPN (rede presente em vídeo) durante a chamada anterior para DxgkDdiCommitVidPn.

Para obter mais detalhes sobre o uso do parâmetro TargetId , consulte a seção Comentários a seguir.

[out] DisplayInfo

Um ponteiro para uma estrutura DXGK_DISPLAY_INFORMATION alocada pelo sistema operacional.

Retornar valor

Retorna STATUS_SUCCESS se for bem-sucedido. 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 a seguir.

Comentários

Formatos de cor permitidos

O driver de miniporta de exibição deve relatar apenas um formato de cor de 32 bits. Portanto, o membroColorFormatDisplayInfo-> deve incluir apenas um dos dois formatos a seguir:
  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

Inicialização de destino de apresentação de vídeo

O driver de miniporta de exibição deve definir o membro DisplayInfo->TargetId como 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 driver de miniporto de exibição deve definir o membro DisplayInfo-AcpiId> como o identificador ACPI da exibição que permanece ativo.

Etapas necessárias para exibir o driver de miniporta

O driver de miniporta de exibição deve seguir estas etapas quando sua função DxgkDdiStopDeviceAndReleasePostDisplayOwnership for chamada:
  1. O driver deve interromper o dispositivo de exibição associado ao destino de vídeo presente indicado pelo parâmetro TargetId , mas deve manter a exibição associada a esse destino ativada e visível.
  2. O driver deve marcar a conectividade da exibição associada a esse destino. Se o destino não tiver uma exibição conectada, o driver deverá concluir a chamada para essa função e retornar o código de erro STATUS_NOT_SUPPORTED.
  3. O driver deve desabilitar o sinal para todos os outros monitores conectados ao adaptador de vídeo. 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. O driver deve manter o modo de exibição atual no destino indicado e fornecer esse modo de volta ao sistema operacional como parte dessa chamada de função.
  5. Se o driver não puder 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) da enumeração D3DDDIFORMAT .
  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 com 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 para a 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 driver de miniporta de exibição 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 .
Nota Depois que o dispositivo for interrompido, essas informações de exibição poderão ser usadas pelo driver de vídeo 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 básico de entrada/saída) VGA. Para dar suporte a operações de parada PnP nesses sistemas, o WDDM (Modelo de Driver de Vídeo do Windows) 1.2 e posterior fornece suporte para que o sistema operacional redefina o dispositivo POST e obtenha suas informações de exibição durante uma operação de parada PnP. O sistema operacional faz isso chamando a função DxgkDdiStopDeviceAndReleasePostDisplayOwnership do driver de vídeo.

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

Começando com Windows 8, o sistema operacional chama a função DxgkDdiStopDeviceAndReleasePostDisplayOwnership do driver somente no dispositivo POST durante uma operação de parada PnP.

Nota É opcional para o driver de miniporto de exibição chamar DxgkCbAcquirePostDisplayOwnership. No entanto, o sistema operacional ainda poderá chamar a função DxgkDdiStopDeviceAndReleasePostDisplayOwnership do driver do dispositivo se o driver não tiver chamado DxgkCbAcquirePostDisplayOwnership anteriormente.
 
Se o driver concluir com êxito uma chamada para essa função, o sistema operacional não chamará a função DxgkDdiStopDevice . Se o driver não conseguir concluir uma chamada para essa função, o sistema operacional chamará a função DxgkDdiStopDevice e o comportamento do dispositivo será o mesmo que no Windows 7.

Em sistemas somente UEFI, se o driver de miniporta de exibição falhar em uma chamada para essa função, uma tela preta será exibida e o driver IHV não será instalado. A solução alternativa para esse cenário é que o usuário reinicie 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
Cliente mínimo com suporte Windows 8
Servidor mínimo com suporte Windows Server 2012
Plataforma de Destino Área de Trabalho
Cabeçalho dispmprt.h
IRQL PASSIVE_LEVEL

Confira também

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DXGK_DRIVERCAPS

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryAdapterInfo

DxgkDdiStartDevice

DxgkDdiStopDevice