1 Star 4 Fork 2

cbwang505 / win32k

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
a00689.html 330.56 KB
一键复制 编辑 原始数据 按行查看 历史
cbwang505 提交于 2020-01-04 20:32 . init
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Win32k: fullscr.c 文件参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Win32k
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','搜索');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('a00689.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">宏定义</a> &#124;
<a href="#func-members">函数</a> &#124;
<a href="#var-members">变量</a> </div>
<div class="headertitle">
<div class="title">fullscr.c 文件参考</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="a03629_source.html">precomp.h</a>&quot;</code><br />
<code>#include &quot;ntddvdeo.h&quot;</code><br />
</div>
<p><a href="a00689_source.html">浏览源代码.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
宏定义</h2></td></tr>
<tr class="memitem:a18707a2877a1444421decffc9e2efb3e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a18707a2877a1444421decffc9e2efb3e">NOSWITCHER</a>&#160;&#160;&#160;((HANDLE)-1)</td></tr>
<tr class="separator:a18707a2877a1444421decffc9e2efb3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
函数</h2></td></tr>
<tr class="memitem:a317b5986c94a0fe6aec5cd38123cf2a3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a317b5986c94a0fe6aec5cd38123cf2a3">SetVDMCursorBounds</a> (LPRECT lprc)</td></tr>
<tr class="separator:a317b5986c94a0fe6aec5cd38123cf2a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2cf7d13f9206082622d1c7c42dd43e40"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a2cf7d13f9206082622d1c7c42dd43e40">FullScreenCleanup</a> ()</td></tr>
<tr class="separator:a2cf7d13f9206082622d1c7c42dd43e40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff6a0461c096c5f13235d6537112c084"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#aff6a0461c096c5f13235d6537112c084">xxxMakeWindowForegroundWithState</a> (<a class="el" href="a00365.html#a1a2ef1c363aa0787a8f8a7dde2a34aaf">PWND</a> pwnd, BYTE NewState)</td></tr>
<tr class="separator:aff6a0461c096c5f13235d6537112c084"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa405cfa528226b4bd1d09e0b731d36fa"><td class="memItemLeft" align="right" valign="top">NTSTATUS&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#aa405cfa528226b4bd1d09e0b731d36fa">NtUserFullscreenControl</a> (IN FULLSCREENCONTROL FullscreenCommand, PVOID FullscreenInput, <a class="el" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a> FullscreenInputLength, PVOID FullscreenOutput, PULONG FullscreenOutputLength)</td></tr>
<tr class="separator:aa405cfa528226b4bd1d09e0b731d36fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5fba44a86c81b63bd0bea2c0c3542fc8"><td class="memItemLeft" align="right" valign="top">VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a5fba44a86c81b63bd0bea2c0c3542fc8">ResetSharedDesktops</a> (<a class="el" href="a00365.html#ab392d2a1a1f08851fa36fb5af594de27">PDISPLAYINFO</a> pDIChanged, <a class="el" href="a00365.html#a07e239ec4a8e696c787df685bce70b61">PDESKTOP</a> pdeskChanged, LPRECT lprOldWork, <a class="el" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a> CDS_Flags)</td></tr>
<tr class="separator:a5fba44a86c81b63bd0bea2c0c3542fc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac54f401520871421830eeed1d34dd321"><td class="memItemLeft" align="right" valign="top">VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#ac54f401520871421830eeed1d34dd321">ResetDisplayDevice</a> (<a class="el" href="a00365.html#a07e239ec4a8e696c787df685bce70b61">PDESKTOP</a> pdesk, <a class="el" href="a00365.html#ab392d2a1a1f08851fa36fb5af594de27">PDISPLAYINFO</a> pDI, <a class="el" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a> CDS_Flags)</td></tr>
<tr class="separator:ac54f401520871421830eeed1d34dd321"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a0005a4431f2cfd915cd4be346f80fc"><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a0a0005a4431f2cfd915cd4be346f80fc">NtUserChangeDisplaySettings</a> (IN PUNICODE_STRING pstrDeviceName, IN LPDEVMODEW pDevMode, IN HWND hwnd, IN <a class="el" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a> dwFlags, IN PVOID lParam)</td></tr>
<tr class="separator:a0a0005a4431f2cfd915cd4be346f80fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca39fc0e877a9047585888e7790d20ed"><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#aca39fc0e877a9047585888e7790d20ed">UserChangeDisplaySettings</a> (IN PUNICODE_STRING pstrDeviceName, IN LPDEVMODEW pDevMode, IN <a class="el" href="a00365.html#a1a2ef1c363aa0787a8f8a7dde2a34aaf">PWND</a> pwnd, IN <a class="el" href="a00365.html#a07e239ec4a8e696c787df685bce70b61">PDESKTOP</a> pdesk, IN <a class="el" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a> dwFlags, IN PVOID lParam, IN BOOL bKernelMode)</td></tr>
<tr class="separator:aca39fc0e877a9047585888e7790d20ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a855856a20ad946448abdafb9ee059ebd"><td class="memItemLeft" align="right" valign="top">HANDLE&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a855856a20ad946448abdafb9ee059ebd">UserGetVgaHandle</a> (VOID)</td></tr>
<tr class="separator:a855856a20ad946448abdafb9ee059ebd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
变量</h2></td></tr>
<tr class="memitem:a39514132d83d314ad628930b9ce9e9e1"><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a39514132d83d314ad628930b9ce9e9e1">TraceFullscreenSwitch</a> = 0</td></tr>
<tr class="separator:a39514132d83d314ad628930b9ce9e9e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adaa7e2f08c4f1fb0e8161e249d62f909"><td class="memItemLeft" align="right" valign="top">HANDLE&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#adaa7e2f08c4f1fb0e8161e249d62f909">idSwitcher</a> = <a class="el" href="a00689.html#a18707a2877a1444421decffc9e2efb3e">NOSWITCHER</a></td></tr>
<tr class="separator:adaa7e2f08c4f1fb0e8161e249d62f909"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4e036cf2cf3a3162fe3ee05da10c457"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#ab4e036cf2cf3a3162fe3ee05da10c457">fRedoFullScreenSwitch</a> = FALSE</td></tr>
<tr class="separator:ab4e036cf2cf3a3162fe3ee05da10c457"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a387a17388d6fb6bc7ecd24bc5826427e"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a387a17388d6fb6bc7ecd24bc5826427e">fGdiEnabled</a> = TRUE</td></tr>
<tr class="separator:a387a17388d6fb6bc7ecd24bc5826427e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a629f45921c086affcaef1298ff7f8fd4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00365.html#a1a2ef1c363aa0787a8f8a7dde2a34aaf">PWND</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a629f45921c086affcaef1298ff7f8fd4">gspwndShouldBeForeground</a> = NULL</td></tr>
<tr class="separator:a629f45921c086affcaef1298ff7f8fd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a646350d4ca26f09d0d0bcf6f70a12042"><td class="memItemLeft" align="right" valign="top">BYTE&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a646350d4ca26f09d0d0bcf6f70a12042">gbFullScreen</a> = GDIFULLSCREEN</td></tr>
<tr class="separator:a646350d4ca26f09d0d0bcf6f70a12042"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02a2c81b683ba609809c23d59b662273"><td class="memItemLeft" align="right" valign="top">POINT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a02a2c81b683ba609809c23d59b662273">gptCursorFullScreen</a></td></tr>
<tr class="separator:a02a2c81b683ba609809c23d59b662273"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c0ed66b17009c8015022673ff5fcbdc"><td class="memItemLeft" align="right" valign="top">POINT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a5c0ed66b17009c8015022673ff5fcbdc">gptSSCursor</a></td></tr>
<tr class="separator:a5c0ed66b17009c8015022673ff5fcbdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a762f2fbf9a0ad4d9a63f7c92adce1297"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00689.html#a762f2fbf9a0ad4d9a63f7c92adce1297">bMultipleDisplaySystem</a></td></tr>
<tr class="separator:a762f2fbf9a0ad4d9a63f7c92adce1297"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">宏定义说明</h2>
<a id="a18707a2877a1444421decffc9e2efb3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18707a2877a1444421decffc9e2efb3e">&#9670;&nbsp;</a></span>NOSWITCHER</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define NOSWITCHER&#160;&#160;&#160;((HANDLE)-1)</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00047">47</a> 行定义.</p>
</div>
</div>
<h2 class="groupheader">函数说明</h2>
<a id="a2cf7d13f9206082622d1c7c42dd43e40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2cf7d13f9206082622d1c7c42dd43e40">&#9670;&nbsp;</a></span>FullScreenCleanup()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FullScreenCleanup </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00075">75</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;{</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> (PsGetCurrentThread()-&gt;Cid.UniqueThread == <a class="code" href="a00689.html#adaa7e2f08c4f1fb0e8161e249d62f909">idSwitcher</a>) {</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * correct the full screen state</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a00689.html#a387a17388d6fb6bc7ecd24bc5826427e">fGdiEnabled</a>) {</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullScreenCleanup: Gdi Enabled\n&quot;</span>));</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> * gdi is enabled, we are switching away from gdi the only thing we</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> * could have done so far is locking the screen so unlock it.</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="a03257.html#a2bbf28771d074083b01444a97409814e">gfLockFullScreen</a> = FALSE;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="a00860.html#a386f0678a4f1a1261f1cfd672696933a">xxxLockWindowUpdate2</a>(NULL, TRUE);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * GDI is not enabled . This means we were switching from a full</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * screen to another fullscreen or back to GDI. Or we could have</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * disabled gdi and sent a message to the new full screen which</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> * never got completed.</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> * In any case this probably means the fullscreen guy is gone so</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> * we will switch back to gdi.</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> * delete any left over saved screen state stuff</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> * set the fullscreen to nothing and then send a message that will</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> * cause us to switch back to the gdi desktop</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="a01881.html">TL</a> tlpwndT;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullScreenCleanup: Gdi Disabled\n&quot;</span>));</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; </div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; Unlock(&amp;<a class="code" href="a03257.html#a674cbbaf9c1c4e2ca63923ba1fadfae0">gspwndFullScreen</a>);</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="a00689.html#a646350d4ca26f09d0d0bcf6f70a12042">gbFullScreen</a> = FULLSCREEN;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="a00899.html#abfae1dfb48db23dcea4494f7990ad6a6">ThreadLock</a>(<a class="code" href="a03257.html#a326757fcfe334f2ffd59d64d4645d37a">grpdeskRitInput</a>-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>, &amp;tlpwndT);</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="a00842.html#a0035e456f12ef530c2b674cd1f6f8b36">xxxSendNotifyMessage</a>(</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="a03257.html#a326757fcfe334f2ffd59d64d4645d37a">grpdeskRitInput</a>-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>, WM_FULLSCREEN,</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; GDIFULLSCREEN, (LONG)HW(<a class="code" href="a03257.html#a326757fcfe334f2ffd59d64d4645d37a">grpdeskRitInput</a>-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>));</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; ThreadUnlock(&amp;tlpwndT);</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; </div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="a00689.html#adaa7e2f08c4f1fb0e8161e249d62f909">idSwitcher</a> = <a class="code" href="a00689.html#a18707a2877a1444421decffc9e2efb3e">NOSWITCHER</a>;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="a00689.html#ab4e036cf2cf3a3162fe3ee05da10c457">fRedoFullScreenSwitch</a> = FALSE;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00689_source.html#l00051">fGdiEnabled</a>, <a class="el" href="a00689_source.html#l00050">fRedoFullScreenSwitch</a>, <a class="el" href="a00689_source.html#l00053">gbFullScreen</a>, <a class="el" href="a03257_source.html#l00077">gfLockFullScreen</a>, <a class="el" href="a03257_source.html#l00187">grpdeskRitInput</a>, <a class="el" href="a03257_source.html#l00076">gspwndFullScreen</a>, <a class="el" href="a00689_source.html#l00049">idSwitcher</a>, <a class="el" href="a00689_source.html#l00047">NOSWITCHER</a>, <a class="el" href="a00899_source.html#l01706">tagDESKTOP::pDeskInfo</a>, <a class="el" href="a00365_source.html#l01603">tagDESKTOPINFO::spwnd</a>, <a class="el" href="a00899.html#abfae1dfb48db23dcea4494f7990ad6a6">ThreadLock()</a>, <a class="el" href="a00860_source.html#l00758">xxxLockWindowUpdate2()</a> , 以及 <a class="el" href="a00842_source.html#l00968">xxxSendNotifyMessage()</a>.</p>
<p class="reference">被这些函数引用 <a class="el" href="a03665_source.html#l02002">UserThreadCallout()</a>.</p>
</div>
</div>
<a id="a0a0005a4431f2cfd915cd4be346f80fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a0005a4431f2cfd915cd4be346f80fc">&#9670;&nbsp;</a></span>NtUserChangeDisplaySettings()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">LONG NtUserChangeDisplaySettings </td>
<td>(</td>
<td class="paramtype">IN PUNICODE_STRING&#160;</td>
<td class="paramname"><em>pstrDeviceName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">IN LPDEVMODEW&#160;</td>
<td class="paramname"><em>pDevMode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">IN HWND&#160;</td>
<td class="paramname"><em>hwnd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">IN <a class="el" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>&#160;</td>
<td class="paramname"><em>dwFlags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">IN PVOID&#160;</td>
<td class="paramname"><em>lParam</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l01060">1060</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;{</div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <a class="code" href="a02581.html">PWND</a> pwnd = NULL;</div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; LONG retval;</div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; </div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <a class="code" href="a00899.html#ae451a2dc8791c420d7c956a63adc33ba">EnterCrit</a>();</div>
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; </div>
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keywordflow">if</span> (hwnd) {</div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; </div>
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; pwnd = <a class="code" href="a00293.html#a41d387d1b2d42169cbaa2092c8a02abf">ValidateHwnd</a>(hwnd);</div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; </div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="keywordflow">if</span> (!pwnd) {</div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <a class="code" href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit</a>();</div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">return</span> DISP_CHANGE_BADPARAM;</div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; }</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; }</div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; </div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; retval = <a class="code" href="a00689.html#aca39fc0e877a9047585888e7790d20ed">UserChangeDisplaySettings</a>(pstrDeviceName,</div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; pDevMode,</div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; pwnd,</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; NULL,</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; dwFlags,</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; lParam,</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; FALSE);</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; </div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="code" href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit</a>();</div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordflow">return</span> retval;</div>
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; </div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00899.html#ae451a2dc8791c420d7c956a63adc33ba">EnterCrit()</a>, <a class="el" href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit()</a>, <a class="el" href="a00689_source.html#l01097">UserChangeDisplaySettings()</a> , 以及 <a class="el" href="a00293_source.html#l00090">ValidateHwnd</a>.</p>
<p class="reference">被这些函数引用 <a class="el" href="a00356_source.html#l01403">ChangeDisplaySettingsEx()</a>.</p>
</div>
</div>
<a id="aa405cfa528226b4bd1d09e0b731d36fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa405cfa528226b4bd1d09e0b731d36fa">&#9670;&nbsp;</a></span>NtUserFullscreenControl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">NTSTATUS NtUserFullscreenControl </td>
<td>(</td>
<td class="paramtype">IN FULLSCREENCONTROL&#160;</td>
<td class="paramname"><em>FullscreenCommand</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PVOID&#160;</td>
<td class="paramname"><em>FullscreenInput</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>&#160;</td>
<td class="paramname"><em>FullscreenInputLength</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PVOID&#160;</td>
<td class="paramname"><em>FullscreenOutput</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PULONG&#160;</td>
<td class="paramname"><em>FullscreenOutputLength</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00375">375</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;{</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; </div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; NTSTATUS Status = STATUS_SUCCESS;</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; </div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; ULONG BytesReturned;</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; PVOID pCapBuffer = NULL;</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; ULONG cCapBuffer = 0;</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; ULONG ioctl;</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; </div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="comment">// First validate the ioctl</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; </div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">switch</span>(FullscreenCommand) {</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; </div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">case</span> FullscreenControlEnable:</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; ioctl = IOCTL_VIDEO_ENABLE_VDM;</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlEnable\n&quot;</span>));</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; </div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">case</span> FullscreenControlDisable:</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; ioctl = IOCTL_VIDEO_DISABLE_VDM;</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlDisable\n&quot;</span>));</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; </div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">case</span> FullscreenControlSetCursorPosition:</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; ioctl = IOCTL_VIDEO_SET_CURSOR_POSITION;</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlSetCursorPosition\n&quot;</span>));</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; </div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">case</span> FullscreenControlSetCursorAttributes:</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; ioctl = IOCTL_VIDEO_SET_CURSOR_ATTR;</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlSetCursorAttributes\n&quot;</span>));</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; </div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">case</span> FullscreenControlRegisterVdm:</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; ioctl = IOCTL_VIDEO_REGISTER_VDM;</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlRegisterVdm\n&quot;</span>));</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; </div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">case</span> FullscreenControlSetPalette:</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; ioctl = IOCTL_VIDEO_SET_PALETTE_REGISTERS;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlSetPalette\n&quot;</span>));</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; </div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">case</span> FullscreenControlSetColors:</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; ioctl = IOCTL_VIDEO_SET_COLOR_REGISTERS;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlSetColors\n&quot;</span>));</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; </div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">case</span> FullscreenControlLoadFont:</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; ioctl = IOCTL_VIDEO_LOAD_AND_SET_FONT;</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlLoadFont\n&quot;</span>));</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; </div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">case</span> FullscreenControlRestoreHardwareState:</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; ioctl = IOCTL_VIDEO_RESTORE_HARDWARE_STATE;</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlRestoreHardwareState\n&quot;</span>));</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; </div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">case</span> FullscreenControlSaveHardwareState:</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; ioctl = IOCTL_VIDEO_SAVE_HARDWARE_STATE;</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlSaveHardwareState\n&quot;</span>));</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; </div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">case</span> FullscreenControlCopyFrameBuffer:</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">case</span> FullscreenControlReadFromFrameBuffer:</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">case</span> FullscreenControlWriteToFrameBuffer:</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">case</span> FullscreenControlReverseMousePointer:</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="comment">// TRACE_SWITCH((&quot;Switching: Fullscreen output command\n&quot;));</span></div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; ioctl = 0;</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; </div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">case</span> FullscreenControlSetMode:</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: Fullscreen setmode command\n&quot;</span>));</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; ioctl = 0;</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; </div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;NtUserFullscreenControl: invalid IOCTL\n&quot;</span>);</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> STATUS_NOT_IMPLEMENTED;</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; </div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="a00899.html#ae451a2dc8791c420d7c956a63adc33ba">EnterCrit</a>();</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; </div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="comment">// Check if the system is in a fullscreen state, where the IOCTL can</span></div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="comment">// be safely sent to the device, or the device memory can be</span></div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="comment">// manipulated.</span></div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; </div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">if</span> ((<a class="code" href="a00689.html#a387a17388d6fb6bc7ecd24bc5826427e">fGdiEnabled</a> == TRUE) &amp;&amp;</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; (FullscreenCommand != FullscreenControlRegisterVdm))</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;Fullscreen control - Not in fullscreen !\n&quot;</span>);</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit</a>();</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">return</span> STATUS_UNSUCCESSFUL;</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; }</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; </div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; </div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">// If this is a frame buffer function, that we can just deal with the</span></div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="comment">// device directly, and not send any IOCTL to the device.</span></div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; </div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (ioctl == 0)</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; {</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="comment">// First get the frame buffer pointer for the device.</span></div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; </div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; PUCHAR pFrameBuf = <a class="code" href="a03257.html#a786cd01671f99939368eaa4f602f2410">gpFullscreenFrameBufPtr</a>;</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; PCHAR_INFO pCharInfo;</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; </div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="a00953.html#aebb9e13210d88d43e32e735ada43a425">CHAR</a> Attribute;</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; </div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// Assume success for all these operations.</span></div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; </div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; Status = STATUS_SUCCESS;</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; </div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">switch</span>(FullscreenCommand) {</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; </div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">case</span> FullscreenControlSetMode:</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;<span class="preprocessor">#if 1</span></div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="comment">// BUGBUG temporary workaround to get Alt-Tab working.</span></div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; </div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; LPDEVMODEW pDevmode = <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a>;</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; VIDEO_MODE VideoMode;</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; BOOLEAN modeFound = FALSE;</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; ULONG BytesReturned;</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; ULONG i;</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; </div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="comment">// Fullscreen VGA modes require us to call the miniport driver</span></div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="comment">// directly.</span></div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="comment">// Lets check the VGA Device handle, which is in the first entry</span></div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; </div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].pDeviceHandle == NULL)</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; Status = STATUS_UNSUCCESSFUL;</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="comment">// NOTE We know that if there is a vgacompatible device, then</span></div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// there are some text modes for it.</span></div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// NOTE !!!</span></div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="comment">// As a hack, lets use the mode number we stored in the DEVMODE</span></div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// a field we don&#39;t use</span></div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; </div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">for</span> (i = 0;</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; i &lt; <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a>;</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; i += <span class="keyword">sizeof</span>(DEVMODEW), pDevmode += 1) {</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; </div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="comment">// !!! BUGBUG lpDevmode needs to be captured</span></div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; </div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">if</span> ((pDevmode-&gt;dmPelsWidth == ((LPDEVMODEW) FullscreenInput)-&gt;dmPelsWidth) &amp;&amp;</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; (pDevmode-&gt;dmPelsHeight == ((LPDEVMODEW) FullscreenInput)-&gt;dmPelsHeight))</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; {</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; VideoMode.RequestedMode = (ULONG) ((LPDEVMODEW) FullscreenInput)-&gt;dmOrientation;</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; modeFound = TRUE;</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; </div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (modeFound == FALSE)</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; {</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;ChangeDisplaySettings: Console [assed in bad DEVMODE\n&quot;</span>);</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; </div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; Status = STATUS_UNSUCCESSFUL;</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="comment">// We have the mode number.</span></div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">// Call the driver to set the mode</span></div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; </div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; Status = GreDeviceIoControl(<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].pDeviceHandle,</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; IOCTL_VIDEO_SET_CURRENT_MODE,</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; &amp;VideoMode,</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keyword">sizeof</span>(VideoMode),</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; NULL,</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; 0,</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; &amp;BytesReturned);</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; </div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">if</span> (NT_SUCCESS(Status))</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; {</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="comment">// We also map the memory so we can use it to</span></div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="comment">// process string commands from the console</span></div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; </div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; VIDEO_MEMORY FrameBufferMap;</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; VIDEO_MEMORY_INFORMATION FrameBufferInfo;</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; </div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; FrameBufferMap.RequestedVirtualAddress = NULL;</div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; </div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; Status = GreDeviceIoControl(<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].pDeviceHandle,</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; IOCTL_VIDEO_MAP_VIDEO_MEMORY,</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; &amp;FrameBufferMap,</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keyword">sizeof</span>(FrameBufferMap),</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; &amp;FrameBufferInfo,</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keyword">sizeof</span>(FrameBufferInfo),</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; &amp;BytesReturned);</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; </div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">if</span> (NT_SUCCESS(Status))</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; {</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="comment">// get address of frame buffer</span></div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; </div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="a03257.html#a786cd01671f99939368eaa4f602f2410">gpFullscreenFrameBufPtr</a> = (PUCHAR) FrameBufferInfo.FrameBufferBase;</div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; }</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; </div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;Fullscreen setmode: memory mapping failed\n&quot;</span>);</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; Status = STATUS_UNSUCCESSFUL;</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; }</div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; </div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; }</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; </div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;Fullscreen setmode: fullscreen MODESET failed\n&quot;</span>);</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; Status = STATUS_UNSUCCESSFUL;</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; }</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; }</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; </div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; }</div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; </div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">case</span> FullscreenControlCopyFrameBuffer:</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; </div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlCopyFrameBuffer\n&quot;</span>));</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; </div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(FullscreenInputLength == (<a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>) FullscreenOutputLength);</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; </div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; RtlMoveMemory(pFrameBuf + (ULONG)FullscreenOutput,</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; pFrameBuf + (ULONG)FullscreenInput,</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; FullscreenInputLength);</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; </div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; </div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">case</span> FullscreenControlReadFromFrameBuffer:</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; </div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlReadFromFrameBuffer\n&quot;</span>));</div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; </div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; pFrameBuf += (ULONG) FullscreenInput;</div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; pCharInfo = (PCHAR_INFO) FullscreenOutput;</div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; </div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(FullscreenInputLength * 2 == (ULONG) FullscreenOutputLength);</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; </div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">while</span> (FullscreenInputLength)</div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; pCharInfo-&gt;Char.AsciiChar = *pFrameBuf++;</div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; (UCHAR) (pCharInfo-&gt;Attributes) = *pFrameBuf++;</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; </div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; FullscreenInputLength -= 2;</div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; pCharInfo++;</div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; }</div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; </div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; </div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; </div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">case</span> FullscreenControlWriteToFrameBuffer:</div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; </div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="comment">// TRACE_SWITCH((&quot;Switching: FullscreenControlWriteToFrameBuffer\n&quot;));</span></div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; </div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; pFrameBuf += (ULONG) FullscreenOutput;</div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; pCharInfo = (PCHAR_INFO) FullscreenInput;</div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; </div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(FullscreenInputLength == (ULONG) FullscreenOutputLength * 2);</div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; </div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">while</span> ((ULONG)FullscreenOutputLength)</div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; {</div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; *pFrameBuf++ = pCharInfo-&gt;Char.AsciiChar;</div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; *pFrameBuf++ = (UCHAR) (pCharInfo-&gt;Attributes);</div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; </div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; ((ULONG)FullscreenOutputLength) -= 2;</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; pCharInfo++;</div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; }</div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; </div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; </div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">case</span> FullscreenControlReverseMousePointer:</div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; </div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControlReverseMousePointer\n&quot;</span>));</div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; </div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; pFrameBuf += (ULONG) FullscreenInput;</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; </div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; Attribute = (*(pFrameBuf + 1) &amp; 0xF0) &gt;&gt; 4;</div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; Attribute |= (*(pFrameBuf + 1) &amp; 0x0F) &lt;&lt; 4;</div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; *(pFrameBuf + 1) = Attribute;</div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; </div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; </div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; }</div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; {</div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="comment">// For all real operations, check the output buffer parameters</span></div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; </div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">if</span> ((FullscreenOutput == NULL) != (FullscreenOutputLength == NULL))</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; {</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;Fullscreen control - inconsistent output buffer information\n&quot;</span>);</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; Status = STATUS_INVALID_PARAMETER_4;</div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; {</div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="comment">// We must now capture the buffers so they can be safely passed down to the</span></div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="comment">// video miniport driver</span></div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; </div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; cCapBuffer = FullscreenInputLength;</div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; </div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span> (FullscreenOutputLength)</div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; {</div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; cCapBuffer = max(cCapBuffer,*FullscreenOutputLength);</div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; }</div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; </div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">if</span> (cCapBuffer)</div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; {</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; pCapBuffer = UserAllocPoolWithQuota(cCapBuffer, TAG_FULLSCREEN);</div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; </div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; {</div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; ProbeForRead(FullscreenInput, FullscreenInputLength, <span class="keyword">sizeof</span>(UCHAR));</div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; RtlCopyMemory(pCapBuffer, FullscreenInput, FullscreenInputLength);</div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; except (EXCEPTION_EXECUTE_HANDLER)</div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {</div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;Fullscreen control - error processing input buffer\n&quot;</span>);</div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; </div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="comment">// For now, the IOCTL will always be sent to the VGA compatible device.</span></div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="comment">// We have a global for the handle to this device.</span></div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; </div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; Status = GreDeviceIoControl(<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].pDeviceHandle,</div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; ioctl,</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; pCapBuffer,</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; cCapBuffer,</div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; pCapBuffer,</div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; cCapBuffer,</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; &amp;BytesReturned);</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; </div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: FullscreenControl: IOCTL status is %08lx\n&quot;</span>,</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; Status));</div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; </div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">if</span> (cCapBuffer &amp;&amp; FullscreenOutputLength &amp;&amp; NT_SUCCESS(Status))</div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; {</div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; {</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; *FullscreenOutputLength = BytesReturned;</div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; </div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; ProbeForWrite(FullscreenOutput, *FullscreenOutputLength, <span class="keyword">sizeof</span>(UCHAR));</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; RtlCopyMemory(FullscreenOutput, pCapBuffer, *FullscreenOutputLength);</div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; }</div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; except (EXCEPTION_EXECUTE_HANDLER)</div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; {</div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;Fullscreen control - error processing output buffer\n&quot;</span>);</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; }</div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; }</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; </div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span> (pCapBuffer)</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; {</div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; UserFreePool(pCapBuffer);</div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; }</div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; }</div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; </div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <a class="code" href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit</a>();</div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; </div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">return</span> (Status);</div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00365_source.html#l01552">tagPHYSICAL_DEV_INFO::cbdevmodeInfo</a>, <a class="el" href="a00365_source.html#l01553">tagPHYSICAL_DEV_INFO::devmodeInfo</a>, <a class="el" href="a00563_source.html#l00175">DWORD</a>, <a class="el" href="a00899.html#ae451a2dc8791c420d7c956a63adc33ba">EnterCrit()</a>, <a class="el" href="a00689_source.html#l00051">fGdiEnabled</a>, <a class="el" href="a03257_source.html#l00079">gpFullscreenFrameBufPtr</a>, <a class="el" href="a03257_source.html#l00095">gphysDevInfo</a>, <a class="el" href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit()</a>, <a class="el" href="a00371_source.html#l00028">RIP_ERROR</a>, <a class="el" href="a00371_source.html#l00131">RIPMSG0</a> , 以及 <a class="el" href="a00950_source.html#l00117">UserAssert</a>.</p>
</div>
</div>
<a id="ac54f401520871421830eeed1d34dd321"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac54f401520871421830eeed1d34dd321">&#9670;&nbsp;</a></span>ResetDisplayDevice()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VOID ResetDisplayDevice </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00365.html#a07e239ec4a8e696c787df685bce70b61">PDESKTOP</a>&#160;</td>
<td class="paramname"><em>pdesk</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00365.html#ab392d2a1a1f08851fa36fb5af594de27">PDISPLAYINFO</a>&#160;</td>
<td class="paramname"><em>pDI</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>&#160;</td>
<td class="paramname"><em>CDS_Flags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00884">884</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;{</div>
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; RECT rcOldWork;</div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; RECT rcOldScreen;</div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; WORD wOldBpp;</div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; </div>
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;<span class="comment"> * Save old dimenstions for use in calculating the new work areas.</span></div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="a00935.html#a31ccccdb469eefbb55d18b71a26af0da">CopyRect</a>(&amp;rcOldScreen, &amp;pDI-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>);</div>
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <a class="code" href="a00935.html#a31ccccdb469eefbb55d18b71a26af0da">CopyRect</a>(&amp;rcOldWork, &amp;<a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#ad47c3c3836f1cb6cfb9ee4dd5d344496">rcWork</a>);</div>
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; </div>
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;<span class="comment"> * Initialize the new rectangle dimensions.</span></div>
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <a class="code" href="a00935.html#a479bbe69c871894f6ca23dfa237481ad">SetRect</a>(&amp;pDI-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>,</div>
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; 0,</div>
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; 0,</div>
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; GreGetDeviceCaps(pDI-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, DESKTOPHORZRES),</div>
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; GreGetDeviceCaps(pDI-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, DESKTOPVERTRES));</div>
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; </div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <a class="code" href="a00935.html#a479bbe69c871894f6ca23dfa237481ad">SetRect</a>(&amp;pDI-&gt;<a class="code" href="a02605.html#a7ae1e4da76ad52e90f87fe39f43b2c4f">rcPrimaryScreen</a>,</div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; 0,</div>
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; 0,</div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; GreGetDeviceCaps(pDI-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, HORZRES),</div>
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; GreGetDeviceCaps(pDI-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, VERTRES));</div>
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; </div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;<span class="comment"> * Initialize the desktop work area. Currently this is using the</span></div>
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;<span class="comment"> * global gpsi. Future implementation will be off the desktop.</span></div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#ad47c3c3836f1cb6cfb9ee4dd5d344496">rcWork</a>.left = rcOldWork.left;</div>
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#ad47c3c3836f1cb6cfb9ee4dd5d344496">rcWork</a>.top = rcOldWork.top;</div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#ad47c3c3836f1cb6cfb9ee4dd5d344496">rcWork</a>.right = pDI-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.right - (rcOldScreen.right - rcOldWork.right);</div>
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#ad47c3c3836f1cb6cfb9ee4dd5d344496">rcWork</a>.bottom = pDI-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.bottom - (rcOldScreen.bottom - rcOldWork.bottom);</div>
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; </div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;<span class="comment"> * Reset palettized flag.</span></div>
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#af5b9904727246903b73027a6008559db">fPaletteDisplay</a> =</div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; GreGetDeviceCaps(pDI-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, RASTERCAPS) &amp; RC_PALETTE;</div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; </div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;<span class="comment"> * Reset color depth.</span></div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; wOldBpp = oemInfo.BitCount;</div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; </div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; oemInfo.Planes = GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, PLANES);</div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; oemInfo.BitsPixel = GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, BITSPIXEL);</div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; oemInfo.BitCount = oemInfo.Planes * oemInfo.BitsPixel;</div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; </div>
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;<span class="comment"> * Reset the dimenstions of the displayinfo.</span></div>
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; pDI-&gt;<a class="code" href="a02605.html#ad3e0b5376b5114f4269df20805a3a85e">cxPixelsPerInch</a> = GreGetDeviceCaps(pDI-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, LOGPIXELSX);</div>
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; pDI-&gt;<a class="code" href="a02605.html#a2458aa3b22e3415ba05fc9fba634628d">cyPixelsPerInch</a> = GreGetDeviceCaps(pDI-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, LOGPIXELSY);</div>
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; </div>
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;<span class="comment"> * Set the desktop-metrics stuff--working area.</span></div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <a class="code" href="a00827.html#a4772e1acd6cc80e53926db81c089b5f0">SetDesktopMetrics</a>();</div>
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; </div>
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; SYSMET(CXSCREEN) = pDI-&gt;<a class="code" href="a02605.html#a7ae1e4da76ad52e90f87fe39f43b2c4f">rcPrimaryScreen</a>.right - pDI-&gt;<a class="code" href="a02605.html#a7ae1e4da76ad52e90f87fe39f43b2c4f">rcPrimaryScreen</a>.left;</div>
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; SYSMET(CYSCREEN) = pDI-&gt;<a class="code" href="a02605.html#a7ae1e4da76ad52e90f87fe39f43b2c4f">rcPrimaryScreen</a>.bottom - pDI-&gt;<a class="code" href="a02605.html#a7ae1e4da76ad52e90f87fe39f43b2c4f">rcPrimaryScreen</a>.top;</div>
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; SYSMET(CXMAXTRACK) = SYSMET(CXSCREEN) + (2 * (SYSMET(CXSIZEFRAME) + SYSMET(CXEDGE)));</div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; SYSMET(CYMAXTRACK) = SYSMET(CYSCREEN) + (2 * (SYSMET(CYSIZEFRAME) + SYSMET(CYEDGE)));</div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; </div>
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;<span class="comment"> * Reset magic colors.</span></div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <a class="code" href="a00878.html#a384da50d789f362913ef53df4495b559">SetSysColor</a>(COLOR_3DSHADOW , SYSRGB(3DSHADOW) , SSCF_SETMAGICCOLORS | SSCF_FORCESOLIDCOLOR);</div>
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <a class="code" href="a00878.html#a384da50d789f362913ef53df4495b559">SetSysColor</a>(COLOR_3DFACE , SYSRGB(3DFACE) , SSCF_SETMAGICCOLORS | SSCF_FORCESOLIDCOLOR);</div>
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <a class="code" href="a00878.html#a384da50d789f362913ef53df4495b559">SetSysColor</a>(COLOR_3DHIGHLIGHT, SYSRGB(3DHIGHLIGHT), SSCF_SETMAGICCOLORS | SSCF_FORCESOLIDCOLOR);</div>
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; </div>
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;<span class="comment"> * Resize all the desktops which share this DISPINFO.</span></div>
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <a class="code" href="a00689.html#a5fba44a86c81b63bd0bea2c0c3542fc8">ResetSharedDesktops</a>(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>, pdesk, &amp;rcOldWork, CDS_Flags);</div>
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; </div>
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; </div>
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a03257.html#a6fd7fff34b763d3027988693d59a76be">ghbmCaption</a>) {</div>
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; GreDeleteObject(<a class="code" href="a03257.html#a6fd7fff34b763d3027988693d59a76be">ghbmCaption</a>);</div>
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <a class="code" href="a03257.html#a6fd7fff34b763d3027988693d59a76be">ghbmCaption</a> = <a class="code" href="a00716.html#a9f946e068766974e04aa7c9e7dea8303">CreateCaptionStrip</a>();</div>
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; }</div>
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; </div>
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;<span class="comment"> * Change the wallpaper metrics.</span></div>
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a03257.html#a15ad49dc77573af8b63b532b82d05cbc">ghbmWallpaper</a>)</div>
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <a class="code" href="a00668.html#a68e971c3810a7065f5aba4d5ee40a8f1">xxxSetDeskWallpaper</a>(SETWALLPAPER_METRICS);</div>
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; </div>
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <a class="code" href="a00638.html#ac0816c73ec6cd096ee9436e038337f80">_ClipCursor</a>(&amp;pDI-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>);</div>
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; </div>
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;<span class="comment"> * Invalidate all DCE&#39;s visrgns.</span></div>
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <a class="code" href="a00644.html#a69728f013275d0f4332dded4eb2432a3">InvalidateDCCache</a>(pdesk-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>, 0);</div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; </div>
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;<span class="preprocessor">#ifdef LATER // Maybe Never</span></div>
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;<span class="comment"> * Flush icons and cursors and more metric stuff.</span></div>
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160;<span class="comment"> * We may never want to do this, since we do ChangeDisplaySettings</span></div>
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;<span class="comment"> * across desktop-switches and console-fullscreen modes. By calling</span></div>
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;<span class="comment"> * the metric changes, we would be forcing desktop-attribute settings</span></div>
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;<span class="comment"> * to change to the default (from win.ini). It looks much nicer to</span></div>
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;<span class="comment"> * allow this to be preserved across switches.</span></div>
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <a class="code" href="a00716.html#aa84edae0e7919ca4f55d198b201a3e5a">SetWindowNCMetrics</a>(NULL, TRUE, -1);</div>
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <a class="code" href="a00716.html#a0df9d021542718987a45d43d815c161c">SetMinMetrics</a>(NULL);</div>
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; </div>
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <a class="code" href="a00716.html#acd52966f6d457f68619ccb6006e4fccf">SetIconMetrics</a>(NULL);</div>
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <a class="code" href="a00719.html#aa6a4ca775f97490e22f8ecac65cdc03f">UpdateSystemCursorsFromRegistry</a>();</div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <a class="code" href="a00719.html#a8e2c487045938ea775827e2d2e5bca69">UpdateSystemIconsFromRegistry</a>();</div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; </div>
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; </div>
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;<span class="comment"> * Broadcast that the display has changed resolution. We are going</span></div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;<span class="comment"> * to specify the desktop for the changing-desktop. That way we</span></div>
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;<span class="comment"> * don&#39;t get confused as to what desktop to broadcast to.</span></div>
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <a class="code" href="a00842.html#adb5204decd255d5005372b2c12890113">xxxBroadcastMessage</a>(pdesk-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>,</div>
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; WM_DISPLAYCHANGE,</div>
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; oemInfo.BitCount,</div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; MAKELONG(SYSMET(CXSCREEN), SYSMET(CYSCREEN)),</div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; BMSG_SENDNOTIFYMSG,</div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; NULL);</div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; </div>
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;<span class="comment"> * Broadcast a color-change if we were not in fullscreen, and a</span></div>
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;<span class="comment"> * color-change took effect.</span></div>
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordflow">if</span> (!(CDS_Flags &amp; CDS_FULLSCREEN) &amp;&amp; (oemInfo.BitCount != wOldBpp)) {</div>
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; </div>
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;<span class="preprocessor">#if 1 // We might want to remove this call, since color-change seems</span></div>
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="comment">// to provide apps the notification. Need to review</span></div>
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <span class="comment">// chriswil - 06/11/96</span></div>
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; </div>
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <a class="code" href="a00842.html#adb5204decd255d5005372b2c12890113">xxxBroadcastMessage</a>(pdesk-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>,</div>
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; WM_SETTINGCHANGE,</div>
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; 0,</div>
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; 0,</div>
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; BMSG_SENDNOTIFYMSG,</div>
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; NULL);</div>
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; </div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <a class="code" href="a00842.html#adb5204decd255d5005372b2c12890113">xxxBroadcastMessage</a>(pdesk-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>,</div>
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; WM_SYSCOLORCHANGE,</div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; 0,</div>
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; 0,</div>
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; BMSG_SENDNOTIFYMSG,</div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; NULL);</div>
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; }</div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; </div>
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;<span class="comment"> * If the user performed a CTL-ESC, it is possible that the</span></div>
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;<span class="comment"> * tray-window is then in the menu-loop. We want to clear this</span></div>
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;<span class="comment"> * out so that we don&#39;t leave improper menu positioning.</span></div>
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a03257.html#a01d6b23c241a057b5e276bc3095a01eb">gpqForeground</a> &amp;&amp; <a class="code" href="a03257.html#a01d6b23c241a057b5e276bc3095a01eb">gpqForeground</a>-&gt;<a class="code" href="a02869.html#a50df387cc5ba51033fb9e767c430f72f">spwndCapture</a>)</div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <a class="code" href="a00842.html#a4a4a6ef58238afeb2930d10ed87d2853">QueueNotifyMessage</a>(<a class="code" href="a03257.html#a01d6b23c241a057b5e276bc3095a01eb">gpqForeground</a>-&gt;<a class="code" href="a02869.html#a50df387cc5ba51033fb9e767c430f72f">spwndCapture</a>, WM_CANCELMODE, 0, 0l);</div>
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00638_source.html#l00205">_ClipCursor()</a>, <a class="el" href="a00935_source.html#l00391">CopyRect()</a>, <a class="el" href="a00716_source.html#l00442">CreateCaptionStrip()</a>, <a class="el" href="a00365_source.html#l01580">tagDISPLAYINFO::cxPixelsPerInch</a>, <a class="el" href="a00365_source.html#l01581">tagDISPLAYINFO::cyPixelsPerInch</a>, <a class="el" href="a00365_source.html#l00993">tagSERVERINFO::fPaletteDisplay</a>, <a class="el" href="a03257_source.html#l00329">ghbmCaption</a>, <a class="el" href="a03257_source.html#l00026">ghbmWallpaper</a>, <a class="el" href="a03257_source.html#l00125">gpDispInfo</a>, <a class="el" href="a03257_source.html#l00133">gpqForeground</a>, <a class="el" href="a00020_source.html#l00039">gpsi</a>, <a class="el" href="a00365_source.html#l01566">tagDISPLAYINFO::hdcScreen</a>, <a class="el" href="a00644_source.html#l01644">InvalidateDCCache()</a>, <a class="el" href="a00899_source.html#l01706">tagDESKTOP::pDeskInfo</a>, <a class="el" href="a00842_source.html#l00888">QueueNotifyMessage()</a>, <a class="el" href="a00365_source.html#l01571">tagDISPLAYINFO::rcPrimaryScreen</a>, <a class="el" href="a00365_source.html#l01570">tagDISPLAYINFO::rcScreen</a>, <a class="el" href="a00365_source.html#l01007">tagSERVERINFO::rcWork</a>, <a class="el" href="a00689_source.html#l00793">ResetSharedDesktops()</a>, <a class="el" href="a00827_source.html#l00144">SetDesktopMetrics()</a>, <a class="el" href="a00716_source.html#l01096">SetIconMetrics()</a>, <a class="el" href="a00716_source.html#l01053">SetMinMetrics()</a>, <a class="el" href="a00935_source.html#l00021">SetRect()</a>, <a class="el" href="a00878_source.html#l00097">SetSysColor()</a>, <a class="el" href="a00716_source.html#l00970">SetWindowNCMetrics()</a>, <a class="el" href="a00365_source.html#l01603">tagDESKTOPINFO::spwnd</a>, <a class="el" href="a00899_source.html#l02166">tagQ::spwndCapture</a>, <a class="el" href="a00719_source.html#l00899">UpdateSystemCursorsFromRegistry()</a>, <a class="el" href="a00719_source.html#l00955">UpdateSystemIconsFromRegistry()</a>, <a class="el" href="a00842_source.html#l02898">xxxBroadcastMessage()</a> , 以及 <a class="el" href="a00668_source.html#l01094">xxxSetDeskWallpaper()</a>.</p>
<p class="reference">被这些函数引用 <a class="el" href="a00689_source.html#l01097">UserChangeDisplaySettings()</a>.</p>
</div>
</div>
<a id="a5fba44a86c81b63bd0bea2c0c3542fc8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5fba44a86c81b63bd0bea2c0c3542fc8">&#9670;&nbsp;</a></span>ResetSharedDesktops()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VOID ResetSharedDesktops </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00365.html#ab392d2a1a1f08851fa36fb5af594de27">PDISPLAYINFO</a>&#160;</td>
<td class="paramname"><em>pDIChanged</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00365.html#a07e239ec4a8e696c787df685bce70b61">PDESKTOP</a>&#160;</td>
<td class="paramname"><em>pdeskChanged</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">LPRECT&#160;</td>
<td class="paramname"><em>lprOldWork</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>&#160;</td>
<td class="paramname"><em>CDS_Flags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00793">793</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;{</div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <a class="code" href="a02809.html">PWINDOWSTATION</a> pwinsta = <a class="code" href="a00899.html#a792b9004a4d313da382f9a9fd8b5c1aa">_GetProcessWindowStation</a>(NULL);</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <a class="code" href="a02801.html">PDESKTOP</a> pdesk;</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a> xNew;</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a> yNew;</div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; HRGN hrgn;</div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; </div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">if</span> (pwinsta == NULL) {</div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; </div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;ResetSharedDesktops - NULL window station !\n&quot;</span>));</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; }</div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; </div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">for</span> (pdesk = pwinsta-&gt;<a class="code" href="a02809.html#aafbda282c78d875d4491cf817366dc1b">rpdeskList</a>; pdesk; pdesk = pdesk-&gt;<a class="code" href="a02801.html#ace92d08d0736aef3f0b73273a6e3e5f7">rpdeskNext</a>) {</div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; </div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;<span class="comment"> * Make sure this is a shared DISPINFO.</span></div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">if</span> (pdesk-&gt;<a class="code" href="a02801.html#a7865078d53afb2719414b44d87f75c5d">pDispInfo</a> == pDIChanged) {</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; </div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;<span class="preprocessor">#if 0</span></div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;<span class="comment"> * This is the preferable method to set the desktop-window.</span></div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;<span class="comment"> * However, this causes synchronization problems where we</span></div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;<span class="comment"> * leave the critical-section allowing other apps to call</span></div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;<span class="comment"> * ChangeDisplaySettings() and thus mucking up the works.</span></div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;<span class="comment"> * By calculating the vis-rgn ourselves, we can assure that</span></div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;<span class="comment"> * the clipping is current for the desktop even when we leave</span></div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;<span class="comment"> * the section.</span></div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; {</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <a class="code" href="a01881.html">TL</a> tlpwnd;</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; </div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; ThreadLockAlways(pdesk-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>, &amp;tlpwnd);</div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="a00872.html#a71170c4c5e4c60d4bc657fe52eb8d8d2">xxxSetWindowPos</a>(pdesk-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>,</div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; PWND_TOP,</div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; pDIChanged-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.left,</div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; pDIChanged-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.top,</div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; pDIChanged-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.right - pDIChanged-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.left,</div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; pDIChanged-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.bottom - pDIChanged-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.top,</div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; SWP_NOZORDER | SWP_NOACTIVATE);</div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; ThreadUnlock(&amp;tlpwnd);</div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; }</div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="code" href="a00935.html#a31ccccdb469eefbb55d18b71a26af0da">CopyRect</a>(&amp;pdesk-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>-&gt;<a class="code" href="a02581.html#a2778d611c2b27395e559c94d05732e1f">rcWindow</a>, &amp;pDIChanged-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>);</div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="a00935.html#a31ccccdb469eefbb55d18b71a26af0da">CopyRect</a>(&amp;pdesk-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>-&gt;<a class="code" href="a02581.html#a17d59d04094aef8b577c0aa781cdf2c6">rcClient</a>, &amp;pDIChanged-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>);</div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; </div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">if</span> (!(CDS_Flags &amp; CDS_FULLSCREEN))</div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <a class="code" href="a00827.html#a3f3a74ea22ded68444f3404548b94874">DesktopRecalc</a>(lprOldWork, &amp;<a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#ad47c3c3836f1cb6cfb9ee4dd5d344496">rcWork</a>, FALSE);</div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; </div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;<span class="comment"> * Position mouse so that it is within the new visrgn, once we</span></div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160;<span class="comment"> * recalc it.</span></div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; xNew = (pDIChanged-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.right - pDIChanged-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.left) &gt;&gt; 1;</div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; yNew = (pDIChanged-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.bottom - pDIChanged-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.top) &gt;&gt; 1;</div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; </div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <a class="code" href="a00638.html#a3b1dddef2c0ab8276c2cce2733ced1d9">InternalSetCursorPos</a>(xNew, yNew, pdesk);</div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; }</div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; }</div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; </div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;<span class="comment"> * Recalc the desktop visrgn. Since the hdcScreen is shared amoungts</span></div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;<span class="comment"> * all the</span></div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; hrgn = GreCreateRectRgn(0, 0, 0, 0);</div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; </div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <a class="code" href="a00899.html#ab5b6a53d2b84dedad66b13f7f4b8c035">CalcVisRgn</a>(&amp;hrgn,</div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; pdeskChanged-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>,</div>
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; pdeskChanged-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>,</div>
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; DCX_WINDOW);</div>
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; </div>
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; GreSelectVisRgn(pDIChanged-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, hrgn, NULL, SVR_DELETEOLD);</div>
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; </div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00920_source.html#l00891">_GetProcessWindowStation()</a>, <a class="el" href="a00905_source.html#l00441">CalcVisRgn()</a>, <a class="el" href="a00935_source.html#l00391">CopyRect()</a>, <a class="el" href="a00827_source.html#l00344">DesktopRecalc()</a>, <a class="el" href="a00020_source.html#l00039">gpsi</a>, <a class="el" href="a00365_source.html#l01566">tagDISPLAYINFO::hdcScreen</a>, <a class="el" href="a00638_source.html#l00110">InternalSetCursorPos()</a>, <a class="el" href="a00899_source.html#l01706">tagDESKTOP::pDeskInfo</a>, <a class="el" href="a00899_source.html#l01707">tagDESKTOP::pDispInfo</a>, <a class="el" href="a00365_source.html#l01399">tagWND::rcClient</a>, <a class="el" href="a00365_source.html#l01570">tagDISPLAYINFO::rcScreen</a>, <a class="el" href="a00365_source.html#l01398">tagWND::rcWindow</a>, <a class="el" href="a00365_source.html#l01007">tagSERVERINFO::rcWork</a>, <a class="el" href="a00899_source.html#l01746">tagWINDOWSTATION::rpdeskList</a>, <a class="el" href="a00899_source.html#l01709">tagDESKTOP::rpdeskNext</a>, <a class="el" href="a00365_source.html#l01603">tagDESKTOPINFO::spwnd</a>, <a class="el" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT()</a> , 以及 <a class="el" href="a00872_source.html#l01169">xxxSetWindowPos()</a>.</p>
<p class="reference">被这些函数引用 <a class="el" href="a00689_source.html#l00884">ResetDisplayDevice()</a>.</p>
</div>
</div>
<a id="a317b5986c94a0fe6aec5cd38123cf2a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a317b5986c94a0fe6aec5cd38123cf2a3">&#9670;&nbsp;</a></span>SetVDMCursorBounds()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SetVDMCursorBounds </td>
<td>(</td>
<td class="paramtype">LPRECT&#160;</td>
<td class="paramname"><em>lprc</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00638_source.html">cursor.c</a> 第 <a class="el" href="a00638_source.html#l00357">357</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;{</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span> (lprc != NULL) {</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; </div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> * Set grcVDMCursorBounds before gfVDMBoundsActive, because</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment"> * MoveEvent() calls BoundCursor() from outside the USER CritSect!</span></div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="a00638.html#a79ebb837219045b09dfd497a1ee41e58">grcVDMCursorBounds</a> = *lprc;</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="a00638.html#a3dcfb2116a84b0aad0f519d7fdfc4610">gfVDMBoundsActive</a> = TRUE;</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; </div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; </div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment"> * Turn vdm bounds off.</span></div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="a00638.html#a3dcfb2116a84b0aad0f519d7fdfc4610">gfVDMBoundsActive</a> = FALSE;</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">被这些函数引用 <a class="el" href="a00689_source.html#l00140">xxxMakeWindowForegroundWithState()</a>.</p>
</div>
</div>
<a id="aca39fc0e877a9047585888e7790d20ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca39fc0e877a9047585888e7790d20ed">&#9670;&nbsp;</a></span>UserChangeDisplaySettings()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">LONG UserChangeDisplaySettings </td>
<td>(</td>
<td class="paramtype">IN PUNICODE_STRING&#160;</td>
<td class="paramname"><em>pstrDeviceName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">IN LPDEVMODEW&#160;</td>
<td class="paramname"><em>pDevMode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">IN <a class="el" href="a00365.html#a1a2ef1c363aa0787a8f8a7dde2a34aaf">PWND</a>&#160;</td>
<td class="paramname"><em>pwnd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">IN <a class="el" href="a00365.html#a07e239ec4a8e696c787df685bce70b61">PDESKTOP</a>&#160;</td>
<td class="paramname"><em>pdesk</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">IN <a class="el" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>&#160;</td>
<td class="paramname"><em>dwFlags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">IN PVOID&#160;</td>
<td class="paramname"><em>lParam</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">IN BOOL&#160;</td>
<td class="paramname"><em>bKernelMode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l01097">1097</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;{</div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; NTSTATUS ntStatus;</div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; UNICODE_STRING strDevice;</div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; UNICODE_STRING us;</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; PDEVMODEW pCaptDevmode = NULL;</div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; LONG status = DISP_CHANGE_SUCCESSFUL;</div>
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <a class="code" href="a01881.html">TL</a> tlpwnd;</div>
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; BOOL bTestMode;</div>
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; BOOL bCurrentDevice = FALSE;</div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; BOOL bExclusiveDevice = FALSE;</div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; RECT rect;</div>
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; PRECT prect = NULL;</div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a> physdevinfo;</div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; </div>
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; HANDLE hkRegistry;</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; OBJECT_ATTRIBUTES ObjectAttributes;</div>
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; UNICODE_STRING UnicodeString;</div>
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; ULONG disableAll;</div>
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; ULONG defaultValue = 0;</div>
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; </div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; RTL_QUERY_REGISTRY_TABLE QueryTable[] = {</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; {NULL, RTL_QUERY_REGISTRY_DIRECT, L<span class="stringliteral">&quot;DisableAll&quot;</span>, &amp;disableAll,</div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; REG_DWORD, &amp;defaultValue, 4},</div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; {NULL, 0, NULL}</div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; };</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; </div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; </div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; TRACE_INIT((<span class="stringliteral">&quot;ChangeDisplaySettings - Entering\n&quot;</span>));</div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;ChangeDisplaySettings - Entering\n&quot;</span>));</div>
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; </div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; Flags -&quot;</span>));</div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; </div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; CDS_UPDATEREGISTRY) TRACE_INIT((<span class="stringliteral">&quot; CDS_UPDATEREGISTRY&quot;</span>));</div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; CDS_TEST ) TRACE_INIT((<span class="stringliteral">&quot; CDS_TEST &quot;</span>));</div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; CDS_FULLSCREEN ) TRACE_INIT((<span class="stringliteral">&quot; CDS_FULLSCREEN &quot;</span>));</div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; CDS_GLOBAL ) TRACE_INIT((<span class="stringliteral">&quot; CDS_GLOBAL &quot;</span>));</div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; CDS_SET_PRIMARY ) TRACE_INIT((<span class="stringliteral">&quot; CDS_SET_PRIMARY &quot;</span>));</div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; CDS_RESET ) TRACE_INIT((<span class="stringliteral">&quot; CDS_RESET &quot;</span>));</div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; CDS_SETRECT ) TRACE_INIT((<span class="stringliteral">&quot; CDS_SETRECT &quot;</span>));</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; CDS_NORESET ) TRACE_INIT((<span class="stringliteral">&quot; CDS_NORESET &quot;</span>));</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; </div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; TRACE_INIT((<span class="stringliteral">&quot;\n&quot;</span>));</div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; pDevMode %08lx\n&quot;</span>, pDevMode));</div>
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; </div>
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keywordflow">if</span> (pDevMode) {</div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; </div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; Size = %d\n&quot;</span>, pDevMode-&gt;dmSize));</div>
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; Fields = %08lx\n&quot;</span>, pDevMode-&gt;dmFields));</div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; XResolution = %d\n&quot;</span>, pDevMode-&gt;dmPelsWidth));</div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; YResolution = %d\n&quot;</span>, pDevMode-&gt;dmPelsHeight));</div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; Bpp = %d\n&quot;</span>, pDevMode-&gt;dmBitsPerPel));</div>
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; Frequency = %d\n&quot;</span>, pDevMode-&gt;dmDisplayFrequency));</div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; Flags = %d\n&quot;</span>, pDevMode-&gt;dmDisplayFlags));</div>
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; XPanning = %d\n&quot;</span>, pDevMode-&gt;dmPanningWidth));</div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; YPanning = %d\n&quot;</span>, pDevMode-&gt;dmPanningHeight));</div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; DPI = %d\n&quot;</span>, pDevMode-&gt;dmLogPixels));</div>
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; DriverExtra = %d&quot;</span>, pDevMode-&gt;dmDriverExtra));</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">if</span> (pDevMode-&gt;dmDriverExtra) {</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; TRACE_INIT((<span class="stringliteral">&quot; - %08lx %08lx\n&quot;</span>,</div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; *(PULONG)(((PUCHAR)pDevMode)+pDevMode-&gt;dmSize),</div>
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; *(PULONG)(((PUCHAR)pDevMode)+pDevMode-&gt;dmSize + 4)));</div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; TRACE_INIT((<span class="stringliteral">&quot;\n&quot;</span>));</div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; }</div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; }</div>
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; </div>
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;<span class="comment"> * Determine if we are in the test mode of the API</span></div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; </div>
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; bTestMode = dwFlags &amp; CDS_TEST;</div>
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; dwFlags &amp;= ~CDS_TEST;</div>
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; </div>
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;<span class="comment"> * Perform Error Checking to verify flag combinations are valid.</span></div>
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; (~CDS_VALID)) {</div>
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; </div>
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;ChangeDisplaySettings: invalid flags specified\n&quot;</span>);</div>
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="keywordflow">return</span> DISP_CHANGE_BADFLAGS;</div>
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; }</div>
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; </div>
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;<span class="comment"> * CDS_GLOBAL and CDS_NORESET can only be specified if UPDAREREGISTRY</span></div>
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;<span class="comment"> * is specified.</span></div>
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; </div>
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keywordflow">if</span> ( (dwFlags &amp; (CDS_GLOBAL | CDS_NORESET)) &amp;&amp;</div>
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; (!(dwFlags &amp; CDS_UPDATEREGISTRY))) {</div>
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; </div>
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;ChangeDisplaySettings: invalid registry flags specified\n&quot;</span>);</div>
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <span class="keywordflow">return</span> DISP_CHANGE_BADFLAGS;</div>
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; }</div>
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; </div>
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keywordflow">if</span> ( (dwFlags &amp; CDS_NORESET) &amp;&amp;</div>
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; (dwFlags &amp; CDS_RESET)) {</div>
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; </div>
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;ChangeDisplaySettings: RESET and NORESET can not be put together\n&quot;</span>);</div>
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <span class="keywordflow">return</span> DISP_CHANGE_BADFLAGS;</div>
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; }</div>
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; </div>
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; <span class="keywordflow">if</span> ((dwFlags &amp; CDS_EXCLUSIVE) &amp;&amp; (dwFlags &amp; CDS_FULLSCREEN) &amp;&amp; (dwFlags &amp; CDS_RESET)) {</div>
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; </div>
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;ChangeDisplaySettings: invalid flags specified\n&quot;</span>);</div>
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; <span class="keywordflow">return</span> DISP_CHANGE_BADFLAGS;</div>
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; }</div>
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; </div>
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <span class="keywordflow">if</span> (lParam &amp;&amp; (!(dwFlags &amp; CDS_SETRECT))) {</div>
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">return</span> DISP_CHANGE_BADPARAM;</div>
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; }</div>
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; </div>
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;<span class="comment"> * Lets capture our parameters. They are both required.</span></div>
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;<span class="comment"> * If the input string is not NULL, then we are trying to affect another</span></div>
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;<span class="comment"> * Device. The device name is the same as for EnumDisplaySettings.</span></div>
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; </div>
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; CDS_SETRECT) {</div>
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; </div>
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">if</span> (lParam) {</div>
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; </div>
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; prect = &amp;rect;</div>
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; </div>
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <span class="keywordflow">if</span> (bKernelMode) {</div>
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; </div>
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; rect = *((PRECT) lParam);</div>
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; </div>
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; </div>
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keywordflow">try</span> {</div>
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; rect = ProbeAndReadRect((PRECT) lParam);</div>
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; } except (EXCEPTION_EXECUTE_HANDLER) {</div>
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keywordflow">return</span> DISP_CHANGE_BADPARAM;;</div>
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; }</div>
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; }</div>
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; prect = (PRECT) -1;</div>
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; }</div>
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; }</div>
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; </div>
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <span class="keywordflow">if</span> (bKernelMode) {</div>
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; </div>
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; strDevice = *pstrDeviceName;</div>
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; </div>
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; </div>
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; strDevice.Buffer = NULL;</div>
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; </div>
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="a00665.html#ad1a9b877f3705368d000061536e1b1fb">ProbeAndCaptureDeviceName</a>(&amp;strDevice, pstrDeviceName)) {</div>
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; </div>
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;ChangeDisplaySettings: Bad string\n&quot;</span>);</div>
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; status = DISP_CHANGE_BADPARAM;</div>
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <span class="keywordflow">goto</span> CDS_Exit_NoUnlock;</div>
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; }</div>
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; }</div>
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; </div>
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;<span class="comment"> * If the modeset is being done on a non-active desktop, we don&#39;t want</span></div>
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;<span class="comment"> * it too happen.</span></div>
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;<span class="comment"> * PtiCurrent()-&gt;rpdesk can be NULL !!! (in the case of thread shutdown).</span></div>
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; </div>
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <span class="keywordflow">if</span> (pdesk) {</div>
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; </div>
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <span class="keywordflow">if</span> (pdesk != <a class="code" href="a03257.html#a326757fcfe334f2ffd59d64d4645d37a">grpdeskRitInput</a>) {</div>
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;ChangeDisplaySettings on wrong desktop pdesk\n&quot;</span>);</div>
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; status = DISP_CHANGE_FAILED;</div>
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">goto</span> CDS_Exit_NoUnlock;</div>
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; }</div>
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; RtlInitUnicodeString(&amp;us, pdesk-&gt;pDispInfo-&gt;pDevInfo-&gt;szNtDeviceName);</div>
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; </div>
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; </div>
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a00257.html#a8315d2c807ba18ba9e528c40614b6173">PtiCurrent</a>()-&gt;rpdesk != <a class="code" href="a03257.html#a326757fcfe334f2ffd59d64d4645d37a">grpdeskRitInput</a>) {</div>
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;ChangeDisplaySettings on wrong desktop rpdesk\n&quot;</span>);</div>
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; status = DISP_CHANGE_FAILED;</div>
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keywordflow">goto</span> CDS_Exit_NoUnlock;</div>
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; }</div>
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; RtlInitUnicodeString(&amp;us, <a class="code" href="a00257.html#a8315d2c807ba18ba9e528c40614b6173">PtiCurrent</a>()-&gt;rpdesk-&gt;pDispInfo-&gt;pDevInfo-&gt;szNtDeviceName);</div>
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; }</div>
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; </div>
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; </div>
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keywordflow">if</span> (RtlEqualUnicodeString(&amp;strDevice,</div>
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; &amp;us,</div>
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; TRUE)) {</div>
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; </div>
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; bCurrentDevice = TRUE;</div>
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; </div>
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; </div>
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; TRACE_INIT((<span class="stringliteral">&quot;\n ChangeDisplaySettings: This better be an Exclusive device !!!\n&quot;</span>));</div>
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; </div>
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; <span class="comment">/* fix when we track ownership of secondary display devices */</span></div>
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; </div>
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="comment">/* VGACOMPATIBLE will end up in here also right now */</span></div>
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; bExclusiveDevice = TRUE;</div>
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; }</div>
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; </div>
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;<span class="preprocessor">#if DBG</span></div>
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;<span class="comment"> * Turn off Tracing for TEST_MODE since it&#39;s generally not interesting.</span></div>
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="keywordflow">if</span> (bTestMode)</div>
<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; (ULONG) <a class="code" href="a03257.html#adf0068988d4823d1fa1a18bca501899e">TraceDisplayDriverLoad</a> |= 0x80000000;</div>
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; </div>
<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; ntStatus = <a class="code" href="a00665.html#a7f72492be72deb72088a46321f3703e9">ProbeAndCaptureDevmode</a>(&amp;strDevice,</div>
<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; &amp;pCaptDevmode,</div>
<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; pDevMode,</div>
<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; bKernelMode);</div>
<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; </div>
<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;<span class="preprocessor">#if DBG</span></div>
<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; <span class="keywordflow">if</span> (bTestMode)</div>
<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; (ULONG) <a class="code" href="a03257.html#adf0068988d4823d1fa1a18bca501899e">TraceDisplayDriverLoad</a> &amp;= 0x7FFFFFFF;</div>
<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; </div>
<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <span class="keywordflow">if</span> ((!NT_SUCCESS(ntStatus)) ||</div>
<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; (pCaptDevmode == NULL)) {</div>
<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; </div>
<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;ChangeDisplaySettings: Bad DEVMODE\n&quot;</span>);</div>
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; status = DISP_CHANGE_BADPARAM;</div>
<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <span class="keywordflow">goto</span> CDS_Exit_NoUnlock;</div>
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; }</div>
<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; </div>
<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;<span class="comment"> * Write the data to the registry.</span></div>
<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;<span class="comment"> * This is not supported for the vgacompatible device - so it should</span></div>
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;<span class="comment"> * just fail. UserGetRegistryHandle should fail with this</span></div>
<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;<span class="comment"> * unrecognized string</span></div>
<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; CDS_UPDATEREGISTRY) {</div>
<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; </div>
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; NTSTATUS Status = STATUS_UNSUCCESSFUL;</div>
<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; </div>
<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;<span class="comment"> * CDS_GLOBAL is the default right now.</span></div>
<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;<span class="comment"> * When we store the settings on a per-user basis, then this flag</span></div>
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;<span class="comment"> * will override that behaviour.</span></div>
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; </div>
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;<span class="comment"> * Check if the Administrator has diabled this privilege.</span></div>
<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;<span class="comment"> * It is on by default.</span></div>
<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; </div>
<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; disableAll = 0;</div>
<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; </div>
<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; RtlInitUnicodeString(&amp;UnicodeString,</div>
<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; L<span class="stringliteral">&quot;\\Registry\\Machine\\System\\CurrentControlSet\\&quot;</span></div>
<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; L<span class="stringliteral">&quot;Control\\GraphicsDrivers\\PermanentSettingChanges&quot;</span>);</div>
<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; </div>
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; InitializeObjectAttributes(&amp;ObjectAttributes,</div>
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; &amp;UnicodeString,</div>
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; OBJ_CASE_INSENSITIVE,</div>
<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; NULL,</div>
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; NULL);</div>
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; </div>
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="keywordflow">if</span> (NT_SUCCESS(ZwOpenKey(&amp;hkRegistry, GENERIC_READ, &amp;ObjectAttributes))) {</div>
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; </div>
<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; RtlQueryRegistryValues(RTL_REGISTRY_HANDLE,</div>
<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; (PWSTR)hkRegistry,</div>
<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; &amp;QueryTable[0],</div>
<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; NULL,</div>
<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; NULL);</div>
<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; </div>
<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; ZwClose(hkRegistry);</div>
<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; }</div>
<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; </div>
<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <span class="keywordflow">if</span> (disableAll == 0) {</div>
<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; </div>
<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;<span class="comment"> * Only do the operation if we are not in test mode.</span></div>
<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;<span class="comment"> * We can always assume success for this operation in test mode.</span></div>
<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;<span class="comment"> * It is OK to save parameters to the registry for any device.</span></div>
<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;<span class="comment"> * So we just pass the device name on.</span></div>
<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; </div>
<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; <span class="keywordflow">if</span> (bTestMode) {</div>
<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; </div>
<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; Status = STATUS_SUCCESS;</div>
<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; </div>
<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; </div>
<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; Status = <a class="code" href="a00665.html#a74dce85d73485fdf46d61ce465e18061">UserSetDisplayDriverParameters</a>(&amp;strDevice,</div>
<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; <a class="code" href="a00899.html#afc13cb8b9a1ddb236b66ee390aa8efdda6760d6d8884c7ede93accae00a0e84b1">DispDriverParamDefault</a>,</div>
<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; pCaptDevmode,</div>
<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; prect);</div>
<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; <span class="keywordflow">if</span> (!NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;ChangeDisplaySettings: Failed to save registry parameters\n&quot;</span>);</div>
<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; }</div>
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; }</div>
<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; }</div>
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; </div>
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;<span class="comment"> * Set the appropriate win32 error code</span></div>
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; </div>
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; <span class="keywordflow">if</span> (NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; status = DISP_CHANGE_SUCCESSFUL;</div>
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; status = DISP_CHANGE_NOTUPDATED;</div>
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="keywordflow">goto</span> CDS_Exit_NoUnlock;</div>
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; }</div>
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; </div>
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;<span class="comment"> * This flag indicates we should exit right now, and not reset</span></div>
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;<span class="comment"> * the current screen resolution.</span></div>
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; </div>
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; CDS_NORESET) {</div>
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <span class="keywordflow">goto</span> CDS_Exit_NoUnlock;</div>
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; }</div>
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; }</div>
<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; </div>
<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;<span class="comment"> * Check if there are restrictions on changing the resolution dymanically</span></div>
<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; </div>
<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; disableAll = 0;</div>
<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; </div>
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; RtlInitUnicodeString(&amp;UnicodeString,</div>
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; L<span class="stringliteral">&quot;\\Registry\\Machine\\System\\CurrentControlSet\\&quot;</span></div>
<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; L<span class="stringliteral">&quot;Control\\GraphicsDrivers\\TemporarySettingChanges&quot;</span>);</div>
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; </div>
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; InitializeObjectAttributes(&amp;ObjectAttributes,</div>
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; &amp;UnicodeString,</div>
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; OBJ_CASE_INSENSITIVE,</div>
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; NULL,</div>
<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; NULL);</div>
<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; </div>
<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; <span class="keywordflow">if</span> (NT_SUCCESS(ZwOpenKey(&amp;hkRegistry, GENERIC_READ, &amp;ObjectAttributes))) {</div>
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; </div>
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; RtlQueryRegistryValues(RTL_REGISTRY_HANDLE,</div>
<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; (PWSTR)hkRegistry,</div>
<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; &amp;QueryTable[0],</div>
<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; NULL,</div>
<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; NULL);</div>
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; </div>
<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; ZwClose(hkRegistry);</div>
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; }</div>
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; </div>
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">if</span> (disableAll) {</div>
<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; status = DISP_CHANGE_FAILED;</div>
<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="keywordflow">goto</span> CDS_Exit_NoUnlock;</div>
<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; }</div>
<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; </div>
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;<span class="comment"> * Get the physdevinfo so we can lock the device and get the current</span></div>
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;<span class="comment"> * mode from it.</span></div>
<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; physdevinfo = <a class="code" href="a00665.html#a291aca25f546e197608f39e4887001a9">UserGetDeviceFromName</a>(&amp;strDevice,</div>
<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; USER_DEVICE_SHARED);</div>
<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; </div>
<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; <span class="keywordflow">if</span> (physdevinfo == NULL) {</div>
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; status = DISP_CHANGE_FAILED;</div>
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keywordflow">goto</span> CDS_Exit_NoUnlock;</div>
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; }</div>
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; </div>
<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;<span class="comment"> * We already validated the DEVMODE. So we know it&#39;s good (and that the</span></div>
<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;<span class="comment"> * mode can be set right now). All we need to check is if the bit-depth</span></div>
<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;<span class="comment"> * could fail.</span></div>
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; </div>
<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">if</span> (bTestMode) {</div>
<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; </div>
<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;<span class="comment"> * An application can only change the resolution on the fly for a</span></div>
<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;<span class="comment"> * device on which it is currently running on (see desktop) or for</span></div>
<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;<span class="comment"> * a device that is owns.</span></div>
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;<span class="comment"> * Lets check those conditions.</span></div>
<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; </div>
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <span class="keywordflow">if</span> (bCurrentDevice || bExclusiveDevice) {</div>
<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; </div>
<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;<span class="comment"> * Changing resolution on the fly should always work.</span></div>
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;<span class="comment"> * For now, we will let everything go through unless we find bugs</span></div>
<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;<span class="comment"> * and andrew wants to disable it</span></div>
<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; </div>
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; status = DISP_CHANGE_SUCCESSFUL;</div>
<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; </div>
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;<span class="comment"> * multi-display or mirroring drivers can not change resolution on</span></div>
<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;<span class="comment"> * the fly for now since the GreDynamicMode change API does not</span></div>
<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;<span class="comment"> * support this yet.</span></div>
<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; </div>
<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a00689.html#a762f2fbf9a0ad4d9a63f7c92adce1297">bMultipleDisplaySystem</a>) {</div>
<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; status = DISP_CHANGE_RESTART;</div>
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; }</div>
<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; </div>
<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;<span class="comment"> * Let&#39;s determine if we can change the mode on the fly by</span></div>
<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;<span class="comment"> * comparing the string in the DEVMODE to that of the current</span></div>
<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;<span class="comment"> * DEVMODE. If they are different - we need to change drivers -</span></div>
<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;<span class="comment"> * then the mode switch requires a restart.</span></div>
<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; </div>
<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; <span class="keywordflow">if</span> (wcsncmp(&amp;(pCaptDevmode-&gt;dmDeviceName[0]),</div>
<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; &amp;(physdevinfo-&gt;<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a>-&gt;dmDeviceName[0]),</div>
<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; 32)) {</div>
<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; </div>
<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; status = DISP_CHANGE_RESTART;</div>
<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; </div>
<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; }</div>
<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; </div>
<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;<span class="comment"> * BUGBUG</span></div>
<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;<span class="comment"> * Check the registry key that allows color depths on the fly.</span></div>
<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; </div>
<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; </div>
<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;<span class="comment"> * We can not change the mode on this device.</span></div>
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; </div>
<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; status = DISP_CHANGE_BADPARAM;</div>
<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; }</div>
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; </div>
<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <span class="keywordflow">goto</span> CDS_Exit_Free_Device;</div>
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; }</div>
<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; </div>
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;<span class="comment"> * Lock the PWND, if it is provided</span></div>
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; </div>
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; <span class="keywordflow">if</span> (pwnd) {</div>
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; <a class="code" href="a00899.html#abfae1dfb48db23dcea4494f7990ad6a6">ThreadLock</a>(pwnd, &amp;tlpwnd);</div>
<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; }</div>
<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; </div>
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;<span class="comment"> * We don&#39;t want our mode switch to be posted on the looping thread.</span></div>
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;<span class="comment"> * So let&#39;s loop until the system has settled down and no mode switch</span></div>
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;<span class="comment"> * is currently occuring.</span></div>
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; </div>
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="a00689.html#adaa7e2f08c4f1fb0e8161e249d62f909">idSwitcher</a> != <a class="code" href="a00689.html#a18707a2877a1444421decffc9e2efb3e">NOSWITCHER</a>) {</div>
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <a class="code" href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit</a>();</div>
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <a class="code" href="a00608.html#a6c96372198152be76c02728ab8e49dce">UserSleep</a>(1);</div>
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; <a class="code" href="a00899.html#ae451a2dc8791c420d7c956a63adc33ba">EnterCrit</a>();</div>
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; }</div>
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; </div>
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;<span class="comment"> * If there is a window, we want to check the state of the window.</span></div>
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;<span class="comment"> * For most calls, we want to ensure we are in windowed mode.</span></div>
<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;<span class="comment"> * However, for Console, we want to make sure we are in fullscreen mode.</span></div>
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;<span class="comment"> * So differentiate between the two. We will check if the TEXTMODE</span></div>
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;<span class="comment"> * flag is passed in the DEVMODE.</span></div>
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; </div>
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <span class="keywordflow">if</span> (pwnd) {</div>
<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; </div>
<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <span class="keywordflow">if</span> (pCaptDevmode-&gt;dmDisplayFlags == DMDISPLAYFLAGS_TEXTMODE) {</div>
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; </div>
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; <span class="keywordflow">if</span> (pwnd-&gt;bFullScreen != FULLSCREEN) {</div>
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; </div>
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <a class="code" href="a00851.html#ae82e6ab5253cf5a51f5e270f6b83ccb7">xxxShowWindow</a>(pwnd, MAKELONG(SW_SHOWMINIMIZED, <a class="code" href="a03257.html#a3f749009e2dddfbcdd946cdc60859d5d">gfAnimate</a>));</div>
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <a class="code" href="a00896.html#aa1a70248d072f47e9072b716708a6918">xxxUpdateWindow</a>(pwnd);</div>
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; </div>
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; }</div>
<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; </div>
<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; <a class="code" href="a00689.html#aff6a0461c096c5f13235d6537112c084">xxxMakeWindowForegroundWithState</a>(pwnd, FULLSCREEN);</div>
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; </div>
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; <span class="keywordflow">if</span> ((<a class="code" href="a00689.html#adaa7e2f08c4f1fb0e8161e249d62f909">idSwitcher</a> != <a class="code" href="a00689.html#a18707a2877a1444421decffc9e2efb3e">NOSWITCHER</a>) ||</div>
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; (<a class="code" href="a00689.html#a646350d4ca26f09d0d0bcf6f70a12042">gbFullScreen</a> != FULLSCREEN)) {</div>
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; </div>
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; TRACE_INIT((<span class="stringliteral">&quot;ChangeDisplaySettings: Can not switch into fullscreen\n&quot;</span>));</div>
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; status = DISP_CHANGE_FAILED;</div>
<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <span class="keywordflow">goto</span> CDS_Exit;</div>
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; }</div>
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; </div>
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; </div>
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;<span class="comment"> * For the console windows, we want to call with WINDOWED</span></div>
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;<span class="comment"> * We base this check on whether gdi is enabled or not.</span></div>
<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; </div>
<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a00689.html#a387a17388d6fb6bc7ecd24bc5826427e">fGdiEnabled</a> == FALSE) {</div>
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; <a class="code" href="a00689.html#aff6a0461c096c5f13235d6537112c084">xxxMakeWindowForegroundWithState</a>(pwnd, WINDOWED);</div>
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; }</div>
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; </div>
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; <span class="keywordflow">if</span> ((<a class="code" href="a00689.html#adaa7e2f08c4f1fb0e8161e249d62f909">idSwitcher</a> != <a class="code" href="a00689.html#a18707a2877a1444421decffc9e2efb3e">NOSWITCHER</a>) ||</div>
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; (<a class="code" href="a00689.html#a646350d4ca26f09d0d0bcf6f70a12042">gbFullScreen</a> != GDIFULLSCREEN)) {</div>
<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; </div>
<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; TRACE_INIT((<span class="stringliteral">&quot;ChangeDisplaySettings: Can not switch out of fullscreen\n&quot;</span>));</div>
<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; status = DISP_CHANGE_FAILED;</div>
<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; <span class="keywordflow">goto</span> CDS_Exit;</div>
<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; }</div>
<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; }</div>
<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; }</div>
<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; </div>
<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;<span class="comment"> * Check for console fullscreen.</span></div>
<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; </div>
<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; <span class="keywordflow">if</span> (pwnd &amp;&amp;</div>
<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; (pCaptDevmode-&gt;dmDisplayFlags == DMDISPLAYFLAGS_TEXTMODE) &amp;&amp;</div>
<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; (dwFlags &amp; CDS_FULLSCREEN)) {</div>
<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; </div>
<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;<span class="preprocessor">#if 0</span></div>
<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; UNICODE_STRING vgaString;</div>
<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; </div>
<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;<span class="comment"> * &quot;VGACOMPATIBLE&quot; is a special name that indicates we want to use</span></div>
<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;<span class="comment"> * the default VGA device of the machine (for console)</span></div>
<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; RtlInitUnicodeString(&amp;vgaString, L<span class="stringliteral">&quot;VGACOMPATIBLE&quot;</span>);</div>
<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; </div>
<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; <span class="keywordflow">if</span> (RtlEqualUnicodeString(&amp;strDevice, &amp;vgaString, TRUE)) {</div>
<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; </div>
<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; LPDEVMODEW pDevicemode = <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a>;</div>
<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; VIDEO_MODE VideoMode;</div>
<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; BOOLEAN modeFound = FALSE;</div>
<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; ULONG BytesReturned;</div>
<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; NTSTATUS Status;</div>
<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; ULONG i;</div>
<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; </div>
<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;<span class="comment"> * Fullscreen VGA modes require us to call the miniport driver</span></div>
<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;<span class="comment"> * directly.</span></div>
<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;<span class="comment"> * Lets check the VGA Device handle, which is in the first</span></div>
<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;<span class="comment"> * entry.</span></div>
<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; </div>
<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].pDeviceHandle == NULL) {</div>
<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; </div>
<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; status = DISP_CHANGE_BADPARAM;</div>
<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; </div>
<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; </div>
<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; VideoMode.RequestedMode = (ULONG) pCaptDevmode-&gt;dmOrientation;</div>
<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; </div>
<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;<span class="comment"> * We have the mode number.</span></div>
<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;<span class="comment"> * Call the driver to set the mode</span></div>
<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; Status = GreDeviceIoControl(</div>
<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].pDeviceHandle,</div>
<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; IOCTL_VIDEO_SET_CURRENT_MODE,</div>
<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; &amp;VideoMode,</div>
<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; <span class="keyword">sizeof</span>(VideoMode),</div>
<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; NULL,</div>
<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; 0,</div>
<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; &amp;BytesReturned);</div>
<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; </div>
<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <span class="keywordflow">if</span> (NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; </div>
<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;<span class="comment"> * We also map the memory so we can use it to</span></div>
<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;<span class="comment"> * process string commands from the console</span></div>
<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; VIDEO_MEMORY FrameBufferMap;</div>
<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; VIDEO_MEMORY_INFORMATION FrameBufferInfo;</div>
<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; </div>
<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; FrameBufferMap.RequestedVirtualAddress = NULL;</div>
<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; </div>
<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; Status = GreDeviceIoControl(</div>
<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].pDeviceHandle,</div>
<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; IOCTL_VIDEO_MAP_VIDEO_MEMORY,</div>
<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; &amp;FrameBufferMap,</div>
<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; <span class="keyword">sizeof</span>(FrameBufferMap),</div>
<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; &amp;FrameBufferInfo,</div>
<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; <span class="keyword">sizeof</span>(FrameBufferInfo),</div>
<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; &amp;BytesReturned);</div>
<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; </div>
<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keywordflow">if</span> (NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; </div>
<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;<span class="comment"> * get address of frame buffer</span></div>
<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <a class="code" href="a03257.html#a786cd01671f99939368eaa4f602f2410">gpFullscreenFrameBufPtr</a> = (PUCHAR) FrameBufferInfo.FrameBufferBase;</div>
<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; </div>
<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; </div>
<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;ChangeDisplaySettings: memory mapping failed\n&quot;</span>);</div>
<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; status = DISP_CHANGE_FAILED;</div>
<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; }</div>
<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; </div>
<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; </div>
<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;ChangeDisplaySettings: fullscreen MODESET failed\n&quot;</span>);</div>
<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; status = DISP_CHANGE_FAILED;</div>
<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; }</div>
<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; </div>
<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; }</div>
<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; }</div>
<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; </div>
<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; </div>
<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; </div>
<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;<span class="comment"> * For now, don&#39;t allow dynamic-resolution changes to occur</span></div>
<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;<span class="comment"> * when GDI is in fullscreen. We should almost never hit this</span></div>
<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;<span class="comment"> * condition, except for rare stress cases.</span></div>
<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a03257.html#a2bbf28771d074083b01444a97409814e">gfLockFullScreen</a>) {</div>
<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; status = DISP_CHANGE_FAILED;</div>
<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; }</div>
<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; </div>
<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;<span class="comment"> * multi-display or mirroring drivers can not change resolution on</span></div>
<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;<span class="comment"> * the fly for now since the GreDynamicMode change API does not</span></div>
<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;<span class="comment"> * support this yet.</span></div>
<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a00689.html#a762f2fbf9a0ad4d9a63f7c92adce1297">bMultipleDisplaySystem</a>) {</div>
<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; status = DISP_CHANGE_RESTART;</div>
<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; }</div>
<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; </div>
<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;<span class="comment"> * Dynamically change the screen resolution. Only do if</span></div>
<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;<span class="comment"> * everything up to point succeeded.</span></div>
<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; <span class="keywordflow">if</span> (status == DISP_CHANGE_SUCCESSFUL) {</div>
<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; </div>
<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; <a class="code" href="a02801.html">PDESKTOP</a> pDesktop = pdesk;</div>
<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; </div>
<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <span class="keywordflow">if</span> (bCurrentDevice) {</div>
<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; </div>
<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;<span class="comment"> * BUGBUG we have to do this because PtiCurrent()-&gt;rpdesk</span></div>
<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;<span class="comment"> * is the desktop with which the thread is associated, not</span></div>
<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;<span class="comment"> * necessarily the desktop to which we are switching !</span></div>
<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;<span class="comment"> * It&#39;s acutally kind of bogus to fall back on PtiCurrent.</span></div>
<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;<span class="comment"> * It assumes apps don&#39;t deal with multiple desktops !!!</span></div>
<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; </div>
<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; <span class="keywordflow">if</span> (!pDesktop)</div>
<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; pDesktop = <a class="code" href="a00257.html#a8315d2c807ba18ba9e528c40614b6173">PtiCurrent</a>()-&gt;<a class="code" href="a02889.html#abb1184e0c5805b5ad89b79dcc2bd17c8">rpdesk</a>;</div>
<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; </div>
<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;\n DESKTOP is %08lx \n&quot;</span>, pDesktop));</div>
<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; </div>
<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(bExclusiveDevice == FALSE);</div>
<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; </div>
<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(physdevinfo == pDesktop-&gt;<a class="code" href="a02801.html#a7865078d53afb2719414b44d87f75c5d">pDispInfo</a>-&gt;<a class="code" href="a02605.html#a76af5d5bf5f5037a7ddcd8bb543fd388">pDevInfo</a>);</div>
<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; </div>
<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(bExclusiveDevice == TRUE);</div>
<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; }</div>
<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; </div>
<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;<span class="comment"> * We only switch modes dynamically for the desktops that share</span></div>
<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;<span class="comment"> * the same hdev.</span></div>
<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;<span class="comment"> * A mode should only be set if it&#39;s a new mode being passed down,</span></div>
<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;<span class="comment"> * or if the CDS_RESET flag was specified. CDS_RESET forces the</span></div>
<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;<span class="comment"> * set mode.</span></div>
<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; </div>
<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; <span class="keywordflow">if</span> ((bCurrentDevice) &amp;&amp;</div>
<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; (<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a> == pDesktop-&gt;<a class="code" href="a02801.html#a7865078d53afb2719414b44d87f75c5d">pDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>) &amp;&amp;</div>
<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; ( (dwFlags &amp; CDS_RESET) ||</div>
<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; ( (pDesktop) &amp;&amp; (pDesktop-&gt;<a class="code" href="a02801.html#a1c13c2279af7d47e5b6bec7434d77812">bForceModeReset</a> == TRUE)) ||</div>
<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; (!RtlEqualMemory(pCaptDevmode,</div>
<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; physdevinfo-&gt;<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a>,</div>
<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; <span class="keyword">sizeof</span>(DEVMODEW))))) {</div>
<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; </div>
<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; TRACE_INIT((<span class="stringliteral">&quot;ChangeDisplaySettings - Switching modes - program\n&quot;</span>));</div>
<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; </div>
<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;<span class="comment"> * Turn off cursor while mucking with the</span></div>
<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;<span class="comment"> * the resolution changes.</span></div>
<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; GreSetPointer(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>, NULL, 0);</div>
<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; </div>
<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;<span class="comment"> * Free the spb&#39;s prior to calling the mode-change. This</span></div>
<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;<span class="comment"> * will make sure off-screen memory is cleaned up for</span></div>
<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;<span class="comment"> * gdi.</span></div>
<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; <a class="code" href="a00860.html#aa5eba0056961545f418184fa87e15982">FreeAllSpbs</a>(NULL);</div>
<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; </div>
<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; <span class="keywordflow">if</span> (GreDynamicModeChange(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>,</div>
<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; physdevinfo-&gt;<a class="code" href="a02601.html#a671c14f1e07dff0246711968044db9c4">pDeviceHandle</a>,</div>
<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; pCaptDevmode)) {</div>
<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160; </div>
<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;<span class="comment"> * Save the current mode of the device.</span></div>
<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;<span class="comment"> * If the user set the mode as CDS_FULLSCREEN, or the mode</span></div>
<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;<span class="comment"> * is being saved on an exclusive device, don&#39;t save it</span></div>
<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;<span class="comment"> * to the desktop.</span></div>
<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; </div>
<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; TRACE_INIT((<span class="stringliteral">&quot;ChangeDisplaySettings - Saving the mode\n&quot;</span>));</div>
<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; </div>
<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; </div>
<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; <span class="keywordflow">if</span> ((!(dwFlags &amp; CDS_FULLSCREEN)) &amp;&amp;</div>
<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; (!bExclusiveDevice)) {</div>
<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; <a class="code" href="a00665.html#a744babe1f701ee80c5d81250e69c4db5">UserSaveCurrentMode</a>(pDesktop,</div>
<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; physdevinfo,</div>
<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; pCaptDevmode);</div>
<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; </div>
<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; <a class="code" href="a00665.html#a744babe1f701ee80c5d81250e69c4db5">UserSaveCurrentMode</a>(NULL,</div>
<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; physdevinfo,</div>
<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; pCaptDevmode);</div>
<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; }</div>
<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; </div>
<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;<span class="comment"> * For CDS_FULLSCREEN mark the desktop as requiring a</span></div>
<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;<span class="comment"> * recalc next time we switch to it, so we force a mode</span></div>
<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;<span class="comment"> * switch.</span></div>
<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; </div>
<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; <span class="keywordflow">if</span> (pDesktop) {</div>
<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; <span class="keywordflow">if</span> (dwFlags &amp; CDS_FULLSCREEN) {</div>
<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; pDesktop-&gt;<a class="code" href="a02801.html#a1c13c2279af7d47e5b6bec7434d77812">bForceModeReset</a> = TRUE;</div>
<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; pDesktop-&gt;<a class="code" href="a02801.html#a1c13c2279af7d47e5b6bec7434d77812">bForceModeReset</a> = FALSE;</div>
<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; }</div>
<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; }</div>
<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; </div>
<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; <a class="code" href="a00689.html#ac54f401520871421830eeed1d34dd321">ResetDisplayDevice</a>(pDesktop, <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>, dwFlags);</div>
<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; </div>
<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; </div>
<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; TRACE_INIT((<span class="stringliteral">&quot;ChangeDisplaySettings: GreDynamicModeChange failed \n&quot;</span>));</div>
<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; status = DISP_CHANGE_FAILED;</div>
<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; }</div>
<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; </div>
<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;<span class="comment"> * Inline so we can specify which desktop this should happen on.</span></div>
<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;<span class="comment"> * xxxRedrawScreen();</span></div>
<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; <span class="keywordflow">if</span> (pDesktop) {</div>
<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <a class="code" href="a00896.html#af920796d5612f833ca2179b07a008e69">xxxInternalInvalidate</a>(pDesktop-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>,</div>
<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; MAXREGION, RDW_INVALIDATE | RDW_ERASE | RDW_FRAME | RDW_ALLCHILDREN);</div>
<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; }</div>
<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; </div>
<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; </div>
<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;<span class="comment"> * Bring back the cursor-shape.</span></div>
<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;<span class="comment">#ifdef LATER</span></div>
<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;<span class="comment"> * NOTE: Post 4.0, we should look at changing this and</span></div>
<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;<span class="comment"> * the GreSetPointer() call above to use the</span></div>
<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;<span class="comment"> * UpdateCursorImage() calls. This way we can</span></div>
<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;<span class="comment"> * assure the global-user-vars are update</span></div>
<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;<span class="comment"> * correctly, as well as making sure that animated</span></div>
<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;<span class="comment"> * curor timers are killed through the change.</span></div>
<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;<span class="comment"> * ChrisWil: 19-Jul-1996</span></div>
<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;<span class="comment">#endif</span></div>
<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a03257.html#a106fec4487922d9baa52acc8bfee1c07">gpqCursor</a> &amp;&amp;</div>
<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; <a class="code" href="a03257.html#a106fec4487922d9baa52acc8bfee1c07">gpqCursor</a>-&gt;<a class="code" href="a02869.html#a683294acdd2ae8355c6cfbf49c260374">spcurCurrent</a> &amp;&amp;</div>
<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; (<a class="code" href="a03257.html#a106fec4487922d9baa52acc8bfee1c07">gpqCursor</a>-&gt;<a class="code" href="a02869.html#a97845e5f321fb758821ac99bd53840de">iCursorLevel</a> &gt;= 0) &amp;&amp;</div>
<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; SYSMET(MOUSEPRESENT)) {</div>
<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; </div>
<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; GreSetPointer(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>,</div>
<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; (PCURSINFO)&amp;(<a class="code" href="a03257.html#a106fec4487922d9baa52acc8bfee1c07">gpqCursor</a>-&gt;<a class="code" href="a02869.html#a683294acdd2ae8355c6cfbf49c260374">spcurCurrent</a>-&gt;<a class="code" href="a02821.html#af668573586d5576ae8537e6a6e44dcd0">xHotspot</a>),</div>
<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; 0);</div>
<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; }</div>
<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; </div>
<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; </div>
<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; TRACE_INIT((<span class="stringliteral">&quot;ChangeDisplaySettings - Switching modes - NO program\n&quot;</span>));</div>
<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; }</div>
<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; </div>
<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; </div>
<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; }</div>
<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; }</div>
<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; </div>
<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;CDS_Exit:</div>
<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; </div>
<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; <span class="keywordflow">if</span> (pwnd)</div>
<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; ThreadUnlock(&amp;tlpwnd);</div>
<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; </div>
<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;CDS_Exit_Free_Device:</div>
<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; </div>
<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; <a class="code" href="a00665.html#ae1691bdb53d715053026f55f68e5d3f4">UserFreeDevice</a>(physdevinfo);</div>
<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; </div>
<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;CDS_Exit_NoUnlock:</div>
<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; </div>
<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; <span class="keywordflow">if</span> (!bKernelMode &amp;&amp; strDevice.Buffer)</div>
<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; UserFreePool(strDevice.Buffer);</div>
<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; </div>
<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; <span class="keywordflow">if</span> (pCaptDevmode)</div>
<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; UserFreePool(pCaptDevmode);</div>
<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; </div>
<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; TRACE_INIT((<span class="stringliteral">&quot;ChangeDisplaySettings - Leaving, Status = %d\n&quot;</span>, status));</div>
<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; </div>
<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; <span class="keywordflow">return</span> status;</div>
<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00899_source.html#l01722">tagDESKTOP::bForceModeReset</a>, <a class="el" href="a00665_source.html#l00046">bMultipleDisplaySystem</a>, <a class="el" href="a00365_source.html#l01553">tagPHYSICAL_DEV_INFO::devmodeInfo</a>, <a class="el" href="a00899_source.html#l03345">DispDriverParamDefault</a>, <a class="el" href="a00899.html#ae451a2dc8791c420d7c956a63adc33ba">EnterCrit()</a>, <a class="el" href="a00689_source.html#l00051">fGdiEnabled</a>, <a class="el" href="a00860_source.html#l01194">FreeAllSpbs()</a>, <a class="el" href="a00689_source.html#l00053">gbFullScreen</a>, <a class="el" href="a03257_source.html#l00019">gfAnimate</a>, <a class="el" href="a03257_source.html#l00077">gfLockFullScreen</a>, <a class="el" href="a03257_source.html#l00125">gpDispInfo</a>, <a class="el" href="a03257_source.html#l00079">gpFullscreenFrameBufPtr</a>, <a class="el" href="a03257_source.html#l00095">gphysDevInfo</a>, <a class="el" href="a03257_source.html#l00135">gpqCursor</a>, <a class="el" href="a03257_source.html#l00187">grpdeskRitInput</a>, <a class="el" href="a00365_source.html#l01576">tagDISPLAYINFO::hDev</a>, <a class="el" href="a00899_source.html#l02185">tagQ::iCursorLevel</a>, <a class="el" href="a00689_source.html#l00049">idSwitcher</a>, <a class="el" href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit()</a>, <a class="el" href="a00689_source.html#l00047">NOSWITCHER</a>, <a class="el" href="a00365_source.html#l01551">tagPHYSICAL_DEV_INFO::pCurrentDevmode</a>, <a class="el" href="a00899_source.html#l01706">tagDESKTOP::pDeskInfo</a>, <a class="el" href="a00365_source.html#l01546">tagPHYSICAL_DEV_INFO::pDeviceHandle</a>, <a class="el" href="a00365_source.html#l01578">tagDISPLAYINFO::pDevInfo</a>, <a class="el" href="a00899_source.html#l01707">tagDESKTOP::pDispInfo</a>, <a class="el" href="a00665_source.html#l00073">ProbeAndCaptureDeviceName()</a>, <a class="el" href="a00665_source.html#l01977">ProbeAndCaptureDevmode()</a>, <a class="el" href="a00263_source.html#l00526">PtiCurrent()</a>, <a class="el" href="a00689_source.html#l00884">ResetDisplayDevice()</a>, <a class="el" href="a00371_source.html#l00028">RIP_ERROR</a>, <a class="el" href="a00371_source.html#l00029">RIP_WARNING</a>, <a class="el" href="a00371_source.html#l00131">RIPMSG0</a>, <a class="el" href="a00899_source.html#l02288">tagTHREADINFO::rpdesk</a>, <a class="el" href="a00899_source.html#l02184">tagQ::spcurCurrent</a>, <a class="el" href="a00365_source.html#l01603">tagDESKTOPINFO::spwnd</a>, <a class="el" href="a00899.html#abfae1dfb48db23dcea4494f7990ad6a6">ThreadLock()</a>, <a class="el" href="a03257_source.html#l00507">TraceDisplayDriverLoad</a>, <a class="el" href="a00950_source.html#l00117">UserAssert</a>, <a class="el" href="a00665_source.html#l01721">UserFreeDevice()</a>, <a class="el" href="a00665_source.html#l01451">UserGetDeviceFromName()</a>, <a class="el" href="a00665_source.html#l00173">UserSaveCurrentMode()</a>, <a class="el" href="a00665_source.html#l01239">UserSetDisplayDriverParameters()</a>, <a class="el" href="a00608_source.html#l00083">UserSleep()</a>, <a class="el" href="a00899_source.html#l01813">tagCURSOR::xHotspot</a>, <a class="el" href="a00896_source.html#l01257">xxxInternalInvalidate()</a>, <a class="el" href="a00689_source.html#l00140">xxxMakeWindowForegroundWithState()</a>, <a class="el" href="a00851_source.html#l00081">xxxShowWindow()</a> , 以及 <a class="el" href="a00896_source.html#l01371">xxxUpdateWindow()</a>.</p>
<p class="reference">被这些函数引用 <a class="el" href="a00689_source.html#l01060">NtUserChangeDisplaySettings()</a>, <a class="el" href="a00656_source.html#l02349">xxxSwitchDesktop()</a> , 以及 <a class="el" href="a00719_source.html#l01681">xxxUpdatePerUserSystemParameters()</a>.</p>
</div>
</div>
<a id="a855856a20ad946448abdafb9ee059ebd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a855856a20ad946448abdafb9ee059ebd">&#9670;&nbsp;</a></span>UserGetVgaHandle()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">HANDLE UserGetVgaHandle </td>
<td>(</td>
<td class="paramtype">VOID&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l01912">1912</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;{</div>
<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; <span class="keywordflow">return</span>(<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].pDeviceHandle);</div>
<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a03257_source.html#l00095">gphysDevInfo</a>.</p>
</div>
</div>
<a id="aff6a0461c096c5f13235d6537112c084"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff6a0461c096c5f13235d6537112c084">&#9670;&nbsp;</a></span>xxxMakeWindowForegroundWithState()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void xxxMakeWindowForegroundWithState </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00365.html#a1a2ef1c363aa0787a8f8a7dde2a34aaf">PWND</a>&#160;</td>
<td class="paramname"><em>pwnd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BYTE&#160;</td>
<td class="paramname"><em>NewState</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00140">140</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="a02581.html">PWND</a> pwndNewFG;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="a01881.html">TL</a> tlpwndNewFG;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: xxxMakeWindowForeground: Enter\n&quot;</span>));</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;\t \t pwnd = %08lx\n&quot;</span>, pwnd));</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;\t \t NewState = %d\n&quot;</span>, NewState));</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="a00899.html#a70b09c3e2b495630f4205d34be505afb">CheckLock</a>(pwnd);</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; </div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"> * If we should switch to a specific window save that window</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; </div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (pwnd != NULL) {</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; </div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (NewState == GDIFULLSCREEN) {</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; Lock(&amp;<a class="code" href="a00689.html#a629f45921c086affcaef1298ff7f8fd4">gspwndShouldBeForeground</a>, pwnd);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; </div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> * Change to the new state</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; </div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; pwnd-&gt;<a class="code" href="a02581.html#a77ea21fd35c425c6a9119e1b42812fb0">bFullScreen</a> = NewState;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; </div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> (NewState == FULLSCREEN &amp;&amp;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; (<a class="code" href="a03257.html#a01d6b23c241a057b5e276bc3095a01eb">gpqForeground</a> == NULL ||</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="a03257.html#a01d6b23c241a057b5e276bc3095a01eb">gpqForeground</a>-&gt;<a class="code" href="a02869.html#a00f55b93fb49e91ab92e90fde747d716">spwndActive</a> != pwnd)) {</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; </div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; pwnd-&gt;<a class="code" href="a02581.html#a77ea21fd35c425c6a9119e1b42812fb0">bFullScreen</a> = FULLSCREENMIN;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; </div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// Since we leave the critical section during the switch, some other</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="comment">// thread could come into this routine and request a switch. The global</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">// will be reset, and we will use the loop to perform the next switch.</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; </div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a00689.html#adaa7e2f08c4f1fb0e8161e249d62f909">idSwitcher</a> != <a class="code" href="a00689.html#a18707a2877a1444421decffc9e2efb3e">NOSWITCHER</a>) {</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="a00689.html#ab4e036cf2cf3a3162fe3ee05da10c457">fRedoFullScreenSwitch</a> = TRUE;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: xxxMakeWindowForeground was posted: Exit\n&quot;</span>));</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; </div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; </div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(!<a class="code" href="a00689.html#ab4e036cf2cf3a3162fe3ee05da10c457">fRedoFullScreenSwitch</a>);</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="a00689.html#adaa7e2f08c4f1fb0e8161e249d62f909">idSwitcher</a> = PsGetCurrentThread()-&gt;Cid.UniqueThread;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; </div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> * We loop, switching full screens until all states have stabilized</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; </div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> * figure out who should be foreground</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="a00689.html#ab4e036cf2cf3a3162fe3ee05da10c457">fRedoFullScreenSwitch</a> = FALSE;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; </div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a00689.html#a629f45921c086affcaef1298ff7f8fd4">gspwndShouldBeForeground</a> != NULL) {</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; pwndNewFG = <a class="code" href="a00689.html#a629f45921c086affcaef1298ff7f8fd4">gspwndShouldBeForeground</a>;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; Unlock(&amp;<a class="code" href="a00689.html#a629f45921c086affcaef1298ff7f8fd4">gspwndShouldBeForeground</a>);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a03257.html#a01d6b23c241a057b5e276bc3095a01eb">gpqForeground</a> != NULL &amp;&amp;</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="a03257.html#a01d6b23c241a057b5e276bc3095a01eb">gpqForeground</a>-&gt;<a class="code" href="a02869.html#a00f55b93fb49e91ab92e90fde747d716">spwndActive</a> != NULL) {</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; </div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; pwndNewFG = <a class="code" href="a03257.html#a01d6b23c241a057b5e276bc3095a01eb">gpqForeground</a>-&gt;<a class="code" href="a02869.html#a00f55b93fb49e91ab92e90fde747d716">spwndActive</a>;</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; </div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (pwndNewFG-&gt;<a class="code" href="a02581.html#a77ea21fd35c425c6a9119e1b42812fb0">bFullScreen</a> == WINDOWED ||</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; pwndNewFG-&gt;<a class="code" href="a02581.html#a77ea21fd35c425c6a9119e1b42812fb0">bFullScreen</a> == FULLSCREENMIN) {</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; pwndNewFG = PWNDDESKTOP(pwndNewFG);</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment"> * No active window, switch to current desktop</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; pwndNewFG = <a class="code" href="a03257.html#a326757fcfe334f2ffd59d64d4645d37a">grpdeskRitInput</a>-&gt;<a class="code" href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">pDeskInfo</a>-&gt;<a class="code" href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">spwnd</a>;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; </div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment"> * We don&#39;t need to switch if the right window is already foreground</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (pwndNewFG == <a class="code" href="a03257.html#a674cbbaf9c1c4e2ca63923ba1fadfae0">gspwndFullScreen</a>) {</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; </div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="a00899.html#abfae1dfb48db23dcea4494f7990ad6a6">ThreadLock</a>(pwndNewFG, &amp;tlpwndNewFG);</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; </div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; BYTE bStateNew = pwndNewFG-&gt;<a class="code" href="a02581.html#a77ea21fd35c425c6a9119e1b42812fb0">bFullScreen</a>;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="a01881.html">TL</a> tlpwndOldFG;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="a02581.html">PWND</a> pwndOldFG = <a class="code" href="a03257.html#a674cbbaf9c1c4e2ca63923ba1fadfae0">gspwndFullScreen</a>;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; BYTE bStateOld = <a class="code" href="a00689.html#a646350d4ca26f09d0d0bcf6f70a12042">gbFullScreen</a>;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; </div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="a00899.html#abfae1dfb48db23dcea4494f7990ad6a6">ThreadLock</a>(pwndOldFG, &amp;tlpwndOldFG);</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; </div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; Lock(&amp;<a class="code" href="a03257.html#a674cbbaf9c1c4e2ca63923ba1fadfae0">gspwndFullScreen</a>, pwndNewFG);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="a00689.html#a646350d4ca26f09d0d0bcf6f70a12042">gbFullScreen</a> = bStateNew;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(!HMIsMarkDestroy(<a class="code" href="a03257.html#a674cbbaf9c1c4e2ca63923ba1fadfae0">gspwndFullScreen</a>));</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; </div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment"> * If the old screen was GDIFULLSCREEN and we are switching to</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment"> * GDIFULLSCREEN then just repaint</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (pwndOldFG != NULL &amp;&amp;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; bStateOld == GDIFULLSCREEN &amp;&amp;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; bStateNew == GDIFULLSCREEN) {</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; </div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="a00896.html#a487301eed51abdcd2b3920954855e848">xxxRedrawWindow</a>(pwndNewFG, NULL, NULL,</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; RDW_INVALIDATE | RDW_ALLCHILDREN | RDW_ERASE | RDW_ERASENOW);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; ThreadUnlock(&amp;tlpwndOldFG);</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; </div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; </div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> * tell old &#39;foreground&#39; window it is loosing control of the screen</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> (pwndOldFG != NULL) {</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">switch</span> (bStateOld) {</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">case</span> FULLSCREEN:</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (pwndOldFG-&gt;<a class="code" href="a02581.html#a77ea21fd35c425c6a9119e1b42812fb0">bFullScreen</a> == FULLSCREEN) {</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; pwndOldFG-&gt;<a class="code" href="a02581.html#a77ea21fd35c425c6a9119e1b42812fb0">bFullScreen</a> = FULLSCREENMIN;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="a00842.html#a69cf2e14dcefd941469ad5126e40f79a">xxxSendMessage</a>(pwndOldFG, WM_FULLSCREEN, FALSE, 0);</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="a00617.html#a04bef0d1b4ec903d4b1642ebe5e7e0a0">xxxCapture</a>(GETPTI(pwndOldFG), NULL, FULLSCREEN_CAPTURE);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="a00689.html#a317b5986c94a0fe6aec5cd38123cf2a3">SetVDMCursorBounds</a>(NULL);</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; </div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">case</span> GDIFULLSCREEN:</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"> * Lock out other windows from drawing while we are fullscreen</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="a00860.html#a386f0678a4f1a1261f1cfd672696933a">xxxLockWindowUpdate2</a>(pwndOldFG, TRUE);</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="a03257.html#a2bbf28771d074083b01444a97409814e">gfLockFullScreen</a> = TRUE;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="a00689.html#a02a2c81b683ba609809c23d59b662273">gptCursorFullScreen</a> = ptCursor;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(<a class="code" href="a00689.html#a387a17388d6fb6bc7ecd24bc5826427e">fGdiEnabled</a> == TRUE);</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; bDisableDisplay(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>);</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="a00689.html#a387a17388d6fb6bc7ecd24bc5826427e">fGdiEnabled</a> = FALSE;</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; </div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;xxxDoFullScreenSwitch: bad screen state&quot;</span>);</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; </div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; </div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; ThreadUnlock(&amp;tlpwndOldFG);</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">switch</span>(bStateNew) {</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">case</span> FULLSCREEN:</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="a00617.html#a04bef0d1b4ec903d4b1642ebe5e7e0a0">xxxCapture</a>(GETPTI(pwndNewFG), pwndNewFG, FULLSCREEN_CAPTURE);</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="a00842.html#a69cf2e14dcefd941469ad5126e40f79a">xxxSendMessage</a>(pwndNewFG, WM_FULLSCREEN, TRUE, 0);</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; </div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">case</span> GDIFULLSCREEN:</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; </div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(<a class="code" href="a00689.html#a387a17388d6fb6bc7ecd24bc5826427e">fGdiEnabled</a> == FALSE);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; vEnableDisplay(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>);</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="a00689.html#a387a17388d6fb6bc7ecd24bc5826427e">fGdiEnabled</a> = TRUE;</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment"> * Return the cursor to it&#39;s old state. Reset the screen saver mouse</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment"> * position or it&#39;ll go away by accident.</span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="a03257.html#a106fec4487922d9baa52acc8bfee1c07">gpqCursor</a> = NULL;</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="a00689.html#a5c0ed66b17009c8015022673ff5fcbdc">gptSSCursor</a> = <a class="code" href="a00689.html#a02a2c81b683ba609809c23d59b662273">gptCursorFullScreen</a>;</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="a00638.html#a3b1dddef2c0ab8276c2cce2733ced1d9">InternalSetCursorPos</a>(<a class="code" href="a00689.html#a02a2c81b683ba609809c23d59b662273">gptCursorFullScreen</a>.x,</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="a00689.html#a02a2c81b683ba609809c23d59b662273">gptCursorFullScreen</a>.y,</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="a03257.html#a326757fcfe334f2ffd59d64d4645d37a">grpdeskRitInput</a>);</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; </div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="a03257.html#a106fec4487922d9baa52acc8bfee1c07">gpqCursor</a> &amp;&amp; <a class="code" href="a03257.html#a106fec4487922d9baa52acc8bfee1c07">gpqCursor</a>-&gt;<a class="code" href="a02869.html#a683294acdd2ae8355c6cfbf49c260374">spcurCurrent</a> &amp;&amp; SYSMET(MOUSEPRESENT)) {</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; GreSetPointer(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>, (PCURSINFO)&amp;(<a class="code" href="a03257.html#a106fec4487922d9baa52acc8bfee1c07">gpqCursor</a>-&gt;<a class="code" href="a02869.html#a683294acdd2ae8355c6cfbf49c260374">spcurCurrent</a>-&gt;<a class="code" href="a02821.html#af668573586d5576ae8537e6a6e44dcd0">xHotspot</a>),0);</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; </div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="a03257.html#a2bbf28771d074083b01444a97409814e">gfLockFullScreen</a> = FALSE;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="a00860.html#a386f0678a4f1a1261f1cfd672696933a">xxxLockWindowUpdate2</a>(NULL, TRUE);</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; </div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="a00896.html#a487301eed51abdcd2b3920954855e848">xxxRedrawWindow</a>(pwndNewFG, NULL, NULL,</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; RDW_INVALIDATE | RDW_ALLCHILDREN | RDW_ERASE | RDW_ERASENOW);</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; </div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;xxxDoFullScreenSwitch: bad screen state\n&quot;</span>);</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; }</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; </div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; ThreadUnlock(&amp;tlpwndNewFG);</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; </div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="a00689.html#ab4e036cf2cf3a3162fe3ee05da10c457">fRedoFullScreenSwitch</a>) {</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; </div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; TRACE_SWITCH((<span class="stringliteral">&quot;Switching: xxxMakeWindowForeground: Exit\n&quot;</span>));</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; </div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="a00689.html#adaa7e2f08c4f1fb0e8161e249d62f909">idSwitcher</a> = <a class="code" href="a00689.html#a18707a2877a1444421decffc9e2efb3e">NOSWITCHER</a>;</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00365_source.html#l01419">tagWND::bFullScreen</a>, <a class="el" href="a00899.html#a70b09c3e2b495630f4205d34be505afb">CheckLock()</a>, <a class="el" href="a00689_source.html#l00051">fGdiEnabled</a>, <a class="el" href="a00689_source.html#l00050">fRedoFullScreenSwitch</a>, <a class="el" href="a00689_source.html#l00053">gbFullScreen</a>, <a class="el" href="a03257_source.html#l00077">gfLockFullScreen</a>, <a class="el" href="a03257_source.html#l00125">gpDispInfo</a>, <a class="el" href="a03257_source.html#l00135">gpqCursor</a>, <a class="el" href="a03257_source.html#l00133">gpqForeground</a>, <a class="el" href="a00689_source.html#l00054">gptCursorFullScreen</a>, <a class="el" href="a00875_source.html#l00015">gptSSCursor</a>, <a class="el" href="a03257_source.html#l00187">grpdeskRitInput</a>, <a class="el" href="a03257_source.html#l00076">gspwndFullScreen</a>, <a class="el" href="a00689_source.html#l00052">gspwndShouldBeForeground</a>, <a class="el" href="a00365_source.html#l01576">tagDISPLAYINFO::hDev</a>, <a class="el" href="a00689_source.html#l00049">idSwitcher</a>, <a class="el" href="a00638_source.html#l00110">InternalSetCursorPos()</a>, <a class="el" href="a00689_source.html#l00047">NOSWITCHER</a>, <a class="el" href="a00899_source.html#l01706">tagDESKTOP::pDeskInfo</a>, <a class="el" href="a00371_source.html#l00028">RIP_ERROR</a>, <a class="el" href="a00371_source.html#l00131">RIPMSG0</a>, <a class="el" href="a00638_source.html#l00357">SetVDMCursorBounds()</a>, <a class="el" href="a00899_source.html#l02184">tagQ::spcurCurrent</a>, <a class="el" href="a00365_source.html#l01603">tagDESKTOPINFO::spwnd</a>, <a class="el" href="a00899_source.html#l02168">tagQ::spwndActive</a>, <a class="el" href="a00899.html#abfae1dfb48db23dcea4494f7990ad6a6">ThreadLock()</a>, <a class="el" href="a00950_source.html#l00117">UserAssert</a>, <a class="el" href="a00899_source.html#l01813">tagCURSOR::xHotspot</a>, <a class="el" href="a00617_source.html#l00108">xxxCapture()</a>, <a class="el" href="a00860_source.html#l00758">xxxLockWindowUpdate2()</a>, <a class="el" href="a00896_source.html#l00302">xxxRedrawWindow()</a> , 以及 <a class="el" href="a00842_source.html#l00613">xxxSendMessage()</a>.</p>
<p class="reference">被这些函数引用 <a class="el" href="a00689_source.html#l01097">UserChangeDisplaySettings()</a>, <a class="el" href="a00686_source.html#l00430">xxxActivateThisWindow()</a>, <a class="el" href="a00656_source.html#l00499">xxxDesktopWndProc()</a>, <a class="el" href="a00686_source.html#l01045">xxxSetForegroundWindow2()</a>, <a class="el" href="a00851_source.html#l00081">xxxShowWindow()</a> , 以及 <a class="el" href="a00875_source.html#l00198">xxxSysCommand()</a>.</p>
</div>
</div>
<h2 class="groupheader">变量说明</h2>
<a id="a762f2fbf9a0ad4d9a63f7c92adce1297"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a762f2fbf9a0ad4d9a63f7c92adce1297">&#9670;&nbsp;</a></span>bMultipleDisplaySystem</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BOOL bMultipleDisplaySystem</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00665_source.html">drvsup.c</a> 第 <a class="el" href="a00665_source.html#l00046">46</a> 行定义.</p>
<p class="reference">被这些函数引用 <a class="el" href="a00665_source.html#l02945">InitLoadDriver()</a> , 以及 <a class="el" href="a00689_source.html#l01097">UserChangeDisplaySettings()</a>.</p>
</div>
</div>
<a id="a387a17388d6fb6bc7ecd24bc5826427e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a387a17388d6fb6bc7ecd24bc5826427e">&#9670;&nbsp;</a></span>fGdiEnabled</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BOOL fGdiEnabled = TRUE</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00051">51</a> 行定义.</p>
<p class="reference">被这些函数引用 <a class="el" href="a00689_source.html#l00075">FullScreenCleanup()</a>, <a class="el" href="a00689_source.html#l00375">NtUserFullscreenControl()</a>, <a class="el" href="a00689_source.html#l01097">UserChangeDisplaySettings()</a> , 以及 <a class="el" href="a00689_source.html#l00140">xxxMakeWindowForegroundWithState()</a>.</p>
</div>
</div>
<a id="ab4e036cf2cf3a3162fe3ee05da10c457"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4e036cf2cf3a3162fe3ee05da10c457">&#9670;&nbsp;</a></span>fRedoFullScreenSwitch</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BOOL fRedoFullScreenSwitch = FALSE</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00050">50</a> 行定义.</p>
<p class="reference">被这些函数引用 <a class="el" href="a00689_source.html#l00075">FullScreenCleanup()</a> , 以及 <a class="el" href="a00689_source.html#l00140">xxxMakeWindowForegroundWithState()</a>.</p>
</div>
</div>
<a id="a646350d4ca26f09d0d0bcf6f70a12042"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a646350d4ca26f09d0d0bcf6f70a12042">&#9670;&nbsp;</a></span>gbFullScreen</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BYTE gbFullScreen = GDIFULLSCREEN</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00053">53</a> 行定义.</p>
<p class="reference">被这些函数引用 <a class="el" href="a00689_source.html#l00075">FullScreenCleanup()</a>, <a class="el" href="a00689_source.html#l01097">UserChangeDisplaySettings()</a> , 以及 <a class="el" href="a00689_source.html#l00140">xxxMakeWindowForegroundWithState()</a>.</p>
</div>
</div>
<a id="a02a2c81b683ba609809c23d59b662273"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02a2c81b683ba609809c23d59b662273">&#9670;&nbsp;</a></span>gptCursorFullScreen</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">POINT gptCursorFullScreen</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00054">54</a> 行定义.</p>
<p class="reference">被这些函数引用 <a class="el" href="a00689_source.html#l00140">xxxMakeWindowForegroundWithState()</a>.</p>
</div>
</div>
<a id="a5c0ed66b17009c8015022673ff5fcbdc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c0ed66b17009c8015022673ff5fcbdc">&#9670;&nbsp;</a></span>gptSSCursor</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">POINT gptSSCursor</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00875_source.html">syscmd.c</a> 第 <a class="el" href="a00875_source.html#l00015">15</a> 行定义.</p>
<p class="reference">被这些函数引用 <a class="el" href="a03290_source.html#l03135">ScreenSaverCheck()</a>, <a class="el" href="a00875_source.html#l00170">StartScreenSaver()</a> , 以及 <a class="el" href="a00689_source.html#l00140">xxxMakeWindowForegroundWithState()</a>.</p>
</div>
</div>
<a id="a629f45921c086affcaef1298ff7f8fd4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a629f45921c086affcaef1298ff7f8fd4">&#9670;&nbsp;</a></span>gspwndShouldBeForeground</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00365.html#a1a2ef1c363aa0787a8f8a7dde2a34aaf">PWND</a> gspwndShouldBeForeground = NULL</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00052">52</a> 行定义.</p>
<p class="reference">被这些函数引用 <a class="el" href="a00689_source.html#l00140">xxxMakeWindowForegroundWithState()</a>.</p>
</div>
</div>
<a id="adaa7e2f08c4f1fb0e8161e249d62f909"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adaa7e2f08c4f1fb0e8161e249d62f909">&#9670;&nbsp;</a></span>idSwitcher</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">HANDLE idSwitcher = <a class="el" href="a00689.html#a18707a2877a1444421decffc9e2efb3e">NOSWITCHER</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00049">49</a> 行定义.</p>
<p class="reference">被这些函数引用 <a class="el" href="a00689_source.html#l00075">FullScreenCleanup()</a>, <a class="el" href="a00689_source.html#l01097">UserChangeDisplaySettings()</a> , 以及 <a class="el" href="a00689_source.html#l00140">xxxMakeWindowForegroundWithState()</a>.</p>
</div>
</div>
<a id="a39514132d83d314ad628930b9ce9e9e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39514132d83d314ad628930b9ce9e9e1">&#9670;&nbsp;</a></span>TraceFullscreenSwitch</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">LONG TraceFullscreenSwitch = 0</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="a00689_source.html">fullscr.c</a> 第 <a class="el" href="a00689_source.html#l00044">44</a> 行定义.</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="aa02821_html_af668573586d5576ae8537e6a6e44dcd0"><div class="ttname"><a href="a02821.html#af668573586d5576ae8537e6a6e44dcd0">tagCURSOR::xHotspot</a></div><div class="ttdeci">SHORT xHotspot</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01813">userk.h:1813</a></div></div>
<div class="ttc" id="aa03257_html_a674cbbaf9c1c4e2ca63923ba1fadfae0"><div class="ttname"><a href="a03257.html#a674cbbaf9c1c4e2ca63923ba1fadfae0">gspwndFullScreen</a></div><div class="ttdeci">PWND gspwndFullScreen</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00076">kernel/globals.c:76</a></div></div>
<div class="ttc" id="aa00842_html_a0035e456f12ef530c2b674cd1f6f8b36"><div class="ttname"><a href="a00842.html#a0035e456f12ef530c2b674cd1f6f8b36">xxxSendNotifyMessage</a></div><div class="ttdeci">BOOL xxxSendNotifyMessage(PWND pwnd, UINT message, DWORD wParam, LONG lParam)</div><div class="ttdef"><b>Definition:</b> <a href="a00842_source.html#l00968">sendmsg.c:968</a></div></div>
<div class="ttc" id="aa00689_html_a629f45921c086affcaef1298ff7f8fd4"><div class="ttname"><a href="a00689.html#a629f45921c086affcaef1298ff7f8fd4">gspwndShouldBeForeground</a></div><div class="ttdeci">PWND gspwndShouldBeForeground</div><div class="ttdef"><b>Definition:</b> <a href="a00689_source.html#l00052">fullscr.c:52</a></div></div>
<div class="ttc" id="aa00371_html_a01c4659626880ba56745765a3580a36b"><div class="ttname"><a href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a></div><div class="ttdeci">#define RIPMSG0(flags, szFmt)</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00131">winerrp.h:131</a></div></div>
<div class="ttc" id="aa02605_html_a7ae1e4da76ad52e90f87fe39f43b2c4f"><div class="ttname"><a href="a02605.html#a7ae1e4da76ad52e90f87fe39f43b2c4f">tagDISPLAYINFO::rcPrimaryScreen</a></div><div class="ttdeci">RECT rcPrimaryScreen</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01571">user.h:1571</a></div></div>
<div class="ttc" id="aa00638_html_a3dcfb2116a84b0aad0f519d7fdfc4610"><div class="ttname"><a href="a00638.html#a3dcfb2116a84b0aad0f519d7fdfc4610">gfVDMBoundsActive</a></div><div class="ttdeci">BOOL gfVDMBoundsActive</div><div class="ttdef"><b>Definition:</b> <a href="a00638_source.html#l00022">cursor.c:22</a></div></div>
<div class="ttc" id="aa00827_html_a4772e1acd6cc80e53926db81c089b5f0"><div class="ttname"><a href="a00827.html#a4772e1acd6cc80e53926db81c089b5f0">SetDesktopMetrics</a></div><div class="ttdeci">void SetDesktopMetrics()</div><div class="ttdef"><b>Definition:</b> <a href="a00827_source.html#l00144">rare.c:144</a></div></div>
<div class="ttc" id="aa00644_html_a69728f013275d0f4332dded4eb2432a3"><div class="ttname"><a href="a00644.html#a69728f013275d0f4332dded4eb2432a3">InvalidateDCCache</a></div><div class="ttdeci">BOOL InvalidateDCCache(PWND pwndInvalid, DWORD flags)</div><div class="ttdef"><b>Definition:</b> <a href="a00644_source.html#l01644">dc.c:1644</a></div></div>
<div class="ttc" id="aa00896_html_a487301eed51abdcd2b3920954855e848"><div class="ttname"><a href="a00896.html#a487301eed51abdcd2b3920954855e848">xxxRedrawWindow</a></div><div class="ttdeci">BOOL xxxRedrawWindow(PWND pwnd, LPRECT lprcUpdate, HRGN hrgnUpdate, DWORD flags)</div><div class="ttdef"><b>Definition:</b> <a href="a00896_source.html#l00302">update.c:302</a></div></div>
<div class="ttc" id="aa02869_html_a50df387cc5ba51033fb9e767c430f72f"><div class="ttname"><a href="a02869.html#a50df387cc5ba51033fb9e767c430f72f">tagQ::spwndCapture</a></div><div class="ttdeci">PWND spwndCapture</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l02166">userk.h:2166</a></div></div>
<div class="ttc" id="aa00716_html_aa84edae0e7919ca4f55d198b201a3e5a"><div class="ttname"><a href="a00716.html#aa84edae0e7919ca4f55d198b201a3e5a">SetWindowNCMetrics</a></div><div class="ttdeci">VOID SetWindowNCMetrics(LPNONCLIENTMETRICS lpnc, BOOL fSizeChange, int clNewBorder)</div><div class="ttdef"><b>Definition:</b> <a href="a00716_source.html#l00970">inctlpan.c:970</a></div></div>
<div class="ttc" id="aa00899_html_ae451a2dc8791c420d7c956a63adc33ba"><div class="ttname"><a href="a00899.html#ae451a2dc8791c420d7c956a63adc33ba">EnterCrit</a></div><div class="ttdeci">VOID EnterCrit(VOID)</div></div>
<div class="ttc" id="aa00689_html_aca39fc0e877a9047585888e7790d20ed"><div class="ttname"><a href="a00689.html#aca39fc0e877a9047585888e7790d20ed">UserChangeDisplaySettings</a></div><div class="ttdeci">LONG UserChangeDisplaySettings(IN PUNICODE_STRING pstrDeviceName, IN LPDEVMODEW pDevMode, IN PWND pwnd, IN PDESKTOP pdesk, IN DWORD dwFlags, IN PVOID lParam, IN BOOL bKernelMode)</div><div class="ttdef"><b>Definition:</b> <a href="a00689_source.html#l01097">fullscr.c:1097</a></div></div>
<div class="ttc" id="aa00716_html_a0df9d021542718987a45d43d815c161c"><div class="ttname"><a href="a00716.html#a0df9d021542718987a45d43d815c161c">SetMinMetrics</a></div><div class="ttdeci">VOID SetMinMetrics(LPMINIMIZEDMETRICS lpmin)</div><div class="ttdef"><b>Definition:</b> <a href="a00716_source.html#l01053">inctlpan.c:1053</a></div></div>
<div class="ttc" id="aa00689_html_a02a2c81b683ba609809c23d59b662273"><div class="ttname"><a href="a00689.html#a02a2c81b683ba609809c23d59b662273">gptCursorFullScreen</a></div><div class="ttdeci">POINT gptCursorFullScreen</div><div class="ttdef"><b>Definition:</b> <a href="a00689_source.html#l00054">fullscr.c:54</a></div></div>
<div class="ttc" id="aa02801_html"><div class="ttname"><a href="a02801.html">tagDESKTOP</a></div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01703">userk.h:1703</a></div></div>
<div class="ttc" id="aa02601_html"><div class="ttname"><a href="a02601.html">tagPHYSICAL_DEV_INFO</a></div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01543">user.h:1543</a></div></div>
<div class="ttc" id="aa00716_html_a9f946e068766974e04aa7c9e7dea8303"><div class="ttname"><a href="a00716.html#a9f946e068766974e04aa7c9e7dea8303">CreateCaptionStrip</a></div><div class="ttdeci">HBITMAP CreateCaptionStrip(VOID)</div><div class="ttdef"><b>Definition:</b> <a href="a00716_source.html#l00442">inctlpan.c:442</a></div></div>
<div class="ttc" id="aa02801_html_a76d4881aa4c15330103e83a80e6b5dc7"><div class="ttname"><a href="a02801.html#a76d4881aa4c15330103e83a80e6b5dc7">tagDESKTOP::pDeskInfo</a></div><div class="ttdeci">PDESKTOPINFO pDeskInfo</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01706">userk.h:1706</a></div></div>
<div class="ttc" id="aa00935_html_a479bbe69c871894f6ca23dfa237481ad"><div class="ttname"><a href="a00935.html#a479bbe69c871894f6ca23dfa237481ad">SetRect</a></div><div class="ttdeci">BOOL APIENTRY SetRect(LPRECT prc, int left, int top, int right, int bottom)</div><div class="ttdef"><b>Definition:</b> <a href="a00935_source.html#l00021">rect.c:21</a></div></div>
<div class="ttc" id="aa02605_html_af0da313e582dc95c2853349086631cd8"><div class="ttname"><a href="a02605.html#af0da313e582dc95c2853349086631cd8">tagDISPLAYINFO::hdcScreen</a></div><div class="ttdeci">HDC hdcScreen</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01566">user.h:1566</a></div></div>
<div class="ttc" id="aa03257_html_aea20d6528ad57e108c962a4fcb2e91d9"><div class="ttname"><a href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a></div><div class="ttdeci">PHYSICAL_DEV_INFO gphysDevInfo[]</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00095">kernel/globals.c:95</a></div></div>
<div class="ttc" id="aa00665_html_ad1a9b877f3705368d000061536e1b1fb"><div class="ttname"><a href="a00665.html#ad1a9b877f3705368d000061536e1b1fb">ProbeAndCaptureDeviceName</a></div><div class="ttdeci">BOOL ProbeAndCaptureDeviceName(PUNICODE_STRING Destination, PUNICODE_STRING Source)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00073">drvsup.c:73</a></div></div>
<div class="ttc" id="aa03257_html_a15ad49dc77573af8b63b532b82d05cbc"><div class="ttname"><a href="a03257.html#a15ad49dc77573af8b63b532b82d05cbc">ghbmWallpaper</a></div><div class="ttdeci">HBITMAP ghbmWallpaper</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00026">kernel/globals.c:26</a></div></div>
<div class="ttc" id="aa02513_html_af5b9904727246903b73027a6008559db"><div class="ttname"><a href="a02513.html#af5b9904727246903b73027a6008559db">tagSERVERINFO::fPaletteDisplay</a></div><div class="ttdeci">BOOL fPaletteDisplay</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l00993">user.h:993</a></div></div>
<div class="ttc" id="aa00689_html_adaa7e2f08c4f1fb0e8161e249d62f909"><div class="ttname"><a href="a00689.html#adaa7e2f08c4f1fb0e8161e249d62f909">idSwitcher</a></div><div class="ttdeci">HANDLE idSwitcher</div><div class="ttdef"><b>Definition:</b> <a href="a00689_source.html#l00049">fullscr.c:49</a></div></div>
<div class="ttc" id="aa00371_html_a162a73e20dfabca084a3ebb4581631a8"><div class="ttname"><a href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a></div><div class="ttdeci">#define UserAssert(exp)</div><div class="ttdef"><b>Definition:</b> <a href="a00950_source.html#l00117">usersrv.h:117</a></div></div>
<div class="ttc" id="aa00371_html_afa5f32de88404289ec03cd2c0e61e94f"><div class="ttname"><a href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a></div><div class="ttdeci">#define RIP_ERROR</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00028">winerrp.h:28</a></div></div>
<div class="ttc" id="aa00638_html_ac0816c73ec6cd096ee9436e038337f80"><div class="ttname"><a href="a00638.html#ac0816c73ec6cd096ee9436e038337f80">_ClipCursor</a></div><div class="ttdeci">BOOL _ClipCursor(LPCRECT prcClip)</div><div class="ttdef"><b>Definition:</b> <a href="a00638_source.html#l00205">cursor.c:205</a></div></div>
<div class="ttc" id="aa00860_html_a386f0678a4f1a1261f1cfd672696933a"><div class="ttname"><a href="a00860.html#a386f0678a4f1a1261f1cfd672696933a">xxxLockWindowUpdate2</a></div><div class="ttdeci">BOOL xxxLockWindowUpdate2(PWND pwndLock, BOOL fThreadOverride)</div><div class="ttdef"><b>Definition:</b> <a href="a00860_source.html#l00758">spb.c:758</a></div></div>
<div class="ttc" id="aa00842_html_adb5204decd255d5005372b2c12890113"><div class="ttname"><a href="a00842.html#adb5204decd255d5005372b2c12890113">xxxBroadcastMessage</a></div><div class="ttdeci">LONG xxxBroadcastMessage(PWND pwnd, UINT message, DWORD wParam, LONG lParam, UINT wCmd, PBROADCASTMSG pbcm)</div><div class="ttdef"><b>Definition:</b> <a href="a00842_source.html#l02898">sendmsg.c:2898</a></div></div>
<div class="ttc" id="aa00842_html_a69cf2e14dcefd941469ad5126e40f79a"><div class="ttname"><a href="a00842.html#a69cf2e14dcefd941469ad5126e40f79a">xxxSendMessage</a></div><div class="ttdeci">LONG xxxSendMessage(PWND pwnd, UINT message, DWORD wParam, LONG lParam)</div><div class="ttdef"><b>Definition:</b> <a href="a00842_source.html#l00613">sendmsg.c:613</a></div></div>
<div class="ttc" id="aa00617_html_a04bef0d1b4ec903d4b1642ebe5e7e0a0"><div class="ttname"><a href="a00617.html#a04bef0d1b4ec903d4b1642ebe5e7e0a0">xxxCapture</a></div><div class="ttdeci">VOID xxxCapture(PTHREADINFO pti, PWND pwnd, UINT code)</div><div class="ttdef"><b>Definition:</b> <a href="a00617_source.html#l00108">capture.c:108</a></div></div>
<div class="ttc" id="aa00257_html_a8315d2c807ba18ba9e528c40614b6173"><div class="ttname"><a href="a00257.html#a8315d2c807ba18ba9e528c40614b6173">PtiCurrent</a></div><div class="ttdeci">PTHREADINFO PtiCurrent(VOID)</div><div class="ttdef"><b>Definition:</b> <a href="a00263_source.html#l00526">winmgrc.c:526</a></div></div>
<div class="ttc" id="aa00689_html_a5fba44a86c81b63bd0bea2c0c3542fc8"><div class="ttname"><a href="a00689.html#a5fba44a86c81b63bd0bea2c0c3542fc8">ResetSharedDesktops</a></div><div class="ttdeci">VOID ResetSharedDesktops(PDISPLAYINFO pDIChanged, PDESKTOP pdeskChanged, LPRECT lprOldWork, DWORD CDS_Flags)</div><div class="ttdef"><b>Definition:</b> <a href="a00689_source.html#l00793">fullscr.c:793</a></div></div>
<div class="ttc" id="aa00860_html_aa5eba0056961545f418184fa87e15982"><div class="ttname"><a href="a00860.html#aa5eba0056961545f418184fa87e15982">FreeAllSpbs</a></div><div class="ttdeci">VOID FreeAllSpbs(PWND pwnd)</div><div class="ttdef"><b>Definition:</b> <a href="a00860_source.html#l01194">spb.c:1194</a></div></div>
<div class="ttc" id="aa02605_html_a76af5d5bf5f5037a7ddcd8bb543fd388"><div class="ttname"><a href="a02605.html#a76af5d5bf5f5037a7ddcd8bb543fd388">tagDISPLAYINFO::pDevInfo</a></div><div class="ttdeci">PPHYSICAL_DEV_INFO pDevInfo</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01578">user.h:1578</a></div></div>
<div class="ttc" id="aa00878_html_a384da50d789f362913ef53df4495b559"><div class="ttname"><a href="a00878.html#a384da50d789f362913ef53df4495b559">SetSysColor</a></div><div class="ttdeci">VOID SetSysColor(int icol, DWORD rgb, UINT uOptions)</div><div class="ttdef"><b>Definition:</b> <a href="a00878_source.html#l00097">sysmet.c:97</a></div></div>
<div class="ttc" id="aa00665_html_a7f72492be72deb72088a46321f3703e9"><div class="ttname"><a href="a00665.html#a7f72492be72deb72088a46321f3703e9">ProbeAndCaptureDevmode</a></div><div class="ttdeci">NTSTATUS ProbeAndCaptureDevmode(PUNICODE_STRING pstrDeviceName, PDEVMODEW *DestinationDevmode, PDEVMODEW SourceDevmode, BOOL bKernelMode)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l01977">drvsup.c:1977</a></div></div>
<div class="ttc" id="aa00665_html_a74dce85d73485fdf46d61ce465e18061"><div class="ttname"><a href="a00665.html#a74dce85d73485fdf46d61ce465e18061">UserSetDisplayDriverParameters</a></div><div class="ttdeci">NTSTATUS UserSetDisplayDriverParameters(PUNICODE_STRING deviceName, DISP_DRIVER_PARAM_TYPE ParamType, PDEVMODEW pdevmode, PRECT pRect)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l01239">drvsup.c:1239</a></div></div>
<div class="ttc" id="aa00899_html_abfae1dfb48db23dcea4494f7990ad6a6"><div class="ttname"><a href="a00899.html#abfae1dfb48db23dcea4494f7990ad6a6">ThreadLock</a></div><div class="ttdeci">VOID ThreadLock(PVOID pobj, PTL ptl)</div></div>
<div class="ttc" id="aa02809_html"><div class="ttname"><a href="a02809.html">tagWINDOWSTATION</a></div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01744">userk.h:1744</a></div></div>
<div class="ttc" id="aa00953_html_aebb9e13210d88d43e32e735ada43a425"><div class="ttname"><a href="a00953.html#aebb9e13210d88d43e32e735ada43a425">CHAR</a></div><div class="ttdeci">char CHAR</div><div class="ttdef"><b>Definition:</b> <a href="a00953_source.html#l00007">bench.c:7</a></div></div>
<div class="ttc" id="aa00665_html_a291aca25f546e197608f39e4887001a9"><div class="ttname"><a href="a00665.html#a291aca25f546e197608f39e4887001a9">UserGetDeviceFromName</a></div><div class="ttdeci">PPHYSICAL_DEV_INFO UserGetDeviceFromName(PUNICODE_STRING pstrDeviceName, ULONG bShareState)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l01451">drvsup.c:1451</a></div></div>
<div class="ttc" id="aa03257_html_ab597263bdbb3441715804712fcf29e6d"><div class="ttname"><a href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a></div><div class="ttdeci">PDISPLAYINFO gpDispInfo</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00125">kernel/globals.c:125</a></div></div>
<div class="ttc" id="aa00689_html_aff6a0461c096c5f13235d6537112c084"><div class="ttname"><a href="a00689.html#aff6a0461c096c5f13235d6537112c084">xxxMakeWindowForegroundWithState</a></div><div class="ttdeci">void xxxMakeWindowForegroundWithState(PWND pwnd, BYTE NewState)</div><div class="ttdef"><b>Definition:</b> <a href="a00689_source.html#l00140">fullscr.c:140</a></div></div>
<div class="ttc" id="aa02605_html_a81f6c7e5df9c00e3f33e6e1a94ac75fc"><div class="ttname"><a href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">tagDISPLAYINFO::hDev</a></div><div class="ttdeci">HANDLE hDev</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01576">user.h:1576</a></div></div>
<div class="ttc" id="aa02513_html_ad47c3c3836f1cb6cfb9ee4dd5d344496"><div class="ttname"><a href="a02513.html#ad47c3c3836f1cb6cfb9ee4dd5d344496">tagSERVERINFO::rcWork</a></div><div class="ttdeci">RECT rcWork</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01007">user.h:1007</a></div></div>
<div class="ttc" id="aa02869_html_a97845e5f321fb758821ac99bd53840de"><div class="ttname"><a href="a02869.html#a97845e5f321fb758821ac99bd53840de">tagQ::iCursorLevel</a></div><div class="ttdeci">int iCursorLevel</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l02185">userk.h:2185</a></div></div>
<div class="ttc" id="aa00689_html_ab4e036cf2cf3a3162fe3ee05da10c457"><div class="ttname"><a href="a00689.html#ab4e036cf2cf3a3162fe3ee05da10c457">fRedoFullScreenSwitch</a></div><div class="ttdeci">BOOL fRedoFullScreenSwitch</div><div class="ttdef"><b>Definition:</b> <a href="a00689_source.html#l00050">fullscr.c:50</a></div></div>
<div class="ttc" id="aa00563_html_a074685e97e89d6aa2accdfcb82328699"><div class="ttname"><a href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a></div><div class="ttdeci">ddeml v[i&lt; inst &gt;][t&lt; type &gt;][hObj|pObj] Dump DDEML state information ddeml lists all ddeml instances for this process n ddeml t&lt; type &gt; lists all ddeml objects of the given type n n assumes link is first DWORD</div><div class="ttdef"><b>Definition:</b> <a href="a00563_source.html#l00175">exts.h:175</a></div></div>
<div class="ttc" id="aa00665_html_a744babe1f701ee80c5d81250e69c4db5"><div class="ttname"><a href="a00665.html#a744babe1f701ee80c5d81250e69c4db5">UserSaveCurrentMode</a></div><div class="ttdeci">VOID UserSaveCurrentMode(PDESKTOP pDesktop, PPHYSICAL_DEV_INFO physinfo, LPDEVMODEW lpdevmodeInformation)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00173">drvsup.c:173</a></div></div>
<div class="ttc" id="aa00638_html_a79ebb837219045b09dfd497a1ee41e58"><div class="ttname"><a href="a00638.html#a79ebb837219045b09dfd497a1ee41e58">grcVDMCursorBounds</a></div><div class="ttdeci">RECT grcVDMCursorBounds</div><div class="ttdef"><b>Definition:</b> <a href="a00638_source.html#l00023">cursor.c:23</a></div></div>
<div class="ttc" id="aa01881_html"><div class="ttname"><a href="a01881.html">_TL</a></div><div class="ttdef"><b>Definition:</b> <a href="a00257_source.html#l00347">usercli.h:347</a></div></div>
<div class="ttc" id="aa00689_html_a762f2fbf9a0ad4d9a63f7c92adce1297"><div class="ttname"><a href="a00689.html#a762f2fbf9a0ad4d9a63f7c92adce1297">bMultipleDisplaySystem</a></div><div class="ttdeci">BOOL bMultipleDisplaySystem</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00046">drvsup.c:46</a></div></div>
<div class="ttc" id="aa00716_html_acd52966f6d457f68619ccb6006e4fccf"><div class="ttname"><a href="a00716.html#acd52966f6d457f68619ccb6006e4fccf">SetIconMetrics</a></div><div class="ttdeci">VOID SetIconMetrics(LPICONMETRICS lpicon)</div><div class="ttdef"><b>Definition:</b> <a href="a00716_source.html#l01096">inctlpan.c:1096</a></div></div>
<div class="ttc" id="aa00719_html_a8e2c487045938ea775827e2d2e5bca69"><div class="ttname"><a href="a00719.html#a8e2c487045938ea775827e2d2e5bca69">UpdateSystemIconsFromRegistry</a></div><div class="ttdeci">VOID UpdateSystemIconsFromRegistry(VOID)</div><div class="ttdef"><b>Definition:</b> <a href="a00719_source.html#l00955">init.c:955</a></div></div>
<div class="ttc" id="aa02581_html_a2778d611c2b27395e559c94d05732e1f"><div class="ttname"><a href="a02581.html#a2778d611c2b27395e559c94d05732e1f">tagWND::rcWindow</a></div><div class="ttdeci">RECT rcWindow</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01398">user.h:1398</a></div></div>
<div class="ttc" id="aa02581_html"><div class="ttname"><a href="a02581.html">tagWND</a></div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01388">user.h:1388</a></div></div>
<div class="ttc" id="aa03257_html_a01d6b23c241a057b5e276bc3095a01eb"><div class="ttname"><a href="a03257.html#a01d6b23c241a057b5e276bc3095a01eb">gpqForeground</a></div><div class="ttdeci">PQ gpqForeground</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00133">kernel/globals.c:133</a></div></div>
<div class="ttc" id="aa00851_html_ae82e6ab5253cf5a51f5e270f6b83ccb7"><div class="ttname"><a href="a00851.html#ae82e6ab5253cf5a51f5e270f6b83ccb7">xxxShowWindow</a></div><div class="ttdeci">BOOL xxxShowWindow(PWND pwnd, DWORD cmdShowAnimate)</div><div class="ttdef"><b>Definition:</b> <a href="a00851_source.html#l00081">showwin.c:81</a></div></div>
<div class="ttc" id="aa00689_html_ac54f401520871421830eeed1d34dd321"><div class="ttname"><a href="a00689.html#ac54f401520871421830eeed1d34dd321">ResetDisplayDevice</a></div><div class="ttdeci">VOID ResetDisplayDevice(PDESKTOP pdesk, PDISPLAYINFO pDI, DWORD CDS_Flags)</div><div class="ttdef"><b>Definition:</b> <a href="a00689_source.html#l00884">fullscr.c:884</a></div></div>
<div class="ttc" id="aa02581_html_a77ea21fd35c425c6a9119e1b42812fb0"><div class="ttname"><a href="a02581.html#a77ea21fd35c425c6a9119e1b42812fb0">tagWND::bFullScreen</a></div><div class="ttdeci">BYTE bFullScreen</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01419">user.h:1419</a></div></div>
<div class="ttc" id="aa00689_html_a5c0ed66b17009c8015022673ff5fcbdc"><div class="ttname"><a href="a00689.html#a5c0ed66b17009c8015022673ff5fcbdc">gptSSCursor</a></div><div class="ttdeci">POINT gptSSCursor</div><div class="ttdef"><b>Definition:</b> <a href="a00875_source.html#l00015">syscmd.c:15</a></div></div>
<div class="ttc" id="aa00896_html_aa1a70248d072f47e9072b716708a6918"><div class="ttname"><a href="a00896.html#aa1a70248d072f47e9072b716708a6918">xxxUpdateWindow</a></div><div class="ttdeci">BOOL xxxUpdateWindow(PWND pwnd)</div><div class="ttdef"><b>Definition:</b> <a href="a00896_source.html#l01371">update.c:1371</a></div></div>
<div class="ttc" id="aa00668_html_a68e971c3810a7065f5aba4d5ee40a8f1"><div class="ttname"><a href="a00668.html#a68e971c3810a7065f5aba4d5ee40a8f1">xxxSetDeskWallpaper</a></div><div class="ttdeci">BOOL xxxSetDeskWallpaper(LPWSTR lpszFile)</div><div class="ttdef"><b>Definition:</b> <a href="a00668_source.html#l01094">dtbitmap.c:1094</a></div></div>
<div class="ttc" id="aa00371_html_a41f433389f20db57f042022a662e96de"><div class="ttname"><a href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a></div><div class="ttdeci">#define RIP_WARNING</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00029">winerrp.h:29</a></div></div>
<div class="ttc" id="aa00827_html_a3f3a74ea22ded68444f3404548b94874"><div class="ttname"><a href="a00827.html#a3f3a74ea22ded68444f3404548b94874">DesktopRecalc</a></div><div class="ttdeci">VOID DesktopRecalc(LPRECT lprcOldScreen, LPRECT lprcNewScreen, BOOL fProportion)</div><div class="ttdef"><b>Definition:</b> <a href="a00827_source.html#l00344">rare.c:344</a></div></div>
<div class="ttc" id="aa02801_html_ace92d08d0736aef3f0b73273a6e3e5f7"><div class="ttname"><a href="a02801.html#ace92d08d0736aef3f0b73273a6e3e5f7">tagDESKTOP::rpdeskNext</a></div><div class="ttdeci">struct tagDESKTOP * rpdeskNext</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01709">userk.h:1709</a></div></div>
<div class="ttc" id="aa00872_html_a71170c4c5e4c60d4bc657fe52eb8d8d2"><div class="ttname"><a href="a00872.html#a71170c4c5e4c60d4bc657fe52eb8d8d2">xxxSetWindowPos</a></div><div class="ttdeci">BOOL xxxSetWindowPos(PWND pwnd, PWND pwndInsertAfter, int x, int y, int cx, int cy, UINT flags)</div><div class="ttdef"><b>Definition:</b> <a href="a00872_source.html#l01169">swp.c:1169</a></div></div>
<div class="ttc" id="aa02869_html_a00f55b93fb49e91ab92e90fde747d716"><div class="ttname"><a href="a02869.html#a00f55b93fb49e91ab92e90fde747d716">tagQ::spwndActive</a></div><div class="ttdeci">PWND spwndActive</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l02168">userk.h:2168</a></div></div>
<div class="ttc" id="aa00689_html_a646350d4ca26f09d0d0bcf6f70a12042"><div class="ttname"><a href="a00689.html#a646350d4ca26f09d0d0bcf6f70a12042">gbFullScreen</a></div><div class="ttdeci">BYTE gbFullScreen</div><div class="ttdef"><b>Definition:</b> <a href="a00689_source.html#l00053">fullscr.c:53</a></div></div>
<div class="ttc" id="aa02605_html_a263f5b35c44d9f9ae5c74acae8037644"><div class="ttname"><a href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">tagDISPLAYINFO::rcScreen</a></div><div class="ttdeci">RECT rcScreen</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01570">user.h:1570</a></div></div>
<div class="ttc" id="aa02801_html_a7865078d53afb2719414b44d87f75c5d"><div class="ttname"><a href="a02801.html#a7865078d53afb2719414b44d87f75c5d">tagDESKTOP::pDispInfo</a></div><div class="ttdeci">PDISPLAYINFO pDispInfo</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01707">userk.h:1707</a></div></div>
<div class="ttc" id="aa03257_html_a106fec4487922d9baa52acc8bfee1c07"><div class="ttname"><a href="a03257.html#a106fec4487922d9baa52acc8bfee1c07">gpqCursor</a></div><div class="ttdeci">PQ gpqCursor</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00135">kernel/globals.c:135</a></div></div>
<div class="ttc" id="aa03257_html_a3f749009e2dddfbcdd946cdc60859d5d"><div class="ttname"><a href="a03257.html#a3f749009e2dddfbcdd946cdc60859d5d">gfAnimate</a></div><div class="ttdeci">BOOL gfAnimate</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00019">kernel/globals.c:19</a></div></div>
<div class="ttc" id="aa00293_html_a41d387d1b2d42169cbaa2092c8a02abf"><div class="ttname"><a href="a00293.html#a41d387d1b2d42169cbaa2092c8a02abf">ValidateHwnd</a></div><div class="ttdeci">#define ValidateHwnd(hwnd)</div><div class="ttdef"><b>Definition:</b> <a href="a00293_source.html#l00090">immcli.h:90</a></div></div>
<div class="ttc" id="aa00896_html_af920796d5612f833ca2179b07a008e69"><div class="ttname"><a href="a00896.html#af920796d5612f833ca2179b07a008e69">xxxInternalInvalidate</a></div><div class="ttdeci">VOID xxxInternalInvalidate(PWND pwnd, HRGN hrgnUpdate, DWORD flags)</div><div class="ttdef"><b>Definition:</b> <a href="a00896_source.html#l01257">update.c:1257</a></div></div>
<div class="ttc" id="aa03257_html_a6fd7fff34b763d3027988693d59a76be"><div class="ttname"><a href="a03257.html#a6fd7fff34b763d3027988693d59a76be">ghbmCaption</a></div><div class="ttdeci">HBITMAP ghbmCaption</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00329">kernel/globals.c:329</a></div></div>
<div class="ttc" id="aa00638_html_a3b1dddef2c0ab8276c2cce2733ced1d9"><div class="ttname"><a href="a00638.html#a3b1dddef2c0ab8276c2cce2733ced1d9">InternalSetCursorPos</a></div><div class="ttdeci">VOID InternalSetCursorPos(int x, int y, PDESKTOP pdesk)</div><div class="ttdef"><b>Definition:</b> <a href="a00638_source.html#l00110">cursor.c:110</a></div></div>
<div class="ttc" id="aa00689_html_a317b5986c94a0fe6aec5cd38123cf2a3"><div class="ttname"><a href="a00689.html#a317b5986c94a0fe6aec5cd38123cf2a3">SetVDMCursorBounds</a></div><div class="ttdeci">void SetVDMCursorBounds(LPRECT lprc)</div><div class="ttdef"><b>Definition:</b> <a href="a00638_source.html#l00357">cursor.c:357</a></div></div>
<div class="ttc" id="aa02809_html_aafbda282c78d875d4491cf817366dc1b"><div class="ttname"><a href="a02809.html#aafbda282c78d875d4491cf817366dc1b">tagWINDOWSTATION::rpdeskList</a></div><div class="ttdeci">struct tagDESKTOP * rpdeskList</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01746">userk.h:1746</a></div></div>
<div class="ttc" id="aa02889_html_abb1184e0c5805b5ad89b79dcc2bd17c8"><div class="ttname"><a href="a02889.html#abb1184e0c5805b5ad89b79dcc2bd17c8">tagTHREADINFO::rpdesk</a></div><div class="ttdeci">PDESKTOP rpdesk</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l02288">userk.h:2288</a></div></div>
<div class="ttc" id="aa00608_html_a6c96372198152be76c02728ab8e49dce"><div class="ttname"><a href="a00608.html#a6c96372198152be76c02728ab8e49dce">UserSleep</a></div><div class="ttdeci">VOID UserSleep(DWORD dwMilliseconds)</div><div class="ttdef"><b>Definition:</b> <a href="a00608_source.html#l00083">base.c:83</a></div></div>
<div class="ttc" id="aa00842_html_a4a4a6ef58238afeb2930d10ed87d2853"><div class="ttname"><a href="a00842.html#a4a4a6ef58238afeb2930d10ed87d2853">QueueNotifyMessage</a></div><div class="ttdeci">void QueueNotifyMessage(PWND pwnd, UINT message, DWORD wParam, LONG lParam)</div><div class="ttdef"><b>Definition:</b> <a href="a00842_source.html#l00888">sendmsg.c:888</a></div></div>
<div class="ttc" id="aa02605_html_a2458aa3b22e3415ba05fc9fba634628d"><div class="ttname"><a href="a02605.html#a2458aa3b22e3415ba05fc9fba634628d">tagDISPLAYINFO::cyPixelsPerInch</a></div><div class="ttdeci">UINT cyPixelsPerInch</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01581">user.h:1581</a></div></div>
<div class="ttc" id="aa00689_html_a18707a2877a1444421decffc9e2efb3e"><div class="ttname"><a href="a00689.html#a18707a2877a1444421decffc9e2efb3e">NOSWITCHER</a></div><div class="ttdeci">#define NOSWITCHER</div><div class="ttdef"><b>Definition:</b> <a href="a00689_source.html#l00047">fullscr.c:47</a></div></div>
<div class="ttc" id="aa02601_html_a11272e040ff3989da159f50e88b7b8c6"><div class="ttname"><a href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">tagPHYSICAL_DEV_INFO::cbdevmodeInfo</a></div><div class="ttdeci">ULONG cbdevmodeInfo</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01552">user.h:1552</a></div></div>
<div class="ttc" id="aa00899_html_ac2181d07596893ed44d18aa267ce4d23"><div class="ttname"><a href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit</a></div><div class="ttdeci">VOID LeaveCrit(VOID)</div></div>
<div class="ttc" id="aa03257_html_adf0068988d4823d1fa1a18bca501899e"><div class="ttname"><a href="a03257.html#adf0068988d4823d1fa1a18bca501899e">TraceDisplayDriverLoad</a></div><div class="ttdeci">LONG TraceDisplayDriverLoad</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00507">kernel/globals.c:507</a></div></div>
<div class="ttc" id="aa03608_html_afd1a0e78d1f88954d93e48ab3821781f"><div class="ttname"><a href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a></div><div class="ttdeci">typedef UINT(FAR WINAPI *MSGSOUNDPROC)()</div></div>
<div class="ttc" id="aa00899_html_afc13cb8b9a1ddb236b66ee390aa8efdda6760d6d8884c7ede93accae00a0e84b1"><div class="ttname"><a href="a00899.html#afc13cb8b9a1ddb236b66ee390aa8efdda6760d6d8884c7ede93accae00a0e84b1">DispDriverParamDefault</a></div><div class="ttdeci">@ DispDriverParamDefault</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l03345">userk.h:3345</a></div></div>
<div class="ttc" id="aa02869_html_a683294acdd2ae8355c6cfbf49c260374"><div class="ttname"><a href="a02869.html#a683294acdd2ae8355c6cfbf49c260374">tagQ::spcurCurrent</a></div><div class="ttdeci">PCURSOR spcurCurrent</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l02184">userk.h:2184</a></div></div>
<div class="ttc" id="aa02601_html_a671c14f1e07dff0246711968044db9c4"><div class="ttname"><a href="a02601.html#a671c14f1e07dff0246711968044db9c4">tagPHYSICAL_DEV_INFO::pDeviceHandle</a></div><div class="ttdeci">PVOID pDeviceHandle</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01546">user.h:1546</a></div></div>
<div class="ttc" id="aa00899_html_a70b09c3e2b495630f4205d34be505afb"><div class="ttname"><a href="a00899.html#a70b09c3e2b495630f4205d34be505afb">CheckLock</a></div><div class="ttdeci">VOID CheckLock(PVOID pobj)</div></div>
<div class="ttc" id="aa03257_html_a786cd01671f99939368eaa4f602f2410"><div class="ttname"><a href="a03257.html#a786cd01671f99939368eaa4f602f2410">gpFullscreenFrameBufPtr</a></div><div class="ttdeci">PCHAR gpFullscreenFrameBufPtr</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00079">kernel/globals.c:79</a></div></div>
<div class="ttc" id="aa02609_html_a68937d60a6f49b7a8431db62b38ea721"><div class="ttname"><a href="a02609.html#a68937d60a6f49b7a8431db62b38ea721">tagDESKTOPINFO::spwnd</a></div><div class="ttdeci">struct tagWND * spwnd</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01603">user.h:1603</a></div></div>
<div class="ttc" id="aa03257_html_a2bbf28771d074083b01444a97409814e"><div class="ttname"><a href="a03257.html#a2bbf28771d074083b01444a97409814e">gfLockFullScreen</a></div><div class="ttdeci">BOOL gfLockFullScreen</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00077">kernel/globals.c:77</a></div></div>
<div class="ttc" id="aa00689_html_a387a17388d6fb6bc7ecd24bc5826427e"><div class="ttname"><a href="a00689.html#a387a17388d6fb6bc7ecd24bc5826427e">fGdiEnabled</a></div><div class="ttdeci">BOOL fGdiEnabled</div><div class="ttdef"><b>Definition:</b> <a href="a00689_source.html#l00051">fullscr.c:51</a></div></div>
<div class="ttc" id="aa02801_html_a1c13c2279af7d47e5b6bec7434d77812"><div class="ttname"><a href="a02801.html#a1c13c2279af7d47e5b6bec7434d77812">tagDESKTOP::bForceModeReset</a></div><div class="ttdeci">BOOL bForceModeReset</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01722">userk.h:1722</a></div></div>
<div class="ttc" id="aa03257_html_a326757fcfe334f2ffd59d64d4645d37a"><div class="ttname"><a href="a03257.html#a326757fcfe334f2ffd59d64d4645d37a">grpdeskRitInput</a></div><div class="ttdeci">PDESKTOP grpdeskRitInput</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00187">kernel/globals.c:187</a></div></div>
<div class="ttc" id="aa00935_html_a31ccccdb469eefbb55d18b71a26af0da"><div class="ttname"><a href="a00935.html#a31ccccdb469eefbb55d18b71a26af0da">CopyRect</a></div><div class="ttdeci">BOOL APIENTRY CopyRect(LPRECT prcDst, CONST RECT *prcSrc)</div><div class="ttdef"><b>Definition:</b> <a href="a00935_source.html#l00391">rect.c:391</a></div></div>
<div class="ttc" id="aa02605_html_ad3e0b5376b5114f4269df20805a3a85e"><div class="ttname"><a href="a02605.html#ad3e0b5376b5114f4269df20805a3a85e">tagDISPLAYINFO::cxPixelsPerInch</a></div><div class="ttdeci">UINT cxPixelsPerInch</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01580">user.h:1580</a></div></div>
<div class="ttc" id="aa02581_html_a17d59d04094aef8b577c0aa781cdf2c6"><div class="ttname"><a href="a02581.html#a17d59d04094aef8b577c0aa781cdf2c6">tagWND::rcClient</a></div><div class="ttdeci">RECT rcClient</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01399">user.h:1399</a></div></div>
<div class="ttc" id="aa00020_html_ad760da1dd81d9e84dee607d18edfde39"><div class="ttname"><a href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a></div><div class="ttdeci">PSERVERINFO gpsi</div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00039">clglobal.c:39</a></div></div>
<div class="ttc" id="aa00899_html_a792b9004a4d313da382f9a9fd8b5c1aa"><div class="ttname"><a href="a00899.html#a792b9004a4d313da382f9a9fd8b5c1aa">_GetProcessWindowStation</a></div><div class="ttdeci">PWINDOWSTATION _GetProcessWindowStation(HWINSTA *)</div><div class="ttdef"><b>Definition:</b> <a href="a00920_source.html#l00891">winsta.c:891</a></div></div>
<div class="ttc" id="aa02601_html_a1fe37d9234f46b11eab06dbfbafab7e9"><div class="ttname"><a href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">tagPHYSICAL_DEV_INFO::devmodeInfo</a></div><div class="ttdeci">PDEVMODEW devmodeInfo</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01553">user.h:1553</a></div></div>
<div class="ttc" id="aa00899_html_ab5b6a53d2b84dedad66b13f7f4b8c035"><div class="ttname"><a href="a00899.html#ab5b6a53d2b84dedad66b13f7f4b8c035">CalcVisRgn</a></div><div class="ttdeci">BOOL CalcVisRgn(HRGN *hrgn, PWND pwndOrg, PWND pwndClip, DWORD flags)</div><div class="ttdef"><b>Definition:</b> <a href="a00905_source.html#l00441">visrgn.c:441</a></div></div>
<div class="ttc" id="aa02601_html_a19bee6963f84c40169f417b39bc46059"><div class="ttname"><a href="a02601.html#a19bee6963f84c40169f417b39bc46059">tagPHYSICAL_DEV_INFO::pCurrentDevmode</a></div><div class="ttdeci">PDEVMODEW pCurrentDevmode</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01551">user.h:1551</a></div></div>
<div class="ttc" id="aa00665_html_ae1691bdb53d715053026f55f68e5d3f4"><div class="ttname"><a href="a00665.html#ae1691bdb53d715053026f55f68e5d3f4">UserFreeDevice</a></div><div class="ttdeci">VOID UserFreeDevice(PPHYSICAL_DEV_INFO physInfo)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l01721">drvsup.c:1721</a></div></div>
<div class="ttc" id="aa00719_html_aa6a4ca775f97490e22f8ecac65cdc03f"><div class="ttname"><a href="a00719.html#aa6a4ca775f97490e22f8ecac65cdc03f">UpdateSystemCursorsFromRegistry</a></div><div class="ttdeci">VOID UpdateSystemCursorsFromRegistry(VOID)</div><div class="ttdef"><b>Definition:</b> <a href="a00719_source.html#l00899">init.c:899</a></div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_885cc87fac2d91e269af0a5a959fa5f6.html">E:</a></li><li class="navelem"><a class="el" href="dir_4e091ed8704426a7a4980368ba259fde.html">git</a></li><li class="navelem"><a class="el" href="dir_cd70cb5eb491250157f2d55d3ff4b13e.html">backup</a></li><li class="navelem"><a class="el" href="dir_ba2b673b566ba104b956abdc6dec0552.html">org</a></li><li class="navelem"><a class="el" href="dir_5bb0003d7907b45051943541418399f5.html">ntuser</a></li><li class="navelem"><a class="el" href="dir_2a0a56546b70a0973705719e6a88eab3.html">kernel</a></li><li class="navelem"><a class="el" href="a00689.html">fullscr.c</a></li>
<li class="footer">制作者
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
</ul>
</div>
</body>
</html>
HTML
1
https://gitee.com/cbwang505/win32k.git
git@gitee.com:cbwang505/win32k.git
cbwang505
win32k
win32k
master

搜索帮助