Compartir a través de


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

El sistema operativo llama al controlador de pantalla en modo kernel (KMD) DxgkddiStopDeviceAndReleasePostDisplayOwnership función para solicitar que KMD restablezca el dispositivo de visualización y libere la propiedad del dispositivo de prueba automática (POST) actual.

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 de KMD previamente proporcionó este identificador al subsistema del kernel de gráficos directX (Dxgkrnl).

[in] TargetId

Valor de D3DDDI_VIDEO_PRESENT_TARGET_ID que especifica el identificador del destino presente de vídeo 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.

[out] DisplayInfo

Puntero a una estructura de 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.

Observaciones

A partir de Windows 8 (WDDM 1.2), 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 su función DxgkDdiQueryAdapterInfo.

Formatos de color permitidos

El KMD 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 D3DDDIFORMAT siguientes:

  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

Inicialización de destino presente en vídeo

El KMD 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 KMD debe establecer el miembro DisplayInfo->AcpiId en el identificador ACPI de la pantalla que permanece activa.

Pasos necesarios para el KMD

El KMD debe seguir estos pasos cuando se llama a su función DxgkDdiStopDeviceAndReleasePostDisplayOwnership:

  1. Detenga el dispositivo de visualización asociado al destino de presentación de vídeo indicado por el parámetro TargetId, pero debe mantener la pantalla asociada a este destino encendido y visible.

  2. Compruebe la conectividad de la pantalla asociada a este destino. Si el destino no tiene una pantalla conectada, el KMD debe completar la llamada a esta función y devolver el código de error STATUS_NOT_SUPPORTED.

  3. Deshabilite 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. Mantenga el modo de visualización actual en el destino indicado y vuelva a proporcionar 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 formatos de color de D3DDDIFMT_R8G8B8 (24 bits por píxel) o D3DDDIFMT_X8R8G8B8 (32 bpp).

  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 para que esté en modo lineal. El controlador lo hace mediante el intervalo 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 CPU.

  11. El controlador debe asegurarse de que la visibilidad del destino indicado esté establecida en "habilitado".

Una vez que el KMD realice estos pasos, debe devolver la configuración de visualización actual del 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.

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) básico VGA. Para admitir operaciones de detención de PnP en estos sistemas, 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 KMD.

Una operación de detención de PnP puede producirse en respuesta a las 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 dxgkDdiStopDeviceAndReleasePostDisplayOwnership función solo en el dispositivo POST durante una operación de detención de PnP.

Es opcional que KMD llame a DxgkCbAcquirePostDisplayOwnership. Sin embargo, el sistema operativo podría seguir llamando a la función DxgkDdiStopDeviceAndReleasePostDisplayOwnership independientemente de si el controlador realizó una llamada anterior a DxgkCbAcquirePostDisplayOwnership.

Si el controlador completa correctamente una llamada a esta función, el sistema operativo no llamará a la función DxgkDdiStopDevice de KMD. Si el controlador no puede completar una llamada a esta función, el sistema operativo llamará a DxgkDdiStopDevicey el comportamiento del dispositivo será el mismo que en Windows 7.

En los sistemas solo UEFI, si el KMD 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 de PnP, consulte Plug and Play (PnP) en WDDM 1.2 y versiones posteriores.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 8 (WDDM 1.2)
servidor mínimo admitido Windows Server 2012
de la plataforma de destino de Escritorio
encabezado de dispmprt.h
irQL PASSIVE_LEVEL

Consulte también

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DXGK_DRIVERCAPS

DxgkCbAcquirePostDisplayOwnership

dxgkDdiAddDevice

dxgkDdiQueryAdapterInfo

dxgkDdiStartDevice

dxgkDdiStopDevice