మైక్రోసాఫ్ట్ ఇంజనీర్ ఘన రంగు నేపథ్యాలు విండోస్ 7 లాగిన్లను ఎందుకు మందగించాయో వెల్లడించారు

ఒక వారం క్రితం, మేము విండోస్ 11 20 ఏళ్ల బగ్ను ఎలా పునరుత్థానం చేసిందనే దానిపై నివేదించబడింది GTA శాన్ ఆండ్రియాస్ ఇది మెమరీని ఎలా నిర్వహించాలో మార్చడం ద్వారా, ఆట యొక్క కోడ్లో పాత లోపాన్ని బహిర్గతం చేస్తుంది. విండోస్ సంవత్సరాలుగా చమత్కారమైన, దాచిన ప్రవర్తనల వాటాను కలిగి ఉంది మరియు దీర్ఘకాల మైక్రోసాఫ్ట్ ఇంజనీర్ నుండి ఇటీవలి వివరణ మరొక మనోహరమైన చారిత్రక ఉదాహరణను హైలైట్ చేస్తుంది.
తిరిగి 2009 లో, విండోస్ 7 విడుదలైన సమయం చుట్టూనియోవిన్ ఫోరమ్ సభ్యులు మరియు ఇతర చోట్ల వినియోగదారులు ప్రారంభించారు అస్పష్టమైన సమస్యను నివేదిస్తోంది: స్వాగత స్క్రీన్ కొన్నిసార్లు లాగిన్ అయిన తర్వాత అదృశ్యం కావడానికి కొన్నిసార్లు అసాధారణంగా 30 సెకన్ల వరకు ఎక్కువ సమయం పట్టింది. ఈ ఆలస్యం ముఖ్యంగా డెస్క్టాప్ నేపథ్యంగా ఎంచుకున్న దృ color మైన రంగుతో కూడిన నిర్దిష్ట, సరళమైన అమరికతో ముడిపడి ఉన్నట్లు అనిపించింది. ఎ మైక్రోసాఫ్ట్ సపోర్ట్ ఆర్టికల్ ఘన రంగు నేపథ్యాలతో విండోస్ 7 మరియు విండోస్ సర్వర్ 2008 R2 వినియోగదారుల కోసం ఈ సమస్య ఉందని తరువాత ధృవీకరించారు.
రేమండ్ చెన్, దీర్ఘకాల మైక్రోసాఫ్ట్ ఇంజనీర్ మరియు బ్లాగ్ రచయిత పాత క్రొత్త విషయం, ఇటీవల వివరించబడింది బేసి లాగిన్ ఆలస్యం వెనుక ఉన్న సాంకేతిక కారణం. మెమరీని ఆదా చేయడానికి మరియు బగ్ రిపోర్టింగ్ను సులభతరం చేయడానికి విండోస్ 95 నుండి దృ color మైన రంగు నేపథ్యాన్ని ఉపయోగించిన చెన్ ప్రకారం, విండోస్ లాగిన్ ప్రక్రియలో టాస్క్బార్, సిస్టమ్ సర్వీసెస్, డెస్క్టాప్ ఐకాన్లు మరియు నేపథ్యం వంటి అనేక భాగాలు ఒకేసారి లోడ్ అవుతాయి. వారందరూ సిద్ధంగా ఉన్నారని సిగ్నల్ కోసం సిస్టమ్ వేచి ఉంది. ఆల్-క్లియర్ పొందిన తరువాత, లేదా 30 సెకన్ల పాస్ తర్వాత మాత్రమే, స్వాగత స్క్రీన్ ఫేడ్ మరియు డెస్క్టాప్ కనిపిస్తుంది.
30 సెకన్ల ఆలస్యం కోసం కారణం, చెన్ వివరించాడు, ఈ భాగాలలో ఒకటి దాని “సిద్ధంగా” సిగ్నల్ పంపడంలో విఫలమైంది. వాల్పేపర్ను లోడ్ చేయడానికి కోడ్ ఎలా ఉంటుందో సరళీకృత ఉదాహరణతో అతను దీనిని వివరిస్తాడు:
InitializeWallpaper()
{
if (wallpaper bitmap defined)
{
LoadWallpaperBitmap();
}
}
LoadWallpaperBitmap()
{
locate the bitmap on disk
load it into memory
paint it on screen
Report(WallpaperReady);
}
కీలకమైన భాగం, చెన్ ఎత్తి చూపాడు, అది Report(WallpaperReady)
కాల్ లోపల ఉంచబడింది LoadWallpaperBitmap
ఫంక్షన్. “వాల్పేపర్ బిట్మ్యాప్” నిర్వచించినట్లయితే మాత్రమే ఈ ఫంక్షన్ నడుస్తుంది. మీరు చిత్రానికి బదులుగా ఘన రంగును ఎంచుకుంటే, LoadWallpaperBitmap
ఫంక్షన్ పూర్తిగా దాటవేయబడింది, అర్థం Report(WallpaperReady)
లైన్ ఎప్పుడూ అమలు చేయబడలేదు. లాగిన్ వ్యవస్థ ఈ సిగ్నల్ కోసం వేచి ఉంది, ఇది ఎప్పుడూ రాలేదు, చివరికి డెస్క్టాప్ను చూపించడానికి ముందు 30 సెకన్ల సమయం ముగిసింది.
మీరు “దాచు డెస్క్టాప్ చిహ్నాలను” సమూహ విధానాన్ని ప్రారంభిస్తే ఇలాంటి సమస్య సంభవిస్తుందని చెన్ పేర్కొన్నాడు. డెస్క్టాప్ చిహ్నాలను సిద్ధంగా ఉన్నట్లు నివేదించిన కోడ్ ఆ విధానం కోసం షరతులతో కూడిన చెక్ లోపల ఉంచబడింది.
// Original code
InitializeDesktopIcons()
{
bind to the desktop folder
enumerate the icons
add them to the screen
Report(DesktopIconsReady);
}
// Updated with group policy support
InitializeDesktopIcons()
{
if (desktop icons allowed by policy)
{
bind to the desktop folder
enumerate the icons
add them to the screen
Report(DesktopIconsReady);
}
}
విధానం చిహ్నాలను చూపించకుండా నిరోధిస్తే, రిపోర్ట్ కాల్ అక్కడ కూడా దాటవేయబడింది, ఇది స్వాగత తెరపై అదే 30-సెకన్ల సమయం ముగిసింది. అర్థం చేసుకోవడం చాలా ముఖ్యం, చెన్ నొక్కిచెప్పాడు, లాగిన్ ప్రక్రియ దాని అన్ని పనులను పూర్తి చేయడానికి అదనంగా 30 సెకన్లు తీసుకోలేదు. స్వాగత స్క్రీన్ పూర్తి 30-సెకన్ల సమయం ముగిసింది, ఎందుకంటే ఒక నిర్దిష్ట భాగం దాని పూర్తయినట్లు నివేదించడంలో విఫలమైంది, లాగిన్ యొక్క అన్ని ఇతర భాగాలు చాలా త్వరగా లోడ్ చేయడాన్ని పూర్తి చేసినప్పటికీ.
మైక్రోసాఫ్ట్ సపోర్ట్ వ్యాసం సూచించినట్లుగా, ఈ సమస్యను పరిష్కరించే హాట్ఫిక్స్ నవంబర్ 2009 లో విండోస్ 7 మరియు విండోస్ సర్వర్ 2008 R2 కోసం విడుదలైంది.