Articulo de referencia

Gestor de ventanas de escritorio

As of [[Windows 8]], where DWM is a required component that must be running at all times, it is no longer a service. "},"operating system":{"wt":"[[Microsoft Windows]]"}},"i":0}...

El Administrador de ventanas de escritorio ( DWM , anteriormente Motor de composición de escritorio o DCE en compilaciones de Windows Longhorn anteriores al reinicio ) es el administrador de ventanas de composición en Microsoft Windows desde Windows Vista [ 1 ] que permite el uso de la aceleración de hardware para renderizar la interfaz gráfica de usuario de Windows.

Originalmente se creó para habilitar partes de la nueva experiencia de usuario " Windows Aero ", que permitía efectos como transparencia, cambio de ventanas 3D y más. También se incluye con Windows Server 2008 , pero requiere que se instale la función "Experiencia de escritorio" y controladores de gráficos compatibles. [ 2 ]

Arquitectura

El Administrador de Ventanas de Escritorio (DWM) es un administrador de ventanas de composición , lo que significa que cada programa tiene un búfer donde escribe datos; luego, el DWM combina el búfer de cada programa para formar una imagen final. En comparación, el administrador de ventanas de apilamiento de Windows XP y versiones anteriores (y también de Windows Vista y Windows 7 con Windows Aero desactivado) consta de un único búfer de visualización al que escriben todos los programas.

DWM funciona de diferentes maneras según el sistema operativo (Windows 7 o Windows Vista) y la versión de los controladores gráficos que utiliza ( WDDM 1.0 o 1.1). En Windows 7 y con los controladores WDDM 1.1, DWM solo escribe el búfer del programa en la RAM de vídeo, incluso si se trata de un programa de interfaz de dispositivo gráfico (GDI). Esto se debe a que Windows 7 admite aceleración de hardware (limitada) para GDI [ 3 ] y, al hacerlo, no necesita mantener una copia del búfer en la RAM del sistema para que la CPU pueda escribir en él.

Debido a que el compositor tiene acceso a los gráficos de todas las aplicaciones, permite fácilmente efectos visuales que combinan elementos visuales de múltiples aplicaciones, como la transparencia. DWM utiliza DirectX para realizar la función de composición y renderizado en la GPU, liberando a la CPU de la tarea de gestionar el renderizado desde los búferes fuera de pantalla a la pantalla. Sin embargo, esto no afecta a las aplicaciones que pintan en los búferes fuera de pantalla; dependiendo de las tecnologías utilizadas para ello, esto aún podría estar limitado por la CPU. Las técnicas de renderizado independientes de DWM, como GDI, se redirigen a los búferes renderizando la interfaz de usuario (UI) como mapas de bits . Las tecnologías de renderizado compatibles con DWM, como WPF, hacen que las estructuras de datos internas estén disponibles directamente en un formato compatible con DWM. El contenido de la ventana en los búferes se convierte entonces en texturas DirectX.

El escritorio en sí es una superficie Direct3D de pantalla completa , donde las ventanas se representan como una malla compuesta por dos triángulos adyacentes (e invertidos mutuamente), que se transforman para representar un rectángulo 2D. La textura, que representa el borde de la interfaz de usuario, se aplica a estos rectángulos. Las transiciones de ventana se implementan como transformaciones de las mallas, utilizando programas de sombreado . [ 4 ] Con Windows Vista, las transiciones se limitan al conjunto de sombreadores integrados que implementan las transformaciones. Greg Schechter, desarrollador de Microsoft, ha sugerido que esto podría abrirse para que desarrolladores y usuarios puedan agregar sus propios efectos en una versión futura. [ 5 ] DWM solo asigna el objeto principal del escritorio como una superficie 3D; otros objetos del escritorio, incluidos los escritorios virtuales y el escritorio seguro utilizado por el Control de cuentas de usuario, no lo son. [ 6 ]

Aero Flip demuestra múltiples características de DWM: transformación 3D de planos 2D, escalado y traslado de los planos a una posición diferente, incrustación de vistas dinámicas de una aplicación en otra y uso de programas de sombreado personalizados.
La función Aero Flip se utiliza en Windows 7.

Debido a que todas las aplicaciones renderizan en un búfer fuera de pantalla, también pueden leerse desde el búfer incrustado en otras aplicaciones. Dado que el búfer fuera de pantalla es actualizado constantemente por la aplicación, la representación incrustada será una representación dinámica de la ventana de la aplicación y no una representación estática. Así es como funcionan las vistas previas en miniatura en vivo y Windows Flip en Windows Vista y Windows 7. DWM expone una API pública que permite a las aplicaciones acceder a estas representaciones en miniatura. [ 7 ] El tamaño de la miniatura no es fijo; las aplicaciones pueden solicitar las miniaturas en cualquier tamaño (más pequeñas que la ventana original, del mismo tamaño o incluso más grandes) y DWM las escalará correctamente antes de devolverlas. Aero Flip no utiliza las API públicas de miniaturas, ya que no permiten el acceso directo a las texturas de Direct3D. [ 8 ] En cambio, Aero Flip se implementa directamente en el motor DWM.

El Administrador de Ventanas de Escritorio (DWM) utiliza Media Integration Layer (MIL), el compositor no administrado que comparte con Windows Presentation Foundation , para representar las ventanas como nodos de composición en un árbol de composición . El árbol de composición representa el escritorio y todas las ventanas alojadas en él, que luego son renderizadas por MIL desde el fondo de la escena hacia el frente. [ 9 ] Dado que todas las ventanas contribuyen a la imagen final, el color de un píxel resultante puede ser determinado por más de una ventana. Esto se utiliza para implementar efectos como la transparencia por píxel. DWM permite invocar sombreadores personalizados para controlar cómo se utilizan los píxeles de múltiples aplicaciones para crear el píxel mostrado. DWM incluye programas Pixel Shader 2.0 integrados que calculan el color de un píxel en una ventana promediando el color del píxel determinado por la ventana que está detrás y sus píxeles vecinos. Estos sombreadores son utilizados por DWM para lograr el efecto de desenfoque en los bordes de las ventanas administradas por DWM y, opcionalmente, para las áreas donde la aplicación lo solicita. [ 4 ]

Dado que MIL proporciona un sistema gráfico de modo retenido mediante el almacenamiento en caché de los árboles de composición, la tarea de repintar y actualizar la pantalla cuando se mueven las ventanas la gestionan DWM y MIL, liberando a la aplicación de esa responsabilidad. Los datos de fondo ya están en el árbol de composición y en los búferes fuera de pantalla y se utilizan directamente para renderizar el fondo. En los sistemas operativos Windows anteriores a Vista, era necesario solicitar a las aplicaciones en segundo plano que se volvieran a renderizar enviándoles el WM_PAINTmensaje. [ 7 ] DWM utiliza gráficos de doble búfer para evitar el parpadeo y el desgarro al mover ventanas. [ 4 ] [ 7 ] El motor de composición utiliza optimizaciones como el culling para mejorar el rendimiento, además de no volver a dibujar las áreas que no han cambiado. [ 9 ] Debido a que el compositor es compatible con múltiples monitores, DWM también lo admite de forma nativa. [ 9 ]

Durante el uso de aplicaciones a pantalla completa, como los juegos, DWM no realiza la composición de ventanas y, por lo tanto, el rendimiento no disminuirá de forma apreciable.

En Windows 8 y Windows Server 2012 , DWM se usa en todo momento y no se puede deshabilitar, debido a la nueva "experiencia de pantalla de inicio" implementada. Dado que el proceso DWM generalmente debe ejecutarse en todo momento en Windows 8, los usuarios que experimentan un problema con el proceso ven que el uso de memoria disminuye después de reiniciar el sistema. Este suele ser el primer paso en una larga lista de tareas de solución de problemas que pueden ayudar. Es posible evitar que DWM se reinicie temporalmente en Windows 8, lo que hace que el escritorio se vuelva negro, la barra de tareas gris y deje de funcionar la pantalla de inicio/aplicaciones modernas, pero las aplicaciones de escritorio seguirán funcionando y apareciendo como el tema Básico de Windows 7 y Vista, basado en el renderizador de búfer único utilizado por XP. También usan la barra de título centrada de Windows 8, visible dentro del Entorno de preinstalación de Windows . Iniciar Windows sin DWM no funcionará porque la pantalla de bloqueo predeterminada requiere DWM a diferencia de la pantalla de bloqueo alternativa que aparece como un programa de interfaz de línea de comandos cuando Windows.UI.Logon.dll no está presente en versiones de Windows como la 1507 y posteriores, por lo que solo se puede hacer sobre la marcha y no tiene ningún propósito práctico. A partir de Windows 10, deshabilitar DWM de esta manera hará que todo el motor de composición falle, incluso las aplicaciones de escritorio tradicionales, debido a las implementaciones de Aplicaciones Universales en la barra de tareas y el nuevo menú de inicio. Windows aún puede ser parcialmente utilizable sin la presencia de DWM, pero requiere que Sihost.exe no esté presente porque depende de DWM. La mayoría de las aplicaciones en Windows 11 requieren DWM para renderizar elementos de la interfaz de usuario y transparencia, el nuevo administrador de tareas de Windows 11 requiere dwm para renderizar menús a diferencia de la versión alternativa -d. A diferencia de sus predecesores, Windows 8 admite adaptadores de pantalla básicos a través de la Plataforma de rasterización avanzada de Windows (WARP), que utiliza renderizado por software y la CPU para renderizar la interfaz en lugar de la tarjeta gráfica. Esto permite que DWM funcione sin controladores compatibles, pero no con el mismo nivel de rendimiento que con una tarjeta gráfica normal. DWM en Windows 8 también añade compatibilidad con 3D estereoscópico . [ 10 ]

Redirección

Para las técnicas de renderizado que no son compatibles con DWM, la salida debe redirigirse a los búferes de DWM. En Windows, se puede usar GDI o DirectX para el renderizado. Para que ambas funcionen con DWM, se proporcionan técnicas de redirección.

Con GDI, la técnica de renderizado de interfaz de usuario más utilizada en Microsoft Windows , cada ventana de aplicación recibe una notificación cuando aparece, total o parcialmente, y la aplicación se encarga de renderizarla. Sin DWM, el renderizado rasteriza la interfaz de usuario en un búfer en la memoria de vídeo, desde donde se renderiza en la pantalla. Con DWM, las llamadas a GDI se redirigen para usar el controlador de pantalla Canonical (cdd.dll), un renderizador de software. [ 11 ] Se asigna un búfer del tamaño de la ventana en la memoria del sistema y CDD.DLL escribe en este búfer en lugar de en la memoria de vídeo. Se asigna otro búfer en la memoria de vídeo para representar la superficie de DirectX, que se usa como textura para las mallas de la ventana. El búfer de la memoria del sistema se convierte a la superficie de DirectX por separado y se mantiene sincronizado. Este proceso indirecto es necesario porque GDI no puede generar directamente en formato de píxeles de DirectX. El compositor lee la superficie y la compone en el escritorio en la memoria de vídeo. Ni la escritura de la salida de GDI en la memoria del sistema ni la conversión a la superficie de DirectX están aceleradas por hardware. Cuando una ventana GDI se minimiza, se vuelve invisible o se muestra en el mismo monitor que una aplicación DirectX a pantalla completa, debido a una limitación de GDI, la aplicación ya no recibe el búfer de mapa de bits de GDI al solicitar un contexto de dispositivo durante el dibujo o la actualización (esto a veces se observa cuando una operación GDI que copia de una ventana a otra genera regiones negras o vacías en lugar del contenido esperado de la ventana). Por lo tanto, DWM utiliza el último mapa de bits renderizado en el búfer antes de que la aplicación se minimizara. [ 12 ]

A partir de Windows 7, el controlador de pantalla de Canonical ya no renderiza en la copia de memoria del sistema cuando hay presente un controlador de vídeo compatible con WDDM 1.1/DXGI 1.1.

Para aplicaciones que usan DirectX para escribir en una superficie 3D, la implementación de DirectX en Windows Vista usa WDDM para compartir la superficie con DWM. DWM usa la superficie directamente y la asigna a las mallas de la ventana. Para aplicaciones de Windows Presentation Foundation (WPF) (que son aplicaciones DirectX), el compositor renderiza en dichas superficies compartidas que luego se componen en el escritorio final. [ 12 ] Las aplicaciones pueden mezclar cualquiera de las técnicas de renderizado en varias ventanas secundarias, siempre que no se usen GDI y DirectX para renderizar la misma ventana. En ese caso, no se puede garantizar el orden entre el renderizado de DirectX y GDI, y por lo tanto no se puede garantizar que el mapa de bits GDI de la memoria del sistema se haya traducido a la superficie de la memoria de video. Esto significa que la composición final puede no contener los elementos renderizados con GDI. [ 12 ] Para evitar esto, DWM se desactiva temporalmente mientras se ejecuta una aplicación que mezcla GDI y DirectX en la misma ventana.

Requisitos de hardware

En Windows Vista, DWM requiere hardware físico o virtual compatible: [ 13 ]

En Windows 7, el Administrador de ventanas de escritorio se ha rediseñado para usar Direct3D 10.1 , pero los requisitos de hardware siguen siendo los mismos que en Windows Vista; el hardware Direct3D 9 es compatible con la capa " 10 Nivel 9 " introducida en el entorno de ejecución de Direct3D 11. En Windows 8, DWM requiere que la GPU sea compatible con Direct3D 11 o Direct3D 10 ; si la GPU no cumple con los requisitos de Direct3D 10 , se utilizará WARP . [ 10 ]

El software de virtualización de hardware que emula el hardware necesario para DWM incluye VirtualBox 4.1 y versiones posteriores, VMware Fusion 3.0 y versiones posteriores, y VMware Workstation 7.0 en adelante. Además, Windows Virtual PC permite la composición mediante el Protocolo de Escritorio Remoto .

Experiencia del desarrollador

La funcionalidad para desarrolladores relacionada con el Administrador de ventanas de escritorio se proporciona en el archivo de encabezado dwmapi.hdentro del SDK de Windows .

Véase también

Notas

  1. A partir de Windows 8 , donde DWM es un componente necesario que debe estar en ejecución en todo momento, ya no es un servicio.

Referencias

  1. stevewhims. "Administrador de ventanas de escritorio - Aplicaciones Win32" . learn.microsoft.com . Consultado el 22 de marzo de 2026 .
  2. "Cómo habilitar las características de experiencia de usuario de Windows Vista en un equipo que ejecuta Windows Server 2008 (MSKB947036)" . Base de conocimientos . Microsoft. 15 de enero de 2008. Consultado el 21 de abril de 2008 .
  3. "Ingeniería de Windows 7" . 25 de septiembre de 2024.
  4. 1 2 3 Greg Schechter. "Uso de DirectX, GPU y aceleración de hardware por parte de DWM" . Blog de Greg Schechter . Blogs de MSDN . Consultado el 14 de octubre de 2007 .
  5. Greg Schechter. "Respondiendo a los comentarios de "El uso de DirectX, GPU y aceleración de hardware por parte de DWM"" . Blog de Greg Schechter . Blogs de MSDN . Consultado el 20 de abril de 2008 .
  6. Chris Jackson. "El Administrador de ventanas de escritorio solo se ejecuta en el escritorio principal" . Consonancia semántica de Chris Jackson . Blogs de MSDN . Consultado el 14 de octubre de 2007 .
  7. 1 2 3 Greg Schechter (6 de marzo de 2006). "Bajo el capó del Administrador de ventanas de escritorio" . Blog de Greg Schechter . Blogs de MSDN . Recuperado el 27 de mayo de 2021 .
  8. "Descripción general de la miniatura de DWM" . MSDN .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  9. 1 2 3 Greg Schechter. "Cómo se utilizan los conceptos y la tecnología subyacentes de WPF en el DWM" . Blog de Greg Schechter . Blogs de MSDN . Consultado el 14 de octubre de 2007 .
  10. 1 2 "El administrador de ventanas de escritorio siempre está activo" . Manual de compatibilidad de Windows 8 y Windows Server 2012. MSDN . Consultado el 4 de septiembre de 2012 .
  11. "Comparando Direct2D y GDI - Blog para desarrolladores de DirectX" . Archivado del original el 8 de abril de 2014. Consultado el 19 de agosto de 2014 .
  12. 1 2 3 Greg Schechter. "Redireccionando aplicaciones GDI, DirectX y WPF" . Archivado del original el 5 de marzo de 2010. Recuperado el 14 de octubre de 2007 .
  13. "Requisitos del sistema para Windows Vista" . Microsoft . 13 de noviembre de 2007. Consultado el 11 de febrero de 2009 .
  • Gestor de ventanas de escritorio
  • API en el gestor de ventanas de escritorio
  • Uso de las API de DWM
  • ¿Qué es DWM.exe? ¿Es un virus?