Compartir a través de


DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP función de devolución de llamada (dispmprt.h)

Lo llama el sistema operativo para solicitar al controlador de miniporte de pantalla restablecer el dispositivo de pantalla y liberar la propiedad del dispositivo de prueba automática (POST) actual.

A partir de Windows 8, el sistema operativo llama a esta función durante una operación de detención de Plug and Play (PnP).

Para indicar al sistema operativo que se admite esta función, el controlador debe establecer el miembro NonVGASupport de la estructura de DXGK_DRIVERCAPS cuando se llama a la función DxgkDdiQueryAdapterInfo .

Sintaxis

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

Identificador de un bloque de contexto asociado a un adaptador de pantalla. La función DxgkDdiAddDevice del controlador de miniporte de pantalla proporcionó anteriormente este identificador al subsistema del kernel de gráficos de Microsoft DirectX.

[in] TargetId

Valor de D3DDDI_VIDEO_PRESENT_TARGET_ID que especifica el identificador del destino de vídeo presente en el adaptador de pantalla al que está conectado el dispositivo de visualización. Este identificador podría ser para el destino que se dejó en el estado actual de la red de presentación de vídeo (VidPN) durante la llamada anterior a DxgkDdiCommitVidPn.

Para obtener más información sobre el uso del parámetro TargetId , consulte la sección Comentarios siguiente.

[out] DisplayInfo

Puntero a una estructura DXGK_DISPLAY_INFORMATION asignada por el sistema operativo.

Valor devuelto

Devuelve STATUS_SUCCESS si se realiza correctamente. De lo contrario, devuelve uno de los códigos de error definidos en Ntstatus.h. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

Comentarios

Formatos de color permitidos

El controlador de minipuerto de pantalla solo debe notificar un formato de color de 32 bits. Por lo tanto, el miembro DisplayInfo->ColorFormat debe incluir solo uno de los dos formatos siguientes:
  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

Inicialización de destino de presentación de vídeo

El controlador de minipuerto de pantalla debe establecer el miembro DisplayInfo->TargetId en el identificador de destino de la pantalla que permanece activa. Normalmente, este identificador será el valor del parámetro TargetId que el sistema operativo pasó al controlador.

Del mismo modo, el controlador de minipuerto de pantalla debe establecer el miembro DisplayInfo-AcpiId> en el identificador ACPI de la pantalla que permanece activa.

Pasos necesarios para mostrar el controlador de minipuerto

El controlador de minipuerto de pantalla debe seguir estos pasos cuando se llama a su función DxgkDdiStopDeviceAndReleasePostDisplayOwnership :
  1. El controlador debe detener el dispositivo de visualización asociado al destino de vídeo presente indicado por el parámetro TargetId , pero debe mantener la pantalla asociada a este destino encendido y visible.
  2. El controlador debe comprobar la conectividad de la pantalla asociada a este destino. Si el destino no tiene una pantalla conectada, el controlador debe completar la llamada a esta función y devolver el código de error STATUS_NOT_SUPPORTED .
  3. El controlador debe deshabilitar la señal en todas las demás pantallas conectadas al adaptador de pantalla. Si esto no es posible, el controlador debe intentar colocar una imagen en blanco en todas las demás pantallas. Si esto no es posible, el controlador debe dejar la última imagen en la pantalla sin cambios.
  4. El controlador debe mantener el modo de visualización actual en el destino indicado y devolver este modo al sistema operativo como parte de esta llamada de función.
  5. Si el controlador no puede mantener el modo de visualización actual o si el destino no forma parte de la topología activa, el controlador debe seleccionar un destino activo alternativo e intentar mantener la resolución actual de ese destino. Si no es posible, el controlador debe intentar establecer la pantalla en su resolución nativa o en un modo de alta resolución. En este caso, la resolución de pantalla debe establecerse en al menos 800 x 600 píxeles en D3DDDIFMT_R8G8B8 (24 bits por píxel) o D3DDDIFMT_X8R8G8B8 (32 bpp) formatos de color de la enumeración D3DDDIFORMAT .
  6. Si no hay ningún destino activo, el controlador debe intentar habilitar un destino, preferiblemente el panel interno, si está disponible.
  7. Si es posible, el controlador debe borrar el búfer de fotogramas actual y deshabilitar el cursor de hardware y todas las superposiciones de visualización.
  8. Si es posible, el controlador debe establecer la rampa gamma del dispositivo en sus valores predeterminados.
  9. El controlador debe establecer el búfer de fotogramas actual en un modo lineal. El controlador lo hace mediante el intervalo de swizzle predeterminado o deshabilitando el modo swizzle.
  10. El controlador debe hacer que el búfer de fotogramas actual sea accesible para la CPU mediante la asignación lineal del búfer de fotogramas actual al espacio de direcciones de la CPU.
  11. El controlador debe asegurarse de que la visibilidad del destino indicado esté establecida en "habilitado".
Después de que el controlador de miniporte de pantalla realice estos pasos, debe devolver la configuración de visualización actual para el dispositivo. El controlador devuelve esta información estableciendo los miembros de la estructura DXGK_DISPLAY_INFORMATION a la que hace referencia el parámetro DisplayInfo .
Nota Una vez detenido el dispositivo, es posible que el controlador de pantalla genérico de Windows use esta información para mostrar para administrar el dispositivo de visualización.
 

Otros requisitos

En los sistemas que admiten unified Extensible Firmware Interface (UEFI), no existe un sistema de entrada/salida (BIOS) vga básico. Para admitir las operaciones de detención de PnP en estos sistemas, Windows Display Driver Model (WDDM) 1.2 y versiones posteriores proporciona compatibilidad con el sistema operativo para restablecer el dispositivo POST y obtener su información de visualización durante una operación de detención de PnP. El sistema operativo lo hace llamando a la función DxgkDdiStopDeviceAndReleasePostDisplayOwnership del controlador display.

Una operación de detención de PnP puede producirse en respuesta a solicitudes por procesos como el Administrador de dispositivos o durante un proceso de actualización de controladores.

A partir de Windows 8, el sistema operativo llama a la función DxgkDdiStopDeviceAndReleasePostDisplayOwnership del controlador durante una operación de detención de PnP.

Nota Es opcional que el controlador de miniporte de pantalla llame a DxgkCbAcquirePostDisplayOwnership. Sin embargo, el sistema operativo podría seguir llamando a la función DxgkDdiStopDeviceAndReleasePostDisplayOwnership del controlador del dispositivo si el controlador no llamó previamente a DxgkCbAcquirePostDisplayOwnership.
 
Si el controlador completa correctamente una llamada a esta función, el sistema operativo no llamará a la función DxgkDdiStopDevice . Si el controlador no puede completar una llamada a esta función, el sistema operativo llamará a la función DxgkDdiStopDevice y el comportamiento del dispositivo será el mismo que en Windows 7.

En los sistemas solo UEFI, si el controlador de miniporte de pantalla produce un error en una llamada a esta función, se muestra una pantalla negra y el controlador IHV no está instalado. La solución alternativa a este escenario es que el usuario reinicie el equipo.

Para obtener más información sobre cómo se usa esta función en escenarios PnP, vea Plug and Play (PnP) en WDDM 1.2 y versiones posteriores.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8
Servidor mínimo compatible Windows Server 2012
Plataforma de destino Escritorio
Encabezado dispmprt.h
IRQL PASSIVE_LEVEL

Consulte también

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DXGK_DRIVERCAPS

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryAdapterInfo

DxgkDdiStartDevice

DxgkDdiStopDevice