В. Что такое Desktop Windows Manager (DWM)?

О.

DWM функционирует как служба: Desktop Windows Manager Session Service с внутренним именем UxSMS ("ux" означает "user experience"), реализована в образе dwm.exe. Эта служба обеспечивает компоновку рабочего стола для всей операционной системы при работе с режимом Aero.

Во всех предыдущих операционных системах (и Vista без Aero), каждое приложение записывает данные непосредственно в буфер экрана. В случае, если окно перемещается над графической областью другого окна, система посылает в приложение сообщение WM_PAINT, чтобы перерисовать окно. Если приложение занято, сообщение WM_PAINT может остаться необработанным, и за перемещаемым окном возникает след на экране. Кроме того, если перемещаемое окно не удается перерисовать достаточно быстро, оно распадается на фрагменты. Это явление называется tearing.

При использовании DWM ситуация меняется. В системе используется внеэкранный буфер для компоновки внеэкранных буферов графического дисплея каждого приложения, затем DWM переписывает данные из этого буфера в экранный буфер. Таким образом, DWM содержит графические данные каждого приложения, и приложению не нужно перерисовывать свое окно при каждом обновлении экрана. Вместо этого для подготовки нового экранного буфера используется моментальный снимок последнего обновления дисплея, полученный из приложения. При работе с медленным приложением следов на экране не возникнет, так как для приложения DWM использует внеэкранный буфер. Следует отметить, что процесс DWM всегда активен, но в основном бездействует, за исключением тех случаев, когда система находится в графическом режиме Aero. Благодаря использованию в DWM отдельного графического буфера для каждого активного приложения, становятся доступны окна просмотра приложений и режим Flip 3D. Существуют даже API для доступа других приложений к технологии окон просмотра. Когда операционной системе необходимо окно просмотра, она просто сжимает графический буфер приложения, предоставляемый DWM.

При работе в любом другом графическом режиме, в том числе Vista Basic, DWM используется мало, и следы от перемещающихся окон по-прежнему заметны. Причина в том, что дисплей - не композитный. Процесс DWM по-прежнему активен даже в режиме, отличном от Aero; он обслуживает Windows Ghosting, процесс, благодаря которому не отвечающее окно принимает белесый вид, а к заголовку окна добавляется запись "(Not Responding)".