Windows komponens | |
Asztali ablakkezelő | |
---|---|
Alkatrész típusa | Microsoft Windows szoftver és összetevő [d] |
Tartalmazza |
Windows Vista Windows 7 Windows 8 Windows 8.1 Windows 10 Windows 11 Windows Server 2008 [1] Windows Server 2008 R2 [1] |
Lecserélve | Microsoft GDI+ |
Szolgáltatás neve | UxSms (csak Windows Vista/7) |
szolgáltatás leírása | Desktop Window Manager Session Manager |
A Desktop Window Manager ( DWM , korábban Desktop Compositing Engine, DCE ) a Windows Vista óta működő asztali grafikus felületrendszer , amely hardveres gyorsítást használ a grafikus felhasználói felület megjelenítéséhez .
Eredetileg a Windows Aero GUI -hoz készült , amely olyan funkciókat tartalmazott, mint az ablak átlátszósága stb. Az asztali ablakkezelőt a Windows Server 2008 és a Server 2008 R2 is tartalmazza , de a Desktop Experience összetevőt a felhasználónak kell telepítenie. [2]
Asztali ablakkezelő – Összetett ablakkezelő . Ez azt jelenti, hogy minden programnak van puffere, amelybe adatokat ír; majd a DWM az egyes programok puffereit a végső képbe komponálja . Összehasonlításképpen: a Windows XP és korábbi verzióiban (és a Windows Vista és a Windows 7 letiltott Windows Aero esetén) a verem ablakkezelője egyetlen megjelenítési puffert tartalmaz, amely minden programból adatokat ír.
A DWM az operációs rendszertől (Windows 7 vagy Windows Vista) és a használt grafikus illesztőprogramok verziójától ( WDDM 1.0 vagy 1.1) függően eltérően működik . Windows 7 és WDDM 1.1 illesztőprogramok esetén a DWM csak a programpuffert írja a videomemóriába , még akkor is, ha az egy grafikus eszköz interfész (GDI) program. Ennek az az oka, hogy a Windows 7 támogatja (korlátozottan) a hardveres gyorsítást a GDI-hez [3] , és nem szükséges a puffer másolatának a rendszermemóriában tartania ahhoz, hogy a processzor írhasson rá.
Mivel a zeneszerző minden alkalmazás grafikájához hozzáfér, könnyen lehetővé teszi a több alkalmazásból származó vizuális elemeket kombináló vizuális effektusokat, például az átlátszóságot. A DWM a DirectX 9 -et használja a GPU-n történő összeállításhoz és megjelenítéshez, felszabadítva a CPU-t a képernyőpufferek és a kijelző közötti renderelés kezelésének feladatától . Ez azonban nem érinti a képernyőpuffereken kívüli rajzoló alkalmazásokat - az ehhez használt technológiáktól függően - továbbra is lehet CPU-hoz kötött. A DWM-független megjelenítők, mint például a GDI , a felhasználói felület (UI) bittérképként történő megjelenítésével a pufferekbe kerülnek . A DWM-kompatibilis megjelenítési technológiák, például a WPF , elérhetővé teszik a belső adatstruktúrákat DWM-kompatibilis formátumban. A pufferekben lévő ablaktartalom ezután DirectX textúrákká alakul.
Maga az asztal egy teljes képernyős Direct3D felület , amelynek ablakai két szomszédos (és kölcsönösen fordított) háromszögből álló rácsként jelennek meg, amelyeket 2D-s téglalappá alakítanak át. A felhasználói felület krómját reprezentáló textúra ezután ezekre a téglalapokra lesz leképezve. Az ablakátmenetek háló transzformációként valósulnak meg shader programok segítségével. [4] A Windows Vista rendszerben az átmenetek az átalakításokat megvalósító beépített árnyékolókra korlátozódnak. Greg Schechter, a Microsoft fejlesztője azt javasolta, hogy ez nyitva állhat a fejlesztők és a felhasználók számára, hogy saját effektusaikat engedélyezzék egy jövőbeli kiadásban. [5] A DWM csak a fő asztali objektumot jeleníti meg 3D felületként; más asztali objektumok, köztük a virtuális asztalok, valamint a Felhasználói fiókok felügyelete által használt biztonságos asztal nem. [6]
Mivel az összes alkalmazás egy képernyőn kívüli pufferben jelenik meg, más alkalmazásokban is kiolvashatók a beépített pufferből. Mivel a képernyőn kívüli puffert az alkalmazás folyamatosan frissíti, a soron belüli megjelenítés az alkalmazás ablakának dinamikus megjelenítése, nem pedig statikus megjelenítés. A bélyegképek előnézete és a Windows Flip így működik Windows Vista és Windows 7 rendszerben . A DWM nyilvános API-t biztosít, amely lehetővé teszi az alkalmazások számára, hogy hozzáférjenek ezekhez a miniatűrökhöz. [7] Az indexkép mérete nem rögzített; Az alkalmazások bármilyen méretű – az eredeti ablaknál kisebb, azonos méretű vagy még nagyobb – bélyegképeket kérhetnek, és a DWM helyesen méretezi azokat, mielőtt visszatérne. A Windows Flip 3D nem használja a nyilvános miniatűr API-kat, mert nem teszik lehetővé a közvetlen hozzáférést a Direct3D textúrákhoz. [8] Ehelyett a Flip 3D közvetlenül a DWM motorban van megvalósítva.
Az asztali ablakkezelő a Media Integration Layer (MIL) nevű nem felügyelt szerkesztőt használja, amelyet a Windows Presentation Foundation - szel oszt meg , hogy az ablakokat kompozíciós csomópontokként jelenítse meg a kompozíciós fában . A kompozíciós fa az asztalt és az összes rajta elhelyezett ablakot ábrázolja, amelyeket aztán a MIL renderel a jelenet hátuljától az elejéig. [9] Mivel minden ablak hozzájárul a végső képhez, az eredményül kapott képpont színét egynél több ablak is meghatározhatja. Ez olyan hatások megvalósítására szolgál, mint a pixelenkénti átlátszóság. A DWM lehetővé teszi, hogy egyedi shadereket hívjon, hogy szabályozza több alkalmazás képpontjainak használatát egy renderelt pixel létrehozásához. A DWM beépített Pixel Shader 2.0 programokat tartalmaz, amelyek az ablakban lévő pixel színét a mögötte lévő ablak és a szomszédos pixelek által meghatározott képpontok színének átlagolásával számítják ki. Ezeket a shadereket a DWM arra használja, hogy elmosódást érjen el a DWM által vezérelt ablakok határain, és opcionálisan azokon a területeken, ahol ezt az alkalmazás kéri. [négy]
Mivel a MIL mód-megőrző grafikus rendszert biztosít a kompozíciós fák gyorsítótárazásával, az ablakok mozgatásakor a képernyő újrarajzolását és frissítését a DWM és a MIL végzi, mentesítve az alkalmazást a felelősség alól. A háttéradatok már megtalálhatók a kompozíciós fában és a képernyőn kívüli pufferekben, és közvetlenül a háttér megjelenítésére szolgálnak. A Vista előtti Windows operációs rendszerekben a háttérben futó alkalmazásoknak újbóli megjelenítést kellett kérniük egy WM_PAINT. [7] A DWM dupla pufferelt grafikát használ, hogy megakadályozza a villogást és a szakadást az ablakok mozgatásakor. [4] Az elrendezési motor olyan optimalizálásokat használ, mint a selejtezés a teljesítmény javítása érdekében, és nem rajzolja át azokat a területeket, amelyek nem változtak. [9] Mivel a compositor több monitort is támogat, a DWM is támogatja ezt.
Teljes képernyős alkalmazások, például játékok futtatásakor a DWM nem hajtja végre az ablakelrendezést, ezért a teljesítmény nem csökken észrevehetően.
A Windows 8 és a Windows Server 2012 rendszerben a DWM mindig használatban van, és az új "kezdőképernyő" megvalósítása miatt nem tiltható le. Mivel a DWM folyamatnak általában folyamatosan futnia kell a Windows 8 rendszerben, a folyamattal kapcsolatos problémákkal küzdő felhasználók a rendszer újraindítása után a memóriahasználat csökkenését tapasztalják. Gyakran ez az első lépés a segítséget nyújtó hibaelhárítási feladatok hosszú listájában. Lehetséges átmenetileg megakadályozni a DWM újraindítását a Windows 8 rendszerben, ami miatt az asztal elsötétül, a tálca szürkévé válik, és megszakad a Start képernyő/modern alkalmazások, de az asztali alkalmazások továbbra is ugyanúgy működnek és ugyanúgy jelennek meg, mint a Windows 7 és Windows Vista Basic. Egy téma, amely az XP-ben használt egyetlen pufferes megjelenítőn alapul[ mi? ] . Használják a Windows PE rendszerben látható középen elhelyezett Windows 8 címsort is . A Windows indítása DWM nélkül nem megy, mert a zárolási képernyő DWM-et igényel, így csak menet közben lehet megtenni, és nincs gyakorlati célja. A Windows 10-től kezdve a DWM ilyen módon történő letiltása a teljes elrendezési motort, még a hagyományos asztali alkalmazásokat is megszakítja a tálcán lévő Universal App implementációk és az új start menü miatt. Elődeivel ellentétben a Windows 8 támogatja az alapvető kijelzőadaptereket a Windows Advanced Rasterization Platformon (WARP) keresztül, amely szoftvert és CPU renderelést használ az interfész megjelenítéséhez a grafikus kártya helyett. Ez lehetővé teszi, hogy a DWM kompatibilis illesztőprogramok nélkül is működjön, de nem olyan teljesítményszinten, mint egy normál grafikus kártya esetében. A Windows 8 DWM-je a sztereoszkópikus 3D -t is támogatja . [tíz]
A DWM-et nem támogató renderelési módszerek esetében a kimenetet át kell irányítani a DWM-pufferekbe. Windows rendszeren GDI vagy DirectX használható a megjelenítéshez . Annak érdekében, hogy ez a kettő működjön a DWM-mel, mindkettőhöz átirányítási módszerek állnak rendelkezésre.
A GDI-vel, amely a Microsoft Windows leggyakrabban használt felhasználói felület-megjelenítési technikája , minden alkalmazásablak értesítést kap, amikor az alkalmazás vagy annak egy része megjelenik a képernyőn, és az alkalmazás feladata, hogy magát renderelje. DWM nélkül a renderelés raszterizálja a felhasználói felületet a videomemória pufferében, ahonnan az a képernyőre kerül. A DWM-ben a GDI-hívások a Canonical Display Driver (cdd.dll) használatára vannak átirányítva, amely egy szoftver-megjelenítő motor. [11] Az ablakmérettel megegyező puffer le van foglalva a rendszermemóriában és a CDD-n. A DLL ebbe a pufferbe megy ki, nem a videomemóriába. Egy másik puffer van lefoglalva a videomemóriában a DirectX felület megjelenítésére, amelyet az ablakrácsok textúrájaként használnak. A rendszermemória puffert külön átalakítják DirectX felületté és szinkronizálják. Erre a megoldásra azért van szükség, mert a GDI nem képes közvetlenül DirectX pixel formátumban kiadni. A felületet a kompozitor olvassa be, és a videomemóriában összekapcsolja az asztallal. A GDI-kimenet rendszermemóriába írása nem hardveresen gyorsított, és nem történik meg a DirectX felületre való átalakítás sem. Ha egy GDI-ablak minimalizálva van, láthatatlan vagy látható ugyanazon a monitoron, mint egy teljes képernyős DirectX-alkalmazás, a GDI-korlátozás miatt a GDI bittérképes puffert többé nem fogadja el az alkalmazás, amikor a rajzolás vagy frissítés során eszközkörnyezetet kér ( ez néha megtörténhet). akkor látható, amikor az egyik ablakból a másikba másoló GDI művelet fekete vagy üres területeket ad ki a várt ablaktartalom helyett). Tehát a DWM az alkalmazás minimalizálása előtti utolsó bitképet használja a pufferben. [12]
A Windows 7-től kezdődően a Canonical Display Driver már nem kezeli a rendszermemória másolatát, ha WDDM 1.1 / DXGI 1.1 kompatibilis video-illesztőprogram van jelen.
Azoknál az alkalmazásoknál, amelyek DirectX -et használnak a 3D felületre íráshoz, a Windows Vista DirectX megvalósítása WDDM -et használ a felület megosztására a DWM-mel. A DWM ezután közvetlenül használja a felületet, és leképezi az ablakrácsra. A Windows Presentation Foundation (WPF) alkalmazásoknál (amelyek DirectX-alkalmazások) a kompozitor kezeli az ilyen megosztott felületeket, amelyek aztán egyesülnek a végső asztalban. [12] Az alkalmazások bármilyen megjelenítési technikát keverhetnek több gyermekablakban, kivéve, ha GDI-t és DirectX-et használnak ugyanannak az ablaknak a megjelenítésére. Ebben az esetben a DirectX és a GDI renderelés közötti sorrend nem garantálható, és így nem garantálható, hogy a rendszermemória GDI bittérképe le lett képezve a videomemória felületére. Ez azt jelenti, hogy a végső kompozíció nem tartalmazhat renderelt GDI elemeket. Ennek elkerülése érdekében a DWM ideiglenesen le van tiltva, amíg egy olyan alkalmazás fut, amely ugyanabban az ablakban keveri a GDI-t és a DirectX-et.
Windows Vista rendszeren a DWM kompatibilis fizikai vagy virtuális hardvert igényel: [13]
A Windows 7 rendszerben az Asztali ablakkezelőt áttervezték a Direct3D 10.1 használatára, de a hardverkövetelmények ugyanazok maradnak, mint a Windows Vista esetében; A Direct3D 9 hardvert a Direct3D 11 futási ideje alatt bevezetett " 10 Level 9 " réteg támogatja . A Windows 8 ugyanazokkal a követelményekkel rendelkezik, mint a Windows 7, de szoftveres megjelenítést is használhat, ha nem rendelkezik kompatibilis videohardverrel. [tíz]
A DWM-hez szükséges hardvert emuláló hardvervirtualizációs szoftverek közé tartozik a VirtualBox 4.1 és újabb , a VMware Fusion 3.0 és újabb , valamint a VMware Workstation 7.0 és újabb verziók. Ezenkívül a Windows Virtual PC lehetővé teszi a Remote Desktop Protocol használatával történő hivatkozást .