Työpöytäikkunanhallinta

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 19. helmikuuta 2022 tarkistetusta versiosta . tarkastukset vaativat 9 muokkausta .
Windows -komponentti
Työpöytäikkunanhallinta
Komponenttityyppi Microsoft Windows -ohjelmisto ja komponentti [d]
Mukana Windows Vista
Windows 7
Windows 8
Windows 8.1
Windows 10
Windows 11
Windows Server 2008 [1]
Windows Server 2008 R2 [1]
Vaihdettu Microsoft GDI+
Palvelun nimi UxSms (vain Windows Vista/7)
Palvelun kuvaus Desktop Window Manager -istunnonhallinta

Desktop Window Manager ( DWM , entinen Desktop Compositing Engine, DCE ) on Windows Vistasta lähtien työpöydän  graafinen käyttöliittymäjärjestelmä , joka käyttää laitteistokiihdytystä graafisen käyttöliittymän hahmontamiseen .

Se luotiin alun perin Windows Aero GUI :lle , joka sisälsi ominaisuuksia, kuten ikkunan läpinäkyvyyden jne. Myös työpöydän ikkunoiden hallinta sisältyy Windows Server 2008 :aan ja Server 2008 R2 :een , mutta käyttäjän on asennettava Desktop Experience -komponentti. [2]

Arkkitehtuuri

Desktop Window Manager - Composite Window Manager . Tämä tarkoittaa, että jokaisella ohjelmalla on puskuri, johon se kirjoittaa tietoja; sitten DWM muodostaa kunkin ohjelman puskurin lopulliseksi kuvaksi. Vertailun vuoksi, pino-ikkunoiden hallinta Windows XP :ssä ja aiemmissa käyttöjärjestelmissä (ja Windows Vistassa ja Windows 7:ssä, jossa Windows Aero on poistettu käytöstä) sisältää yhden näyttöpuskurin, joka kirjoittaa tiedot kaikista ohjelmista.

DWM toimii eri tavalla riippuen käyttöjärjestelmästä (Windows 7 tai Windows Vista) ja käytettyjen näytönohjainten versioista ( WDDM 1.0 tai 1.1). Windows 7:ssä ja WDDM 1.1 -ajureilla DWM kirjoittaa vain ohjelmapuskurin videomuistiin , vaikka se olisi GDI-ohjelma. Tämä johtuu siitä, että Windows 7 tukee (rajoitettua) laitteistokiihdytystä GDI:lle [3] , eikä se vaadi puskurin kopion säilyttämistä järjestelmämuistissa, jotta prosessori voi kirjoittaa siihen.

Koska säveltäjällä on pääsy kaikkien sovellusten grafiikkaan, se sallii helposti visuaaliset tehosteet, jotka yhdistävät useiden sovellusten visuaalisia elementtejä, kuten läpinäkyvyyden. DWM käyttää DirectX 9 :ää kokoonpanon ja hahmontamisen suorittamiseen GPU:lla, vapauttaen prosessorin tehtävästä hallita hahmonnusta näyttöpuskureista näyttöön. Tämä ei kuitenkaan vaikuta piirustussovelluksiin näyttöpuskureiden ulkopuolella - riippuen tähän käytetystä tekniikasta - se voi silti olla CPU-sidottu. DWM-riippumattomat renderöijat, kuten GDI , ohjataan puskureihin hahmontamalla käyttöliittymä bittikarttoina. DWM-yhteensopivat renderöintitekniikat, kuten WPF , tekevät sisäiset tietorakenteet saataville DWM-yhteensopivassa muodossa. Puskureissa oleva ikkunan sisältö muunnetaan sitten DirectX-kuvioiksi.

Itse työpöytä on koko näytön Direct3D -pinta , jonka ikkunat esitetään ruudukkona kahdesta vierekkäisestä (ja keskenään käänteisestä) kolmiosta, jotka muunnetaan 2D-suorakulmioksi. Käyttöliittymän kromia edustava pintakuviointi kartoitetaan sitten näihin suorakulmioihin. Ikkunoiden siirtymät toteutetaan mesh-muunnoksina käyttämällä Shader- ohjelmia. [4] Windows Vistassa siirtymät rajoittuvat joukkoon sisäänrakennettuja varjostimia, jotka toteuttavat muunnoksia. Greg Schechter, Microsoftin kehittäjä, ehdotti, että tämä voisi olla avoin kehittäjille ja käyttäjille, jotta he voivat ottaa käyttöön omia tehosteitaan tulevassa julkaisussa. [5] DWM tekee vain päätyöpöydän objektin 3D-pinnana; muut työpöytäobjektit, mukaan lukien virtuaaliset työpöydät, sekä käyttäjätilien hallinnan käyttämä suojattu työpöytä eivät ole. [6]

Koska kaikki sovellukset renderöidään näytön ulkopuolisessa puskurissa, ne voidaan lukea myös muiden sovellusten sisäisestä puskurista. Koska sovellus päivittää jatkuvasti näytön ulkopuolista puskuria, upotettu renderöinti on dynaaminen esitys sovelluksen ikkunasta, ei staattinen renderöinti. Näin pikkukuvien esikatselu ja Windows Flip toimivat Windows Vistassa ja Windows 7 :ssä . DWM tarjoaa julkisen API:n, jonka avulla sovellukset voivat käyttää näitä pikkukuvia. [7] Pikkukuvan koko ei ole kiinteä; sovellukset voivat pyytää minkä tahansa kokoisia pikkukuvia – alkuperäistä ikkunaa pienempiä, samankokoisia tai jopa suurempia – ja DWM skaalaa ne oikein ennen paluuta. Windows Flip 3D ei käytä julkisia pikkukuvien sovellusliittymiä, koska ne eivät salli suoraa pääsyä Direct3D-kuvioihin. [8] Sen sijaan Flip 3D on toteutettu suoraan DWM-moottorissa.

Työpöydän ikkunoiden hallintaohjelma käyttää Media Integration Layeria ( MIL), hallitsematonta kompositoria, jonka se jakaa Windows Presentation Foundationin kanssa, edustamaan ikkunoita kokoonpanosolmuina kokoonpanopuussa . Koostumuspuu edustaa työpöytää ja kaikkia sille asetettuja ikkunoita, jotka MIL renderöi sitten kohtauksen takaosasta eteen. [9] Koska kaikki ikkunat vaikuttavat lopulliseen kuvaan, tuloksena olevan pikselin väri voi määräytyä useamman kuin yhden ikkunan mukaan. Tätä käytetään toteuttamaan tehosteita, kuten pikselikohtaista läpinäkyvyyttä. DWM:n avulla voit kutsua mukautettuja varjostimia hallitaksesi useiden sovellusten pikselien käyttöä renderoidun pikselin luomiseksi. DWM sisältää sisäänrakennetut Pixel Shader 2.0 -ohjelmat, jotka laskevat ikkunan pikselin värin laskemalla sen takana olevan ikkunan ja viereisten pikselien määrittämän pikselin värin keskiarvon. DWM käyttää näitä varjostimia sumentaakseen DWM-ohjattujen ikkunoiden rajoja ja valinnaisesti alueilla, joilla sovellus sitä pyytää. [neljä]

Koska MIL tarjoaa tilan säilyttävän grafiikkajärjestelmän välimuistiin tallentamalla kokoonpanopuita, näytön uudelleenpiirtäminen ja päivittäminen ikkunoita siirrettäessä tehdään DWM:n ja MIL:n toimesta, mikä vapauttaa sovelluksen vastuusta. Taustatiedot ovat jo sommittelupuussa ja näytön ulkopuolisissa puskureissa, ja niitä käytetään suoraan taustan hahmontamiseen. Vistaa edeltävissä Windows-käyttöjärjestelmissä taustasovellusten piti pyytää uudelleenrenderöintiä lähettämällä niille WM_PAINT. [7] DWM käyttää kaksoispuskuroitua grafiikkaa estämään välkkymistä ja repeytymistä ikkunoita siirrettäessä. [4] Asettelumoottori käyttää optimointeja, kuten teurausta parantaakseen suorituskykyä, eikä myöskään piirrä uudelleen alueita, jotka eivät ole muuttuneet. [9] Koska kompositori tukee useita näyttöjä, DWM tukee myös tätä.

Käytettäessä koko näytön sovelluksia, kuten pelejä, DWM ei suorita ikkunoiden asettelua, joten suorituskyky ei heikkene merkittävästi.

Windows 8:ssa ja Windows Server 2012 :ssa DWM on aina käytössä, eikä sitä voi poistaa käytöstä uuden "aloitusnäytön" käyttöönoton vuoksi. Koska DWM-prosessin on yleensä suoritettava jatkuvasti Windows 8:ssa, käyttäjät, joilla on ongelmia prosessin kanssa, näkevät muistin käytön vähenemisen järjestelmän uudelleenkäynnistyksen jälkeen. Tämä on usein ensimmäinen askel pitkässä vianmääritystehtävissä, joista voi olla apua. On mahdollista tilapäisesti estää DWM:n uudelleenkäynnistyminen Windows 8:ssa, mikä saa työpöydän muuttumaan mustaksi, tehtäväpalkin harmaaksi ja rikkoa aloitusnäytön / nykyaikaiset sovellukset, mutta työpöytäsovellukset jatkavat toimintaansa ja näyttävät samalla tavalla kuin Windows 7 ja Windows Vista Basic. Teema, joka perustuu XP:ssä käytettyyn yhteen puskurointiin[ mitä? ] . He käyttävät myös keskitettyä Windows 8:n otsikkopalkkia, joka näkyy Windows PE :ssä . Windowsin käynnistäminen ilman DWM:ää ei toimi, koska lukitusnäyttö vaatii DWM:n, joten se voidaan tehdä vain lennossa, eikä sillä ole käytännön tarkoitusta. Windows 10:stä alkaen DWM:n poistaminen käytöstä tällä tavalla rikkoo koko asettelumoottorin, jopa perinteiset työpöytäsovellukset, johtuen Universal App -toteutuksista tehtäväpalkista ja uudesta aloitusvalikosta. Toisin kuin edeltäjänsä, Windows 8 tukee perusnäyttösovittimia Windows Advanced Rasterization Platformin (WARP) kautta, joka käyttää ohjelmistoa ja suorittimen renderöintiä käyttöliittymän hahmontamiseen näytönohjaimen sijaan. Tämä mahdollistaa DWM:n toiminnan ilman yhteensopivia ohjaimia, mutta ei samalla suorituskykytasolla kuin tavallisella näytönohjaimella. Windows 8:n DWM lisää myös stereoskooppisen 3D :n tuen . [kymmenen]

Uudelleenohjaus

Renderöintimenetelmissä, jotka eivät tue DWM:ää, lähtö on ohjattava uudelleen DWM-puskureihin. Windowsissa voit käyttää GDI :tä tai DirectX :ää hahmontamiseen . Jotta nämä kaksi toimisivat DWM:n kanssa, molemmille tarjotaan uudelleenohjausmenetelmiä.

GDI:llä, joka on Microsoft Windowsin eniten käytetty käyttöliittymän renderöintitekniikka , jokainen sovellusikkuna saa ilmoituksen, kun se tai osa siitä ilmestyy näytölle, ja sovelluksen tehtävänä on renderöidä itse itsensä. Ilman DWM:ää renderöinti rasteroi käyttöliittymän videomuistissa olevaan puskuriin, josta se hahmonnetaan näytölle. DWM:ssä GDI-kutsut ohjataan käyttämään Canonical Display Driver -ohjainta (cdd.dll), joka on ohjelmiston renderöintimoottori. [11] Järjestelmämuistiin ja CDD:hen varataan puskuri, joka vastaa ikkunan kokoa. DLL tulostaa tähän puskuriin, ei videomuistiin. Toinen puskuri on varattu videomuistiin edustamaan DirectX-pintaa, jota käytetään tekstuurina ikkunaruudukoille. Järjestelmämuistipuskuri muunnetaan DirectX-pinnaksi erikseen ja synkronoidaan. Tämä kiertotapa on välttämätön, koska GDI ei voi tulostaa suoraan DirectX-pikselimuodossa. Kompositori lukee pinnan ja linkittää sen työpöydälle videomuistissa. GDI-lähdön kirjoittaminen järjestelmämuistiin ei ole laitteistokiihdytettyä, eikä muuntaminen DirectX-pinnalle. Kun GDI-ikkuna on minimoitu, näkymätön tai näkyvissä samassa näytössä kuin koko näytön DirectX-sovellus, GDI-rajoituksen vuoksi sovellus ei enää hyväksy GDI-bittikarttapuskuria, kun se pyytää laitekontekstia piirtämisen tai päivityksen aikana ( näin voi joskus käydä). nähdään, kun ikkunasta toiseen kopioiva GDI-toiminto tuottaa mustia tai tyhjiä alueita odotetun ikkunan sisällön sijaan). Joten DWM käyttää viimeistä puskurissa näkyvää bittikarttaa ennen sovelluksen pienentämistä. [12]

Windows 7:stä alkaen Canonical Display Driver ei enää käsittele kopiota järjestelmämuistista, kun WDDM 1.1 / DXGI 1.1 -yhteensopiva videoohjain on olemassa.

Sovelluksissa, jotka käyttävät DirectX :ää 3D-pinnalle kirjoittamiseen, Windows Vistan DirectX-toteutus käyttää WDDM :ää pinnan jakamiseen DWM:n kanssa. DWM käyttää sitten pintaa suoraan ja kartoittaa sen ikkunaruudukkoon. Windows Presentation Foundation (WPF) -sovelluksissa (jotka ovat DirectX-sovelluksia) kompositori käsittelee tällaiset jaetut pinnat, jotka sitten yhdistetään lopulliseksi työpöydäksi. [12] Sovellukset voivat sekoittaa mitä tahansa renderöintitekniikkaa useissa aliikkunoissa, ellei GDI:tä ja DirectX:ää käytetä saman ikkunan hahmontamiseen. Tässä tapauksessa järjestystä DirectX- ja GDI-renderöinnin välillä ei voida taata, eikä näin ollen voida taata, että järjestelmämuistin GDI-bittikartta on kartoitettu videomuistin pintaan. Tämä tarkoittaa, että lopullinen koostumus ei saa sisältää renderoituja GDI-elementtejä. Tämän estämiseksi DWM poistetaan tilapäisesti käytöstä, kun samassa ikkunassa GDI:tä ja DirectX:ää sekoittava sovellus on käynnissä.

Järjestelmävaatimukset

Windows Vistassa DWM vaatii yhteensopivan fyysisen tai virtuaalisen laitteiston: [13]

Windows 7:ssä Desktop Window Manager on suunniteltu uudelleen käyttämään Direct3D 10.1:tä, mutta laitteistovaatimukset pysyvät samoina kuin Windows Vistassa; Direct3D 9 -laitteistoa tukee Direct3D 11 :n ajon aikana käyttöön otettu " 10 Level 9 " -taso . Windows 8:lla on samat vaatimukset kuin Windows 7:llä, mutta se voi myös käyttää ohjelmiston renderöintiä, jos sinulla ei ole yhteensopivaa videolaitteistoa. [kymmenen]

Laitteiston virtualisointiohjelmisto , joka emuloi DWM: n vaatimaa laitteistoa, sisältää VirtualBox 4.1:n ja uudemmat , VMware Fusion 3.0:n ja uudemmat sekä VMware Workstation 7.0:n ja uudemmat. Lisäksi Windows Virtual PC mahdollistaa linkittämisen Remote Desktop Protocol -protokollan avulla .

Katso myös

Muistiinpanot

  1. 1 2 Alaviitevirhe ? : Virheellinen tunniste <ref>; DeskExpei tekstiä alaviitteisiin
  2. Deland Han.  Kuinka ottaa Windows Vistan käyttökokemusominaisuudet käyttöön tietokoneessa, jossa on Windows Server 2008  ? . Microsoft Knowledge Base . Haettu 27. maaliskuuta 2022. Arkistoitu alkuperäisestä 6. huhtikuuta 2012.
  3. Suunnittelu Windows 7 | Microsoftin dokumentit . Haettu 16. joulukuuta 2021. Arkistoitu alkuperäisestä 23. huhtikuuta 2010.
  4. 1 2 3 Greg Schechter. DWM:n DirectX-, GPU- ja laitteistokiihdytyksen käyttö . Greg Schechterin blogi . MSDN blogit. Haettu 14. lokakuuta 2007. Arkistoitu alkuperäisestä 19. tammikuuta 2010.
  5. Greg Schechter. Vastaus kommentteihin aiheesta "DWM:n DirectX-, GPU- ja laitteistokiihdytyksen käyttö" . Greg Schechterin blogi . MSDN blogit. Haettu 20. huhtikuuta 2008. Arkistoitu alkuperäisestä 3. marraskuuta 2009.
  6. Chris Jackson. Desktop Window Manager toimii vain ensisijaisella työpöydällä . Chris Jacksonin semanttinen konsonanssi . MSDN blogit. Haettu 14. lokakuuta 2007. Arkistoitu alkuperäisestä 6. maaliskuuta 2010.
  7. 12 Greg Schechter . Desktop Window Managerin kannen alla . Greg Schechterin blogi . MSDN blogit. Haettu 14. lokakuuta 2007. Arkistoitu alkuperäisestä 20. toukokuuta 2010.
  8. DWM-pikkukuvien yleiskatsaus - Win32-sovellukset | Microsoftin dokumentit . Haettu 16. joulukuuta 2021. Arkistoitu alkuperäisestä 5. syyskuuta 2008.
  9. 12 Greg Schechter . Miten taustalla olevia WPF-konsepteja ja -teknologiaa käytetään DWM:ssä . Greg Schechterin blogi . MSDN blogit. Haettu 14. lokakuuta 2007. Arkistoitu alkuperäisestä 23. tammikuuta 2010.
  10. 1 2 Desktop Window Manager on aina päällä . Windows 8 ja Windows Server 2012 -yhteensopivuuden keittokirja . MSDN. Haettu 4. syyskuuta 2012. Arkistoitu alkuperäisestä 28. heinäkuuta 2012.
  11. Direct2D:n ja GDI-DirectX Developer Blogin vertailu . Haettu 19. elokuuta 2014. Arkistoitu alkuperäisestä 8. huhtikuuta 2014.
  12. 12 Greg Schechter . GDI-, DirectX- ja WPF-sovellusten uudelleenohjaus . Haettu 14. lokakuuta 2007. Arkistoitu alkuperäisestä 5. maaliskuuta 2010.
  13. Windows Vistan järjestelmävaatimukset . Microsoft (13. marraskuuta 2007). Haettu 11. helmikuuta 2009. Arkistoitu alkuperäisestä 12. helmikuuta 2015.