<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_we-hjb的BLOG</title><subtitle type="text">ARM.WINDOWS EMBEDDED CE...</subtitle><id>http://feed.cnblogs.com/blog/u/40622/rss</id><updated>2012-01-15T06:47:06Z</updated><author><name>wince.he</name><uri>http://www.cnblogs.com/we-hjb/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/we-hjb/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/40622/rss"/><entry><id>http://www.cnblogs.com/we-hjb/archive/2012/01/15/2322874.html</id><title type="text">WinCE下NTFS文件系统的注意点</title><summary type="text">WinCE下NTFS文件系统，文件及目录名称区分大小写。</summary><published>2012-01-15T06:36:00Z</published><updated>2012-01-15T06:36:00Z</updated><author><name>wince.he</name><uri>http://www.cnblogs.com/we-hjb/</uri></author><link rel="alternate" href="http://www.cnblogs.com/we-hjb/archive/2012/01/15/2322874.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/we-hjb/archive/2012/01/15/2322874.html"/><content type="html">&lt;p&gt;借助于第三方提供的驱动程序，WinCE6.0也能支持NTFS文件系统，可以访问超大容量的移动硬盘，并播放存储于其中的1080P的视频文件。&lt;/p&gt; &lt;p&gt;需要注意的是WinCE下NTFS中文件及目录名区分大小写，即在同一目录下，能同时创建多个文件名大小写不同的同名文件，如下图所示。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://images.cnblogs.com/cnblogs_com/we-hjb/201201/201201151435261296.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" alt="image" src="http://images.cnblogs.com/cnblogs_com/we-hjb/201201/201201151435305294.png" border="0" height="484" width="804" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;关于NTFS中文件名区分大小写的说明，请参考&lt;a title="http://support.microsoft.com/kb/100625/en-us" href="http://support.microsoft.com/kb/100625/en-us"&gt;http://support.microsoft.com/kb/100625/en-us&lt;/a&gt;&lt;/p&gt; &lt;p&gt;实际上，对于WinCE系统来说，如果要支持超大容量外部存储设备，尤其是SD卡、U盘等Flash存储器，推荐使用exFAT文件系统。exFAT文件系统的介绍，请参考&lt;a title="http://zh.wikipedia.org/zh-cn/ExFAT" href="http://zh.wikipedia.org/zh-cn/ExFAT"&gt;http://zh.wikipedia.org/zh-cn/ExFAT&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/we-hjb/aggbug/2322874.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/we-hjb/archive/2012/01/15/2322874.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/we-hjb/archive/2011/12/18/2292727.html</id><title type="text">WinCE6.0的批量编译</title><summary type="text">WinCE6.0下基于命令行编译的方法，实现自动批量编译的实例。</summary><published>2011-12-18T15:15:00Z</published><updated>2011-12-18T15:15:00Z</updated><author><name>wince.he</name><uri>http://www.cnblogs.com/we-hjb/</uri></author><link rel="alternate" href="http://www.cnblogs.com/we-hjb/archive/2011/12/18/2292727.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/we-hjb/archive/2011/12/18/2292727.html"/><content type="html">&lt;p&gt;《&lt;a href="http://www.cnblogs.com/we-hjb/archive/2010/09/03/1817479.html"&gt;WinCE下多份BSP的维护技巧&lt;/a&gt;》中曾介绍了维护不同项目BSP的方法，可以很方便的使用同一解决方案，在多个BSP中任意切换，编译出不同项目对应的IMAGE。即便对于同一项目来说，有时也需要编译不同IMAGE，即同一份BSP、同一个解决方案，编译出不同版本IMAGE。而这一般通过修改环境变量、宏定义和条件编译的方式实现。&lt;/p&gt; &lt;p&gt;随着项目的推进，现在发布版本时，须编译出4个不同IMAGE，对应于不同的分辨率、不同主板及MCU。之前都是手动修改BAT文件中的定义，然后&lt;a href="http://www.cnblogs.com/we-hjb/archive/2011/08/24/2152695.html"&gt;Rebuild Current BSP and Subprojects&lt;/a&gt;。最近一段时间，改动较多，出版本也很频繁，越来越觉得手动修改编译太麻烦，于是基于命令行编译的方式实现了自动批量编译的功能。&lt;/p&gt; &lt;p&gt;首先创建一个批处理文件BuildAll.bat，内容如下。这里编译出4个版本的内核，A00、B01、H01和A01，也可以很方便的加入更多类型。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;@echo&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;off&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;echo&lt;/span&gt;&amp;nbsp;Build&amp;nbsp;All&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;echo&lt;/span&gt;&amp;nbsp;(A00)%&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;%&amp;nbsp;%&lt;span style="color: #0000FF;"&gt;time&lt;/span&gt;%&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;start&lt;/span&gt;&amp;nbsp;/wait&amp;nbsp;.\A00.bat&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;echo&lt;/span&gt;&amp;nbsp;(B01)%&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;%&amp;nbsp;%&lt;span style="color: #0000FF;"&gt;time&lt;/span&gt;%&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;start&lt;/span&gt;&amp;nbsp;/wait&amp;nbsp;.\B01.bat&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;echo&lt;/span&gt;&amp;nbsp;(H01)%&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;%&amp;nbsp;%&lt;span style="color: #0000FF;"&gt;time&lt;/span&gt;%&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;start&lt;/span&gt;&amp;nbsp;/wait&amp;nbsp;.\H01.bat&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;echo&lt;/span&gt;&amp;nbsp;(A01)%&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;%&amp;nbsp;%&lt;span style="color: #0000FF;"&gt;time&lt;/span&gt;%&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;start&lt;/span&gt;&amp;nbsp;/wait&amp;nbsp;.\A01.bat&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;echo&lt;/span&gt;&amp;nbsp;(&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;)%&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;%&amp;nbsp;%&lt;span style="color: #0000FF;"&gt;time&lt;/span&gt;%&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;pause&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;A00.bat的内容如下。首先设置KernelCode为A00，然后调用setenv.bat，最后执行&amp;#8220;blddemo -c -qbsp&amp;#8221;。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;KernelCode=A00&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;call&lt;/span&gt;&amp;nbsp;.\setenv.bat&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;call&lt;/span&gt;&amp;nbsp;blddemo&amp;nbsp;-c&amp;nbsp;-qbsp&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;B01.bat的内容如下。基本与A00.bat一致，仅仅修改了KernelCode的定义，修改为B01。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;KernelCode=B01&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;call&lt;/span&gt;&amp;nbsp;.\setenv.bat&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;call&lt;/span&gt;&amp;nbsp;blddemo&amp;nbsp;-c&amp;nbsp;-qbsp&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;setenv.bat的内容如下。这里前三个定义与平台有关，分辨是BSP、解决方案的名称。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;__PLATFORMNAME__=Magellan&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;__PROJECTNAME__=TCC89XX&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;PBCONFIG=MAGELLAN&amp;nbsp;Baseboards&amp;nbsp;Release&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;_WINCEROOT=C:\WINCE600&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;WINCEDEBUG=retail&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;CPU=ARMV4I&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;PBWORKSPACEROOT=%_WINCEROOT%\OSDesigns\%__PROJECTNAME__%\%__PROJECTNAME__%&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;_FLATRELEASEDIR=%_WINCEROOT%\OSDesigns\%__PROJECTNAME__%\%__PROJECTNAME__%\RelDir\%__PLATFORMNAME__%_%CPU%_Release\&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;PATH&lt;/span&gt;=%&lt;span style="color: #0000FF;"&gt;PATH&lt;/span&gt;%;C:\Windows\system32;C:\Windows;C:\Program&amp;nbsp;&lt;span style="color: #0000FF;"&gt;Files&lt;/span&gt;\Microsoft&amp;nbsp;Platform&amp;nbsp;Builder\6.00\cepb\IdeVS&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;_PROJECTROOT=%PBWORKSPACEROOT%\WINCE600\%__PLATFORMNAME__%_%CPU%&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;PBWORKSPACE=%_WINCEROOT%\OSDesigns\%__PROJECTNAME__%\%__PROJECTNAME__%\%__PROJECTNAME__%.pbxml&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;WINCE_BAT=%_WINCEROOT%\Public\Common\Oak\misc\wince.bat&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;PBXMLUTILS="C:\Program&amp;nbsp;Files\Microsoft&amp;nbsp;Platform&amp;nbsp;Builder\6.00\cepb\IdeVS\pbxmlutils.exe"&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;call&lt;/span&gt;&amp;nbsp;%WINCE_BAT%&amp;nbsp;%CPU%&amp;nbsp;%__PROJECTNAME__%&amp;nbsp;%__PLATFORMNAME__%&lt;br /&gt;%PBXMLUTILS%&amp;nbsp;/getbuildenv&amp;nbsp;&amp;gt;&amp;nbsp;%_TARGETPLATROOT%\AutoBuild%__PROJECTNAME__%.bat&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;call&lt;/span&gt;&amp;nbsp;%_TARGETPLATROOT%\AutoBuild%__PROJECTNAME__%.bat&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt; &lt;p&gt;如果修改了BSP或者子项目的代码，只需要执行BuildAll.bat即可很方便的得到4个IMAGE。&lt;/p&gt;&lt;p&gt;如果修改了Catalog中的组件选择，需要Clean Sysgen时，如何处理呢？创建一个RebuildAll.bat，内容如下。第一个执行的是A00C.bat。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;@echo&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;off&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;echo&lt;/span&gt;&amp;nbsp;Rebuild&amp;nbsp;All&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;echo&lt;/span&gt;&amp;nbsp;(A00)%&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;%&amp;nbsp;%&lt;span style="color: #0000FF;"&gt;time&lt;/span&gt;%&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;start&lt;/span&gt;&amp;nbsp;/wait&amp;nbsp;.\A00C.bat&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;echo&lt;/span&gt;&amp;nbsp;(B01)%&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;%&amp;nbsp;%&lt;span style="color: #0000FF;"&gt;time&lt;/span&gt;%&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;start&lt;/span&gt;&amp;nbsp;/wait&amp;nbsp;.\B01.bat&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;echo&lt;/span&gt;&amp;nbsp;(H01)%&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;%&amp;nbsp;%&lt;span style="color: #0000FF;"&gt;time&lt;/span&gt;%&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;start&lt;/span&gt;&amp;nbsp;/wait&amp;nbsp;.\H01.bat&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;echo&lt;/span&gt;&amp;nbsp;(A01)%&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;%&amp;nbsp;%&lt;span style="color: #0000FF;"&gt;time&lt;/span&gt;%&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;start&lt;/span&gt;&amp;nbsp;/wait&amp;nbsp;.\A01.bat&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;echo&lt;/span&gt;&amp;nbsp;(&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;)%&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;%&amp;nbsp;%&lt;span style="color: #0000FF;"&gt;time&lt;/span&gt;%&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;pause&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;A00C.bat的内容如下。与A00.bat的区别是，它调用blddemo clean -q，以执行Clean Sysgen。后续几个只需&lt;a id="ctl08_TitleUrl" href="http://www.cnblogs.com/we-hjb/archive/2011/08/24/2152695.html"&gt;Rebuild Current BSP and Subprojects&lt;/a&gt; &lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;KernelCode=A00&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;call&lt;/span&gt;&amp;nbsp;.\setenv.bat&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;call&lt;/span&gt;&amp;nbsp;blddemo&amp;nbsp;clean&amp;nbsp;-q&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;BSP中Magellan.bat的部分内容如下。这里根据KernelCode，分别定义LCD及其他一些相关类型。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;not&lt;/span&gt;&amp;nbsp;DEFINED&amp;nbsp;KernelCode&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;KernelCode=A01&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="A00"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;LCD_TYPE_HSD070=1&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="A01"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;LCD_TYPE_HSD070=1&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="A01"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;BSP_MALI_3D=&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="H00"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;LCD_TYPE_BYD700=1&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="H01"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;LCD_TYPE_BYD700=1&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="H01"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;BSP_MALI_3D=&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="H01"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;CMMB_PAUSE_ENABLE=1&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="B00"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;LCD_TYPE_HSD070=1&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="B00"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;CONNECT_SMD_DIRECTLY=1&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="B00"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;VOLUME_LOUD=1&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="B01"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;LCD_TYPE_HSD070=1&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="B01"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;CONNECT_SMD_DIRECTLY=1&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="B01"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;BSP_MALI_3D=&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;"%KernelCode%"=="B01"&amp;nbsp;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&amp;nbsp;VOLUME_LOUD=1&lt;/div&gt;&lt;/div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Platform.reg中相关代码如下，在注册表中定义了内核类型。&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\VERSION]&lt;br /&gt;"KernelCode"="$(KernelCode)"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;内核尾缀&amp;nbsp;A00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;编译设置&lt;/div&gt;&lt;/div&gt;&lt;p&gt;最后，很重要的一点就是编译得到的BOOT和NK，需要自动拷贝到特定目录下，否则就是长江后浪推前浪了。 而这个工作在postromimage.bat中指定，如下。&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;copy&lt;/span&gt;&amp;nbsp;tcboot.rom&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;G:\车机89OS\"%KernelCode%"\tcboot.rom&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;copy&lt;/span&gt;&amp;nbsp;nk.rom&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;G:\车机89OS\"%KernelCode%"\nk.rom&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;div&gt;&lt;p&gt;批量编译的截图如下，编译一个IMAGE大概4分钟左右，四个项目共16分钟。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/we-hjb/201112/201112182304468062.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" alt="image" src="http://images.cnblogs.com/cnblogs_com/we-hjb/201112/201112182304565771.png" width="244" border="0" height="149" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;批量重新编译的截图如下，第一个Clean Sysgen大概20分钟，后续一个4分钟，共半个小时多一点。&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/we-hjb/201112/201112182305005677.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" alt="image" src="http://images.cnblogs.com/cnblogs_com/we-hjb/201112/201112182310211158.png" width="244" border="0" height="153" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;实现了自动批量编译，再出版本时确实方便多了。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/we-hjb/aggbug/2292727.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/we-hjb/archive/2011/12/18/2292727.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/we-hjb/archive/2011/10/17/2215920.html</id><title type="text">VS2005过度优化的陷阱(二)</title><summary type="text">VS2005过度优化的代码汇总。</summary><published>2011-10-17T14:23:00Z</published><updated>2011-10-17T14:23:00Z</updated><author><name>wince.he</name><uri>http://www.cnblogs.com/we-hjb/</uri></author><link rel="alternate" href="http://www.cnblogs.com/we-hjb/archive/2011/10/17/2215920.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/we-hjb/archive/2011/10/17/2215920.html"/><content type="html">&lt;p&gt;目前还没有新的发现，先把所有现象再次整理如下，望牛人帮忙指正。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;完整代码：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;_tmain(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;argc,&amp;nbsp;_TCHAR*&amp;nbsp;argv[])&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;volatile&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;PS3C6410_GPIO_REG&amp;nbsp;pGPIO1;&lt;/span&gt;&amp;nbsp;&amp;nbsp; // 注意:与&lt;span style="color: red;"&gt;volatile&lt;/span&gt;&lt;span style="color: red;"&gt; S3C6410_GPIO_REG* pGPIO1;&lt;/span&gt;效果是不同的&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1&amp;nbsp;=&amp;nbsp;(PS3C6410_GPIO_REG)GetVirtual(S3C6410_BASE_REG_PA_GPIO,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;(S3C6410_GPIO_REG));&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1-&amp;gt;GPBCON&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0x22222222&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: red;"&gt;0xFFFF&lt;/span&gt;&lt;span style="color: red;"&gt;;&lt;/span&gt;&amp;nbsp;&amp;nbsp; // 替换该行代码,查看其对应的汇编代码&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;--&amp;gt;(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;下面逐一替换第9行代码，并查看其对应的汇编代码。 &lt;/p&gt;&lt;p&gt;代码1：pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0xFFFF&lt;/span&gt;;被优化掉了&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: red;"&gt;0xFFFF&lt;/span&gt;&lt;span style="color: red;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011078&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;0001107C&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011080&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x14&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011084&lt;/span&gt;&amp;nbsp;&amp;nbsp;strh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r5,&amp;nbsp;[r3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x22&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011088&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;[r2,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;0001108C&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #800080;"&gt;00011498&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;代码2：pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0xFFFF&lt;/span&gt;&amp;lt;&amp;lt;&lt;span style="color: #800080;"&gt;16&lt;/span&gt;;也被优化掉了&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: red;"&gt;0xFFFF&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: red;"&gt;16&lt;/span&gt;&lt;span style="color: red;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011078&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;0001107C&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011080&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x14&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011084&lt;/span&gt;&amp;nbsp;&amp;nbsp;strh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r5,&amp;nbsp;[r3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011088&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;[r2,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;0001108C&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #800080;"&gt;00011498&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;代码3:pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;~&lt;span style="color: #800080;"&gt;0xFFFF&lt;/span&gt;;还是被优化掉了，与代码2的汇编代码完全一样&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;&amp;nbsp;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;~&lt;/span&gt;&lt;span style="color: red;"&gt;0xFFFF&lt;/span&gt;&lt;span style="color: red;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011078&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;0001107C&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011080&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x14&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011084&lt;/span&gt;&amp;nbsp;&amp;nbsp;strh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r5,&amp;nbsp;[r3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011088&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;[r2,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;0001108C&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #800080;"&gt;00011498&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;代码4：pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;~(&lt;span style="color: #800080;"&gt;0xFFFF&lt;/span&gt;&amp;lt;&amp;lt;&lt;span style="color: #800080;"&gt;16&lt;/span&gt;);也未能幸免，与代码1的汇编代码完全一样&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;~(&lt;/span&gt;&lt;span style="color: red;"&gt;0xFFFF&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: red;"&gt;16&lt;/span&gt;&lt;span style="color: red;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011078&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;0001107C&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011080&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x14&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011084&lt;/span&gt;&amp;nbsp;&amp;nbsp;strh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r5,&amp;nbsp;[r3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x22&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011088&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;[r2,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;0001108C&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #800080;"&gt;00011498&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;代码5：pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0xFF&lt;/span&gt;;这么写没问题！&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: red;"&gt;0xFF&lt;/span&gt;&lt;span style="color: red;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011078&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;0001107C&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011080&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x1C&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011084&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;[r2,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]!&amp;nbsp;&lt;br /&gt;&lt;span style="color: red;"&gt;00011088&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;and&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;r3,&amp;nbsp;#&lt;/span&gt;&lt;span style="color: red;"&gt;0xFF&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color: red;"&gt;0001108C&amp;nbsp;&amp;nbsp;str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;[r2]&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011090&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;[r1,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011094&lt;/span&gt;&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000114A0&lt;/div&gt;&lt;/div&gt;&lt;p&gt;代码6：pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0xFF&lt;/span&gt;&amp;lt;&amp;lt;&lt;span style="color: #800080;"&gt;16&lt;/span&gt;;这么写也没问题！难道0xFF就没问题了？&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: red;"&gt;0xFF&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: red;"&gt;16&lt;/span&gt;&lt;span style="color: red;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011078&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;0001107C&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011080&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x1C&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011084&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;[r2,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]!&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011088&lt;/span&gt;&amp;nbsp;&amp;nbsp;and&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;r3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0xFF&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #800080;"&gt;16&lt;/span&gt;&amp;nbsp;&lt;br /&gt;0001108C&amp;nbsp;&amp;nbsp;str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;[r2]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011090&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;[r1,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011094&lt;/span&gt;&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000114A0&lt;/div&gt;&lt;/div&gt;&lt;p&gt;代码7：pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;~&lt;span style="color: #800080;"&gt;0xFF&lt;/span&gt;;又不对了！&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;~&lt;/span&gt;&lt;span style="color: red;"&gt;0xFF&lt;/span&gt;&lt;span style="color: red;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011078&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;0001107C&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011080&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x14&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011084&lt;/span&gt;&amp;nbsp;&amp;nbsp;strb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r5,&amp;nbsp;[r3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011088&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;[r2,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;0001108C&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #800080;"&gt;00011498&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;代码8：pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;~(&lt;span style="color: #800080;"&gt;0xFF&lt;/span&gt;&amp;lt;&amp;lt;&lt;span style="color: #800080;"&gt;16&lt;/span&gt;);也被优化掉了。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;&amp;nbsp;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;~(&lt;/span&gt;&lt;span style="color: red;"&gt;0xFF&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: red;"&gt;16&lt;/span&gt;&lt;span style="color: red;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011078&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;0001107C&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;pGPIO1&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011080&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x14&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011084&lt;/span&gt;&amp;nbsp;&amp;nbsp;strb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r5,&amp;nbsp;[r3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x22&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011088&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;[r2,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;0001108C&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #800080;"&gt;00011498&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;以上8段代码，仅2段代码正常运行，其余都有问题。已经不是运气的事了，肯定某个地方出了问题，在哪呢？&lt;br /&gt;&lt;/p&gt;&lt;p&gt;项目的C/C++属性配置如下:&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;/O2&amp;nbsp;/D&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;NDEBUG&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/D&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;_WIN32_WCE=0x600&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/D&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;UNDER_CE&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/D&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;WINCE&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/D&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;_CONSOLE&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/D&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ARM&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/D&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;_ARM_&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/D&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;_UNICODE&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/D&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;UNICODE&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/FD&amp;nbsp;/EHsc&amp;nbsp;/MT&amp;nbsp;/fp:fast&amp;nbsp;/GR-&amp;nbsp;/Yu&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;stdafx.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/Fp&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;CHSINT&amp;nbsp;SDK&amp;nbsp;For&amp;nbsp;WinCE&amp;nbsp;6.0&amp;nbsp;(ARMV4I)\Release/GPIOApp.pch&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/Fo&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;CHSINT&amp;nbsp;SDK&amp;nbsp;For&amp;nbsp;WinCE&amp;nbsp;6.0&amp;nbsp;(ARMV4I)\Release/&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/Fd&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;CHSINT&amp;nbsp;SDK&amp;nbsp;For&amp;nbsp;WinCE&amp;nbsp;6.0&amp;nbsp;(ARMV4I)\Release/vc80.pdb&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;/W3&amp;nbsp;/nologo&amp;nbsp;/c&amp;nbsp;/Zi&amp;nbsp;/TP&lt;/div&gt;&lt;/div&gt;&lt;p&gt;以上代码，均已&amp;#8220;最大化速度&amp;#8221;优化。如以&amp;#8220;最小化大小&amp;#8221;优化，代码如下，也有问题。&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0xFFFF&lt;/span&gt;;&lt;br /&gt;000110B0&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;[sp]&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;--&amp;gt;(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;000110B4&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;[sp]&amp;nbsp;&lt;br /&gt;&lt;span style="color: red;"&gt;000110B8&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;#&lt;/span&gt;&lt;span style="color: red;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;br /&gt;000110BC&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x14&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: red;"&gt;000110C0&amp;nbsp;&amp;nbsp;strh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;[r3,&amp;nbsp;#&lt;/span&gt;&lt;span style="color: red;"&gt;0x22&lt;/span&gt;&lt;span style="color: red;"&gt;]&amp;nbsp;&lt;/span&gt;&lt;br /&gt;000110C4&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;[r2,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;000110C8&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000114D4&lt;/div&gt;&lt;/div&gt;&lt;p&gt;若&amp;#8220;禁用优化&amp;#8221;，对应的代码如下，运行结果也正确。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: red;"&gt;0xFFFF&lt;/span&gt;&lt;span style="color: red;"&gt;;&lt;/span&gt;&lt;br /&gt;000110F8&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;[sp]&amp;nbsp;&lt;br /&gt;000110FC&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;r3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011100&lt;/span&gt;&amp;nbsp;&amp;nbsp;str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;[sp,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0xC&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011104&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;[sp,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0xC&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011108&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;[r3]&amp;nbsp;&lt;br /&gt;0001110C&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0xFF&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #800080;"&gt;24&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011110&lt;/span&gt;&amp;nbsp;&amp;nbsp;orr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;r3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0xFF&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011114&lt;/span&gt;&amp;nbsp;&amp;nbsp;and&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;r2,&amp;nbsp;r3&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011118&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;[sp,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0xC&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;0001111C&amp;nbsp;&amp;nbsp;str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;[r3]&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;--&amp;gt;(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011120&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;[sp]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011124&lt;/span&gt;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;r3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x20&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011128&lt;/span&gt;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;[r3]&amp;nbsp;&lt;br /&gt;0001112C&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0x14&lt;/span&gt;]&amp;nbsp;&lt;br /&gt;&lt;span style="color: #800080;"&gt;00011130&lt;/span&gt;&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #800080;"&gt;00011544&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;如果全部禁用优化，有点因噎废食的味道，还是希望能找出点原因，以免将来再次触雷。&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/we-hjb/aggbug/2215920.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/we-hjb/archive/2011/10/17/2215920.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/we-hjb/archive/2011/09/30/2196899.html</id><title type="text">VS2005过度优化的陷阱</title><summary type="text">本文描述了VS2005中使用volatile时遇到的问题，请知道的TX多多指教，谢谢！</summary><published>2011-09-30T15:17:00Z</published><updated>2011-09-30T15:17:00Z</updated><author><name>wince.he</name><uri>http://www.cnblogs.com/we-hjb/</uri></author><link rel="alternate" href="http://www.cnblogs.com/we-hjb/archive/2011/09/30/2196899.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/we-hjb/archive/2011/09/30/2196899.html"/><content type="html">&lt;p&gt;最近在调试一块S3C6410的核心板。为了验证核心板扩展槽上的所有接口，LD特地设计了一个扩展底板，上面遍布红红绿绿的LED。软件上用总线读写和GPIO来控制这些灯。观察LED的亮灭，该亮的亮，该灭的灭，说明接口没有问题，否则就需要拿给硬件检查了。&lt;/p&gt; &lt;p&gt;考虑到既有总线读写，又有大量的GPIO控制，写驱动程序会相当麻烦，所以使用了《&lt;a href="http://www.cnblogs.com/we-hjb/archive/2010/02/25/1673815.html"&gt;WinCE6.0中应用程序如何直接访问物理空间&lt;/a&gt;》中介绍的方法，直接在测试程序中实现总线访问和GPIO控制。测试程序写的还算顺利，一会儿就搞定了。不过，有些IO的控制有点奇怪，总是莫名其妙的被修改。《&lt;a href="http://www.cnblogs.com/we-hjb/archive/2008/10/23/1317176.html"&gt;ARM-WinCE5.0-寄存器读写工具&lt;/a&gt;》中曾提到过GPIO被修改的原因和解决办法。不过，在这里似乎都解释不通。因为现在只有测试应用程序能够修改GPIO，不存在被别的程序修改的可能。难道是代码写的有问题？代码已经简单到不能再简单了，如下。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;#include&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;stdafx.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;windows.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;s3c6410.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;typedef&amp;nbsp;&lt;span style="color: #0000FF;"&gt;struct&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LPVOID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pvDestMem;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwPhysAddr;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwSize;&lt;br /&gt;}&amp;nbsp;VIRTUAL_COPY_EX_DATA,*PVIRTUAL_COPY_EX_DATA;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;#define&lt;/span&gt;&amp;nbsp;IOCTL_VIRTUAL_COPY_EX&amp;nbsp;CTL_CODE&amp;nbsp;(FILE_DEVICE_UNKNOWN,3333,METHOD_BUFFERED,FILE_ANY_ACCESS)&lt;br /&gt;&lt;br /&gt;LPVOID&amp;nbsp;GetVirtual(DWORD&amp;nbsp;dwPhyBaseAddress,&amp;nbsp;DWORD&amp;nbsp;dwSize)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LPVOID&amp;nbsp;pVirtual;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VIRTUAL_COPY_EX_DATA&amp;nbsp;vced;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;(dwPhyBaseAddress&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style="color: #800080;"&gt;0xFFF&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vced.dwPhysAddr&amp;nbsp;=&amp;nbsp;dwPhyBaseAddress&amp;gt;&amp;gt;&lt;span style="color: #800080;"&gt;8&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pVirtual&amp;nbsp;=&amp;nbsp;VirtualAlloc(&lt;span style="color: #800080;"&gt;0&lt;/span&gt;,&amp;nbsp;dwSize,&amp;nbsp;MEM_RESERVE,&amp;nbsp;PAGE_NOACCESS);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vced.pvDestMem&amp;nbsp;=&amp;nbsp;pVirtual;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vced.dwSize&amp;nbsp;=&amp;nbsp;dwSize;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KernelIoControl(IOCTL_VIRTUAL_COPY_EX,&amp;nbsp;&amp;amp;vced,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;(vced),&amp;nbsp;NULL,&amp;nbsp;NULL,&amp;nbsp;NULL);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;pVirtual;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;_tmain(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;argc,&amp;nbsp;_TCHAR*&amp;nbsp;argv[])&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;volatile&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;PS3C6410_GPIO_REG&amp;nbsp;pGPIO1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1&amp;nbsp;=&amp;nbsp;(PS3C6410_GPIO_REG)GetVirtual(S3C6410_BASE_REG_PA_GPIO,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;(S3C6410_GPIO_REG));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1-&amp;gt;GPBCON&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0x22222222&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\npGPIO1-&amp;gt;GPBCON(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;(~(&lt;span style="color: #800080;"&gt;0xFFFF&lt;/span&gt;&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;&lt;span style="color: #800080;"&gt;16&lt;/span&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;--&amp;gt;(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt; &lt;p&gt;预想的执行结果应该是&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON(02222222)--&amp;gt;(00002222)&lt;/span&gt;而实际结果却是&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON(02222222)--&amp;gt;(00000000)&lt;/span&gt;，不仅仅是高16位被清零了，所有位都被清零！&lt;/p&gt;&lt;p&gt;跟LD一起调试时，愣是没找到原因。回来的路上，忽然想到可能是编译器优化的问题。不过，马上又把它给否了&amp;#8212;&amp;#8212;已经加了volatile啊。难道volatile不起效？不太可能吧？&lt;/p&gt; &lt;p&gt;到家以后，用IDA工具看了下测试程序的汇编代码，果不其然，跟预想的不一样，代码如下。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011000&lt;/span&gt;&amp;nbsp;wmain&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;CODE&amp;nbsp;XREF:&amp;nbsp;mainCRTStartupHelper+8C&#x19;p&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011000&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;DATA&amp;nbsp;XREF:&amp;nbsp;.pdata:00014000&#x19;o&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011000&lt;/span&gt;&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011000&lt;/span&gt;&amp;nbsp;var_24&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;-0x24&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011000&lt;/span&gt;&amp;nbsp;var_20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;-0x20&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011000&lt;/span&gt;&amp;nbsp;var_1C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;-0x1C&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011000&lt;/span&gt;&amp;nbsp;var_18&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;-0x18&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011000&lt;/span&gt;&amp;nbsp;var_14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;-0x14&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011000&lt;/span&gt;&amp;nbsp;var_10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;-0x10&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011000&lt;/span&gt;&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011000&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STMFD&amp;nbsp;&amp;nbsp;&amp;nbsp;SP!,&amp;nbsp;{R4,R5,LR}&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011004&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;SUB&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SP,&amp;nbsp;SP,&amp;nbsp;#0x18&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011008&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MOVL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R3,&amp;nbsp;0x7F0080&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011010&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;STR&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R3,&amp;nbsp;[SP,#0x24+var_14]&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011014&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;MOV&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011018&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;MOV&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R2,&amp;nbsp;#0x2000&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0001101C&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;MOV&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R1,&amp;nbsp;#0x940&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011020&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;MOV&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R0,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011024&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VirtualAlloc&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011028&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;MOV&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R4,&amp;nbsp;R0&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0001102C&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R0,&amp;nbsp;=0x223414&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011030&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;MOV&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LR,&amp;nbsp;#0x940&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011034&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;MOV&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R5,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011038&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;MOV&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R3,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0001103C&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;MOV&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R2,&amp;nbsp;#0xC&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011040&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;ADD&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R1,&amp;nbsp;SP,&amp;nbsp;#0x24+var_18&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011044&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;STR&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R4,&amp;nbsp;[SP,#0x24+var_18]&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011048&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;STR&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LR,&amp;nbsp;[SP,#0x24+var_10]&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0001104C&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;STR&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R5,&amp;nbsp;[SP,#0x24+var_20]&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011050&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;STR&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R5,&amp;nbsp;[SP,#0x24+var_24]&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011054&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KernelIoControl&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011058&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;STR&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R4,&amp;nbsp;[SP,#0x24+var_1C]&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0001105C&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R1,&amp;nbsp;=0x22222222&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011060&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R3,&amp;nbsp;[SP,#0x24+var_1C]&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011064&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R2,&amp;nbsp;[SP,#0x24+var_1C]&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011068&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R0,&amp;nbsp;=aPgpio1Gpbcon08&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0001106C&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;STR&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R1,&amp;nbsp;[R3,#0x20]&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011070&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R1,&amp;nbsp;[R2,#0x20]&lt;br /&gt;&lt;span style="color: red;"&gt;.&lt;/span&gt;&lt;span style="color: red;"&gt;text:&lt;/span&gt;&lt;span style="color: red;"&gt;00011074&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf&lt;/span&gt;&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011078&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R3,&amp;nbsp;[SP,#0x24+var_1C]&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0001107C&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R2,&amp;nbsp;[SP,#0x24+var_1C]&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011080&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R0,&amp;nbsp;=a08x&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011084&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;STRH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R5,&amp;nbsp;[R3,#0x22]&lt;/span&gt;&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011088&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R1,&amp;nbsp;[R2,#0x20]&lt;br /&gt;&lt;span style="color: red;"&gt;.&lt;/span&gt;&lt;span style="color: red;"&gt;text:&lt;/span&gt;&lt;span style="color: red;"&gt;0001108C&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf&lt;/span&gt;&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011090&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;MOV&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R0,&amp;nbsp;#&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011094&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;ADD&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SP,&amp;nbsp;SP,&amp;nbsp;#0x18&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011098&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LDMFD&amp;nbsp;&amp;nbsp;&amp;nbsp;SP!,&amp;nbsp;{R4,R5,PC}&lt;br /&gt;.&lt;span style="color: #008080;"&gt;text:&lt;/span&gt;&lt;span style="color: #800080;"&gt;00011098&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000;"&gt;;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;End&amp;nbsp;of&amp;nbsp;function&amp;nbsp;wmain&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON &amp;amp;= (~(0xFFFF &amp;lt;&amp;lt; 16));&lt;/span&gt;被优化得无影无踪，仅剩&lt;span style="color: red;"&gt;STRH&amp;nbsp;&amp;nbsp;&amp;nbsp; R5, [R3,#0x22]&lt;/span&gt;，而R5此时此刻为0x00000000。原因似乎是找到了，确实是编译优化的问题，但却更让人不解，这里的volatile为什么不起作用？在TCC8901上，一直都这么用，从没出现过这问题。差别在哪里呢？&lt;/p&gt; &lt;p&gt;后来对比了TCC8901的BSP，有了进一步的发现，它定义GPIO结构体的代码如下。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;typedef&amp;nbsp;&lt;span style="color: #0000FF;"&gt;struct&lt;/span&gt;&amp;nbsp;_GPIO{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPADAT;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x000&amp;nbsp;&amp;nbsp;R/W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;GPA&amp;nbsp;Data&amp;nbsp;Register&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPAEN;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x004&amp;nbsp;&amp;nbsp;R/W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;GPA&amp;nbsp;Output&amp;nbsp;Enable&amp;nbsp;Register&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPASET;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x008&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;-&amp;nbsp;&amp;nbsp;OR&amp;nbsp;function&amp;nbsp;on&amp;nbsp;GPA&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPACLR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x00C&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;-&amp;nbsp;&amp;nbsp;BIC&amp;nbsp;function&amp;nbsp;on&amp;nbsp;GPA&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPAXOR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x010&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;-&amp;nbsp;&amp;nbsp;XOR&amp;nbsp;function&amp;nbsp;on&amp;nbsp;GPA&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPACD0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x014&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x55555555&amp;nbsp;&amp;nbsp;Driver&amp;nbsp;strength&amp;nbsp;Control&amp;nbsp;0&amp;nbsp;on&amp;nbsp;GPA&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPACD1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x018&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;Driver&amp;nbsp;strength&amp;nbsp;Control&amp;nbsp;1&amp;nbsp;on&amp;nbsp;GPA&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPAPD0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x01C&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x55555555&amp;nbsp;&amp;nbsp;Pull-Up/Down&amp;nbsp;function&amp;nbsp;on&amp;nbsp;GPA&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPAPD1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x020&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;Pull-Up/Down&amp;nbsp;function&amp;nbsp;on&amp;nbsp;GPA&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPAFN0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x024&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;Port&amp;nbsp;Configuration&amp;nbsp;on&amp;nbsp;GPA&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPAFN1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x028&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;Port&amp;nbsp;Configuration&amp;nbsp;on&amp;nbsp;GPA&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPAFN2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x02C&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;Port&amp;nbsp;Configuration&amp;nbsp;on&amp;nbsp;GPA&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPAFN3;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x030&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;Port&amp;nbsp;Configuration&amp;nbsp;on&amp;nbsp;GPA&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NOTDEFINE0[&lt;span style="color: #800080;"&gt;3&lt;/span&gt;];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x034-0x03C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Reserved&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBDAT;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x040&amp;nbsp;&amp;nbsp;R/W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;GPB&amp;nbsp;Data&amp;nbsp;Register&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBEN;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x044&amp;nbsp;&amp;nbsp;R/W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;GPB&amp;nbsp;Output&amp;nbsp;Enable&amp;nbsp;Register&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBSET;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x048&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;-&amp;nbsp;&amp;nbsp;OR&amp;nbsp;function&amp;nbsp;on&amp;nbsp;GPB&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBCLR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x04C&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;-&amp;nbsp;&amp;nbsp;BIC&amp;nbsp;function&amp;nbsp;on&amp;nbsp;GPB&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBXOR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x050&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;-&amp;nbsp;&amp;nbsp;XOR&amp;nbsp;function&amp;nbsp;on&amp;nbsp;GPB&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBCD0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x054&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x55555555&amp;nbsp;&amp;nbsp;Driver&amp;nbsp;strength&amp;nbsp;Control&amp;nbsp;0&amp;nbsp;on&amp;nbsp;GPB&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBCD1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x058&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;Driver&amp;nbsp;strength&amp;nbsp;Control&amp;nbsp;1&amp;nbsp;on&amp;nbsp;GPB&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBPD0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x05C&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x55555555&amp;nbsp;&amp;nbsp;Pull-Up/Down&amp;nbsp;function&amp;nbsp;on&amp;nbsp;GPB&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBPD1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x060&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;Pull-Up/Down&amp;nbsp;function&amp;nbsp;on&amp;nbsp;GPB&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBFN0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x064&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;Port&amp;nbsp;Configuration&amp;nbsp;on&amp;nbsp;GPB&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBFN1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x068&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;Port&amp;nbsp;Configuration&amp;nbsp;on&amp;nbsp;GPB&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBFN2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x06C&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;Port&amp;nbsp;Configuration&amp;nbsp;on&amp;nbsp;GPB&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GPBFN3;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x070&amp;nbsp;&amp;nbsp;W&amp;nbsp;&amp;nbsp;0x00000000&amp;nbsp;&amp;nbsp;Port&amp;nbsp;Configuration&amp;nbsp;on&amp;nbsp;GPB&amp;nbsp;Output&amp;nbsp;Data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NOTDEFINE1[&lt;span style="color: #800080;"&gt;3&lt;/span&gt;];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x074-0x07C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Reserved&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;而S3C6410定义GPIO的结构体的代码如下。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;typedef&amp;nbsp;&lt;span style="color: #0000FF;"&gt;struct&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT32&amp;nbsp;GPACON;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;000&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT32&amp;nbsp;GPADAT;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;004&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT32&amp;nbsp;GPAPUD;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;008&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT32&amp;nbsp;GPACONSLP;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;00c&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT32&amp;nbsp;GPAPUDSLP;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;010&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT32&amp;nbsp;PAD1[&lt;span style="color: #800080;"&gt;3&lt;/span&gt;];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;014~01f&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UINT32&amp;nbsp;GPBCON;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;020&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT32&amp;nbsp;GPBDAT;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;024&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT32&amp;nbsp;GPBPUD;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;028&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT32&amp;nbsp;GPBCONSLP;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;02c&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT32&amp;nbsp;GPBPUDSLP;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;030&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT32&amp;nbsp;PAD2[&lt;span style="color: #800080;"&gt;3&lt;/span&gt;];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;034~03f&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;可以看到，在TCC8901的结构体定义中都有volatile，而S3C6410中是没有的。也许这就是原因，结构体内部必须有volatile才行？定义结构体指针变量时的volatile作用域有限，并没有起到预想的作用&amp;#8212;&amp;#8212;阻止编译器的优化。后来测试发现，如果结构体内部有volatile，定义结构体指针变量时省去volatile都行。示例代码如下，执行结果也是正确的（&lt;span style="color: red; font-size: 14pt;"&gt;前提:在结构体定义中&lt;/span&gt;&lt;span style="color: red; font-size: 14pt;"&gt;UINT32&amp;nbsp;GPBCON前&lt;/span&gt;&lt;span style="color: red; font-size: 14pt;"&gt;增加了volatile!!!&lt;/span&gt;）。 &lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;_tmain(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;argc,&amp;nbsp;_TCHAR*&amp;nbsp;argv[])&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;PS3C6410_GPIO_REG&amp;nbsp;pGPIO1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1&amp;nbsp;=&amp;nbsp;(PS3C6410_GPIO_REG)GetVirtual(S3C6410_BASE_REG_PA_GPIO,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;(S3C6410_GPIO_REG));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1-&amp;gt;GPBCON&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0x22222222&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\npGPIO1-&amp;gt;GPBCON(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;(~(&lt;span style="color: #800080;"&gt;0xFFFF&lt;/span&gt;&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;&lt;span style="color: #800080;"&gt;16&lt;/span&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;--&amp;gt;(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt; &lt;p&gt;问题的原因似乎更明朗了。但好似还是有点问题。因为在结构体中添加volatile前，下面这段代码的执行也是正确的。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;_tmain(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;argc,&amp;nbsp;_TCHAR*&amp;nbsp;argv[])&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;volatile&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;S3C6410_GPIO_REG*&amp;nbsp;pGPIO1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1&amp;nbsp;=&amp;nbsp;(PS3C6410_GPIO_REG)GetVirtual(S3C6410_BASE_REG_PA_GPIO,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;(S3C6410_GPIO_REG));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1-&amp;gt;GPBCON&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0x22222222&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\npGPIO1-&amp;gt;GPBCON(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;=&amp;nbsp;(~(&lt;span style="color: #800080;"&gt;0xFFFF&lt;/span&gt;&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;&lt;span style="color: #800080;"&gt;16&lt;/span&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;--&amp;gt;(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt; &lt;p&gt;可以看到，与问题代码唯一的不同就是"volatile &lt;span style="color: red;"&gt;PS3C6410_GPIO_REG&lt;/span&gt; pGPIO1;&amp;#8221;变成"volatile &lt;span style="color: red;"&gt;S3C6410_GPIO_REG*&lt;/span&gt; pGPIO1; &amp;#8221; ，"PS3C6410_GPIO_REG&amp;#8221;和"S3C6410_GPIO_REG*&amp;#8221;不是等价的吗？通常更习惯用&amp;#8220;PS3C6410_GPIO_REG&amp;#8221;，这也有问题么。&lt;/p&gt;&lt;p&gt;问题还没有结束，在结构体中添加volatile前，下面这段代码也能正确运行。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;_tmain(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;argc,&amp;nbsp;_TCHAR*&amp;nbsp;argv[])&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;volatile&lt;/span&gt; PS3C6410_GPIO_REG pGPIO1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1&amp;nbsp;=&amp;nbsp;(PS3C6410_GPIO_REG)GetVirtual(S3C6410_BASE_REG_PA_GPIO,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;(S3C6410_GPIO_REG));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pGPIO1-&amp;gt;GPBCON&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0x22222222&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\npGPIO1-&amp;gt;GPBCON(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON&amp;nbsp;=&amp;nbsp;pGPIO1-&amp;gt;GPBCON&amp;nbsp;&amp;amp;&amp;nbsp;(~(&lt;/span&gt;&lt;span style="color: red;"&gt;0xFFFF&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: red;"&gt;16&lt;/span&gt;&lt;span style="color: red;"&gt;));&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;--&amp;gt;(%08x)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;pGPIO1-&amp;gt;GPBCON);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;p&gt;这段代码与问题代码的唯一区别&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON &amp;amp;= (~(0xFFFF &amp;lt;&amp;lt; 16));&lt;/span&gt;&lt;span&gt;变成&lt;/span&gt;&lt;span style="color: red;"&gt;pGPIO1-&amp;gt;GPBCON = pGPIO1-&amp;gt;GPBCON &amp;amp; (~(0xFFFF &amp;lt;&amp;lt; 16));&lt;/span&gt;&lt;/p&gt;&lt;p&gt;难道这也有区别？那为什么会有这个区别呢？&lt;/p&gt;&lt;p&gt;纳闷&amp;#8230;纠结&amp;#8230;晕&amp;#8230;&lt;/p&gt; &lt;p&gt;看来现在还不能给这个问题做一个全面的总结，只有以下几点教训：&lt;/p&gt; &lt;p&gt;用volatile时得多留些心眼，有时用了volatile也不一定管用；&lt;/p&gt; &lt;p&gt;对于MCU专用寄存器结构体的定义，最好内部加上volatile；&lt;/p&gt; &lt;p&gt;在定义寄存器结体指针变量时，尽量使用形如&lt;span style="color: red;"&gt;S3C6410_GPIO_REG*&lt;/span&gt;的方式，慎用&lt;span style="color: red;"&gt;PS3C6410_GPIO_REG；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;在对MCU寄存器进行位运算时，尽量使用 &lt;span style="color: red;"&gt;a = a &amp;amp; b;&lt;/span&gt;的方式，慎用&lt;span style="color: red;"&gt;a &amp;amp;=b；&lt;/span&gt; &lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.cnblogs.com/we-hjb/archive/2010/02/25/1673815.html"&gt;WinCE6.0中应用程序直接访问物理空间&lt;/a&gt;有隐患，谨慎使用；&lt;/p&gt;&lt;p&gt;VS2005的编译器优化很强大，必须小心优化过度，但不也能因噎废食; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;只有弄清楚优化规则的来龙去脉，才能避免写出被编译器优化得面目全非的代码; &lt;br /&gt;&lt;/p&gt; &lt;p&gt;PS:疑惑还没有彻底解决，有知道的TX请明示，感兴趣的TX也请留言讨论，看晕了的TX请多包涵。祝各位节日快乐！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/we-hjb/aggbug/2196899.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/we-hjb/archive/2011/09/30/2196899.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/we-hjb/archive/2011/08/24/2152695.html</id><title type="text">Rebuild Current BSP and Subprojects的陷阱</title><summary type="text">Platform Builder 6.0下Rebuild Current BSP and Subprojects的陷阱。</summary><published>2011-08-24T15:59:00Z</published><updated>2011-08-24T15:59:00Z</updated><author><name>wince.he</name><uri>http://www.cnblogs.com/we-hjb/</uri></author><link rel="alternate" href="http://www.cnblogs.com/we-hjb/archive/2011/08/24/2152695.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/we-hjb/archive/2011/08/24/2152695.html"/><content type="html">&lt;p&gt;Rebuild Current BSP and Subprojects并不像通常所理解的，会强制重新编译整个BSP以及所有子工程，实际上，它仅仅强制重新编译了BSP，而子工程是没有强制重新编译的，这里说的强制重新编译是指以"build -c"的方式重新编译所有代码。&lt;/p&gt; &lt;p&gt;一般情况下，如果仅仅修改了BSP的代码，只需要编译BSP目录即可，如果修改了子工程的代码，也只需要编译该工程。这都是提高编译速度的一些小技巧，尽量少用很费时间的Sysgen和Clean Sysgen。&lt;/p&gt; &lt;p&gt;如果改变了项目的环境变量，且该环境变量影响了BSP和子工程。譬如多个型号的产品共用一个解决方案、一份BSP和子工程，在发布版本时，通过修改产品类型的环境变量，然后Rebuild Current BSP and Subprojects。本以为理所当然的事，却可能碰到奇怪的问题。修改产品类型后，Rebuild Current BSP and Subprojects，有一个子工程编译不过，而再单独编译一次该工程，又正常。&lt;/p&gt; &lt;p&gt;跟踪了一下Rebuild Current BSP and Subprojects的过程，发现子工程的代码并没有重新编译（因为没有修改代码，仅仅是根据环境变量在sources文件中设置了不同的宏定义和链接所用的库），而在链接时根据产品类型的定义使用了不同的lib库，库和代码不匹配导致链接错误。&lt;/p&gt; &lt;p&gt;找到问题的原因，解决起来就简单了。修改产品类型后，首先Rebuild All Subprojects，然后再Rebuild BSP。或者写一个批处理，在编译之前先手动Clean一下BSP和Subprojects，然后再Rebuild Current BSP and Subprojects。或者还可以自定义一个菜单，执行Rebuild All Subprojects和Rebuild BSP的操作，实现一键快速编译。&lt;/p&gt; &lt;p&gt;最后简单说明下Rebuild Current BSP and Subprojects的流程，首先执行"Starting Build: blddemo -c -qbsp"强制重新编译BSP，然后执行"BLDDEMO: Building PostSysgen User Projects call %_PROJECTOAKROOT%\PBPostSysgenProjects.bat"。打开PBPostSysgenProjects.bat文件，内容如下：&lt;/p&gt;&lt;pre &gt;setlocal&#xD;
pushd&#xD;
cd /d C:\WINCE600\platform\tws89x\filters\tcccamfilter&#xD;
build&#xD;
&lt;span &gt;if&lt;/span&gt; exist build.log type build.log &amp;gt;&amp;gt; %_WINCEROOT%\build.log&#xD;
&lt;span &gt;if&lt;/span&gt; exist build.wrn type build.wrn &amp;gt;&amp;gt; %_WINCEROOT%\build.wrn&#xD;
&lt;span &gt;if&lt;/span&gt; exist build.err type build.err &amp;gt;&amp;gt; %_WINCEROOT%\build.err&#xD;
cd /d C:\WINCE600\platform\tws89x\filters\tccjpgencfilter&#xD;
build&#xD;
&lt;span &gt;if&lt;/span&gt; exist build.log type build.log &amp;gt;&amp;gt; %_WINCEROOT%\build.log&#xD;
&lt;span &gt;if&lt;/span&gt; exist build.wrn type build.wrn &amp;gt;&amp;gt; %_WINCEROOT%\build.wrn&#xD;
&lt;span &gt;if&lt;/span&gt; exist build.err type build.err &amp;gt;&amp;gt; %_WINCEROOT%\build.err&lt;br /&gt;&lt;/pre&gt;&#xD;
&lt;p&gt;Build All Subprojects和Rebuild All Subprojects则执行"Starting Build: call C:\Users\HJB\AppData\Local\Temp\PB\PBPostSysgenProjects.bat"，Rebuild All Subprojects对应的PBPostSysgenProjects.bat内容如下：&lt;/p&gt;&lt;pre &gt;setlocal&#xD;
pushd&#xD;
set WINCEREL=1&#xD;
cd /d C:\WINCE600\platform\tws89x\filters\tcccamfilter&#xD;
build -c&#xD;
cd /d C:\WINCE600\platform\tws89x\filters\tccjpgencfilter&#xD;
build -c&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&lt;img src="http://www.cnblogs.com/we-hjb/aggbug/2152695.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/we-hjb/archive/2011/08/24/2152695.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/we-hjb/archive/2011/07/17/2108888.html</id><title type="text">Windows Mobile中使用WinCE驱动调试助手的小技巧</title><summary type="text">Windows Mobile中使用WinCE驱动调试助手的小技巧。</summary><published>2011-07-17T13:13:00Z</published><updated>2011-07-17T13:13:00Z</updated><author><name>wince.he</name><uri>http://www.cnblogs.com/we-hjb/</uri></author><link rel="alternate" href="http://www.cnblogs.com/we-hjb/archive/2011/07/17/2108888.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/we-hjb/archive/2011/07/17/2108888.html"/><content type="html">&lt;p&gt;驱动调试助手是针对Windows CE做的，在Windows Mobile中使用会有一些问题，最主要的就是其菜单栏被Windows Mobile系统的任务栏给遮住了，导致相应的功能无法正常使用，如下图所示。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/we-hjb/201107/201107172112459300.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="404" alt="image" src="http://images.cnblogs.com/cnblogs_com/we-hjb/201107/201107172112474053.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;按理来说只要将系统任务栏隐藏就可以，今天在模拟器上实验了一下，看起来是可行的。只是任务栏隐藏后，相应的区域出现画屏，如下图所示。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/we-hjb/201107/201107172112492459.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="404" alt="image" src="http://images.cnblogs.com/cnblogs_com/we-hjb/201107/201107172112513374.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;不知道画屏是不是模拟器的缘故，暂且不管先。驱动调试助手的菜单隐约可见，简单测试了下其中的注册表搜索的功能，也正常工作，如下图所示。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/we-hjb/201107/201107172112527145.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="404" alt="image" src="http://images.cnblogs.com/cnblogs_com/we-hjb/201107/201107172112536141.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://images.cnblogs.com/cnblogs_com/we-hjb/201107/201107172112558484.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="404" alt="image" src="http://images.cnblogs.com/cnblogs_com/we-hjb/201107/201107172112564731.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;实现方法如下，借助于一个WMDM.exe的程序，通过它隐藏系统任务栏并将同一目录下的DM.exe启动起来，在DM.exe退出后，恢复显示系统任务栏，代码如下。&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HWND&amp;nbsp;hWnd;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;dwLen;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PROCESS_INFORMATION&amp;nbsp;pi;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TCHAR&amp;nbsp;szPath[MAX_PATH];&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwLen&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetModuleFileName(NULL,&amp;nbsp;szPath,&amp;nbsp;MAX_PATH);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;dwLen)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(szPath[&lt;/span&gt;&lt;span style="color: #000000"&gt;--&lt;/span&gt;&lt;span style="color: #000000"&gt;dwLen]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;_T(&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;\\&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;14&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;szPath[dwLen]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;_T(&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;\0&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;16&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wcscat(szPath,&amp;nbsp;_T(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;DM.exe&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;17&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;18&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hWnd&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;FindWindow(_T(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;HHTaskBar&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;),&amp;nbsp;NULL);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;19&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(hWnd)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;20&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;21&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EnableWindow(hWnd,&amp;nbsp;FALSE);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;22&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ShowWindow(hWnd,&amp;nbsp;SW_HIDE);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;23&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;24&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;25&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(CreateProcess(szPath,&amp;nbsp;NULL,&amp;nbsp;NULL,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;FALSE,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;NULL,&amp;nbsp;NULL,&amp;nbsp;NULL,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;pi))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;26&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;27&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WaitForSingleObject(pi.hProcess,&amp;nbsp;INFINITE);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;28&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(pi.hThread);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;29&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(pi.hProcess);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;30&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;31&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;32&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EnableWindow(hWnd,&amp;nbsp;TRUE);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;33&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ShowWindow(hWnd,&amp;nbsp;SW_SHOW);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;WMDM的下载地址:&lt;a title="http://files.cnblogs.com/we-hjb/WMDM.rar" href="http://files.cnblogs.com/we-hjb/WMDM.rar"&gt;http://files.cnblogs.com/we-hjb/WMDM.rar&lt;/a&gt;,其中包括了ARMV4I版本的DM.exe。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/we-hjb/aggbug/2108888.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/we-hjb/archive/2011/07/17/2108888.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/we-hjb/archive/2011/06/28/2092779.html</id><title type="text">WinCE下监视设备插拔的参考代码</title><summary type="text">WinCE下监视设备插拔的参考代码。</summary><published>2011-06-28T14:36:00Z</published><updated>2011-06-28T14:36:00Z</updated><author><name>wince.he</name><uri>http://www.cnblogs.com/we-hjb/</uri></author><link rel="alternate" href="http://www.cnblogs.com/we-hjb/archive/2011/06/28/2092779.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/we-hjb/archive/2011/06/28/2092779.html"/><content type="html">&lt;p&gt;在一些项目中，系统需要实时监测U盘或SD卡的插入拔出。当文件系统加载成功后通知特定应用程序，启动自动播放功能。在U盘或其他外部存储设备移除时，也需要立即通知相应的程序，停止访问这些设备，如播放其中的音视频文件，以免程序出错。&lt;/p&gt;&#xD;
&lt;p&gt;我们可以使用WinCE设备管理器提供的Device Interface Notification来实现这个功能，参考代码如下。&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000;"&gt;DWORD&amp;nbsp;WINAPI&amp;nbsp;ThreadFun(LPVOID&amp;nbsp;lpParameter)&lt;br /&gt;&#xD;
{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HANDLE&amp;nbsp;ph[MAXIMUM_WAIT_OBJECTS];&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HANDLE&amp;nbsp;phMsgQueue[MAXIMUM_WAIT_OBJECTS&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HANDLE&amp;nbsp;phDevNotif[MAXIMUM_WAIT_OBJECTS&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MSGQUEUEOPTIONS&amp;nbsp;msgopts;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GUID&amp;nbsp;guid[]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;{BLOCK_DRIVER_GUID,&amp;nbsp;FSD_MOUNT_GUID};&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;dwCount;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BYTE&amp;nbsp;pDevBuf[&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(DEVDETAIL)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;MAX_DEVCLASS_NAMELEN&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(TCHAR)]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;{&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;};&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEVDETAIL&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;pd&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(DEVDETAIL&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)pDevBuf;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ghExitThread&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CreateEvent(NULL,&amp;nbsp;FALSE,&amp;nbsp;FALSE,&amp;nbsp;NULL);&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ph[&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ghExitThread;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwCount&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(guid)&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(GUID);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(DWORD&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;dwCount;&amp;nbsp;i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;msgopts,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(msgopts));&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;msgopts.dwFlags&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;msgopts.dwSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(msgopts);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;msgopts.dwMaxMessages&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;msgopts.cbMaxMessage&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(pDevBuf);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;msgopts.bReadAccess&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;TRUE;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;phMsgQueue[i]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CreateMsgQueue(NULL,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;msgopts);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;phDevNotif[i]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;RequestDeviceNotifications(guid&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;i,&amp;nbsp;phMsgQueue[i],&amp;nbsp;TRUE);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ph[i&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;phMsgQueue[i];&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;while&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;dwSize;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;dwFlags;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;dwWait;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;dwQueue;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwWait&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;WaitForMultipleObjects(dwCount&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;ph,&amp;nbsp;FALSE,&amp;nbsp;INFINITE);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;((dwWait&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;WAIT_OBJECT_0)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(dwWait&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(WAIT_OBJECT_0&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;dwCount&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)))&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwQueue&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(dwWait&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;WAIT_OBJECT_0)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;while&lt;/span&gt;&lt;span style="color: #000000;"&gt;(ReadMsgQueue(phMsgQueue[dwQueue],&amp;nbsp;pd,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(pDevBuf),&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;dwSize,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;dwFlags))&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(GUID_ISEQUAL(pd&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;guidDevClass,&amp;nbsp;BLOCK_DRIVER_GUID))&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\nDEV:%S&amp;nbsp;%s&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;pd&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;szName,&amp;nbsp;pd&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;fAttached&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;?&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Add!&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Removed!&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(pd&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;fAttached)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sleep(&lt;/span&gt;&lt;span style="color: #800080;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\nOpenStore!&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HANDLE&amp;nbsp;h&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;OpenStore(pd&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;szName);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STOREINFO&amp;nbsp;si;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;si,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(si));&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;si.cbSize&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(si);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\nGetStoreInfo!&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetStoreInfo(h,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;si);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n%S&amp;nbsp;%x&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;si.szStoreName,&amp;nbsp;si.dwDeviceType);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(h);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(GUID_ISEQUAL(pd&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;guidDevClass,&amp;nbsp;FSD_MOUNT_GUID))&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\nFSD:%S&amp;nbsp;%s&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;pd&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;szName,&amp;nbsp;pd&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;fAttached&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;?&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Add!&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Removed!&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sleep(&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(DWORD&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;dwCount;&amp;nbsp;i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StopDeviceNotifications(phDevNotif[i]);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseMsgQueue(phMsgQueue[i]);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(ghExitThread);&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&#xD;
}&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/we-hjb/aggbug/2092779.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/we-hjb/archive/2011/06/28/2092779.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/we-hjb/archive/2011/05/12/2044975.html</id><title type="text">Windows Embedded Compact 7移植成功</title><summary type="text">Windows Embedded Compact 7移植成功，终见WinCE7的界面真身。</summary><published>2011-05-12T15:41:00Z</published><updated>2011-05-12T15:41:00Z</updated><author><name>wince.he</name><uri>http://www.cnblogs.com/we-hjb/</uri></author><link rel="alternate" href="http://www.cnblogs.com/we-hjb/archive/2011/05/12/2044975.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/we-hjb/archive/2011/05/12/2044975.html"/><content type="html">&lt;p&gt;世乒赛如火如荼的进行着，WinCE7的移植工作也紧张有序的开展起来。一边看着王浩打柳承敏，一边移植WinCE7。王浩有惊无险的赢了，WinCE7也基本移植成功了，高兴！&lt;/p&gt;&#xD;
&lt;p&gt;WinCE7的移植方法，在《&lt;a href="http://www.cnblogs.com/we-hjb/archive/2011/02/23/1963305.html"&gt;Windows Embedded Compact 7初体验&lt;/a&gt;》中已经简单介绍过，具体细节有待进一步整理，先上两幅WinCE7的截图，这还是第一次亲见WinCE7的界面真身。啥也不说了，全在图里面。&lt;a href="http://images.cnblogs.com/cnblogs_com/we-hjb/201105/20110512234036391.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="484" alt="image" src="http://images.cnblogs.com/cnblogs_com/we-hjb/201105/201105122340395116.png" width="804" border="0" /&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/we-hjb/201105/201105122340461971.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="484" alt="image" src="http://images.cnblogs.com/cnblogs_com/we-hjb/201105/201105122340579539.png" width="804" border="0" /&gt;&lt;/a&gt;&lt;img height="480" alt="" src="http://images.cnblogs.com/cnblogs_com/we-hjb/ActiveSync.png" width="800" border="0" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/we-hjb/aggbug/2044975.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/we-hjb/archive/2011/05/12/2044975.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/we-hjb/archive/2011/05/06/2039444.html</id><title type="text">试用版Windows Embedded Compact 7的下载地址</title><summary type="text">Windows Embedded CE(Compact 7)180天试用版的下载地址。</summary><published>2011-05-06T14:32:00Z</published><updated>2011-05-06T14:32:00Z</updated><author><name>wince.he</name><uri>http://www.cnblogs.com/we-hjb/</uri></author><link rel="alternate" href="http://www.cnblogs.com/we-hjb/archive/2011/05/06/2039444.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/we-hjb/archive/2011/05/06/2039444.html"/><content type="html">&lt;p&gt;Windows Embedded Compact 7试用版已经发布一段时间了，微软官网提供的是在线安装包，不太方便下载和安装。&lt;a title="微软嵌入式中文社区" href="http://www.msembed.com/default.aspx" target="_blank"&gt;微软嵌入式中文社区&lt;/a&gt;提供了离线安装包的下载，地址如下：  &lt;/p&gt;&lt;p&gt;&lt;a href="http://download.winitpro.com.cn/MS/MSEmbed/WinCompact7evaluation_1.rar"&gt;http://download.winitpro.com.cn/MS/MSEmbed/WinCompact7evaluation_1.rar&lt;/a&gt;&lt;br /&gt;&lt;a href="http://download.winitpro.com.cn/MS/MSEmbed/WinCompact7evaluation_2.rar"&gt;http://download.winitpro.com.cn/MS/MSEmbed/WinCompact7evaluation_2.rar&lt;/a&gt;&lt;/p&gt;&lt;p&gt;感谢&lt;span&gt;David.Zang&lt;/span&gt;提供了方便，让广大WinCE的开发人员能在第一时间接触到WinCE7.0。 &lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/we-hjb/aggbug/2039444.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/we-hjb/archive/2011/05/06/2039444.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/we-hjb/archive/2011/04/28/2032247.html</id><title type="text">WinCE流驱动加载的控制</title><summary type="text">本文介绍了控制WinCE流驱动加载的方法，进一步优化了动态复用调试串口的实现方式。</summary><published>2011-04-28T14:25:00Z</published><updated>2011-04-28T14:25:00Z</updated><author><name>wince.he</name><uri>http://www.cnblogs.com/we-hjb/</uri></author><link rel="alternate" href="http://www.cnblogs.com/we-hjb/archive/2011/04/28/2032247.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/we-hjb/archive/2011/04/28/2032247.html"/><content type="html">&lt;p&gt;前段时间整理了《&lt;a href="http://www.cnblogs.com/we-hjb/archive/2011/04/14/2016481.html"&gt;WinCE下调试串口的动态复用&lt;/a&gt;》，基本实现了调试串口与普通功能串口之间的动态切换。其中实现的方法有点欠缺，在重新烧录或者升级系统后，导致系统无法正常启动。这算是个BUG。该功能加上才几天，就陆续有好几个同事碰到。本来想着使用方便的，没想到反而增添了一些麻烦。&lt;/p&gt;&#xD;
&lt;p&gt;这个问题在实现时曾考虑到，发布版本的日志里也加了说明，如果启用了调试串口，那么在烧录或者升级系统前，须禁用调试串口。说实在的，确实有点麻烦，不小心就忘了做这个工作。而问题的根源是实现机制不太合理。调试串口的配置被分散在两处，一处是存储在NAND Flash的特定区域，另一处是注册表中。系统启动时，OAL根据Flash中保存的状态，确定是否启用调试串口，而驱动加载时又根据注册表的状态，确定是否加载调试串口的驱动。两处保存的状态不同步时，问题就出现了。问题分析清楚了，解决方法自然就有了，保证两处的状态一致即可。&lt;/p&gt;&#xD;
&lt;p&gt;调试串口的配置由存储在NAND Flash中的参数决定，系统启动时根据该值，动态修改调试串口对应的注册表配置，确保在启用调试串口时，不再加载它所对应的驱动，也就不会产生冲突，导致系统无法正常启动了。&lt;/p&gt;&#xD;
&lt;p&gt;在驱动注册表中，&lt;strong&gt;Flags&lt;/strong&gt;是用于控制流驱动的加载行为的。其中DEVFLAGS_NOLOAD即表示不要加载该驱动。所以，在合适的地方添加如下代码，即可控制调试串口驱动的加载。&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DisableDebugSerial(BOOL&amp;nbsp;bDisable)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HKEY&amp;nbsp;Key;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;Status;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;Disposition;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;Value;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD&amp;nbsp;Flags;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Status&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;RegCreateKeyEx(HKEY_LOCAL_MACHINE,&amp;nbsp;L&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Drivers\\BuiltIn\\Serial3&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;NULL,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;NULL,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;Key,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;Disposition);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(Status&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ERROR_SUCCESS)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;bDisable&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;?&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DEVFLAGS_NONE&amp;nbsp;:&amp;nbsp;DEVFLAGS_NOLOAD;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;14&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegSetValueEx(Key,&amp;nbsp;DEVLOAD_FLAGS_VALNAME,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;DEVLOAD_FLAGS_VALTYPE,&amp;nbsp;(PBYTE)&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;Value,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;sizeof&lt;/span&gt;&lt;span style="color: #000000"&gt;(Value));&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegCloseKey(Key);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;16&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;17&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;如果禁用了调试串口，则将Flag是设置为DEVFLAGS_NONE，设备管理器将正常加载驱动。如果没有禁用调试串口，则将Flags设置为DEVFLAGS_NOLOAD，设备管理器就不会加载该驱动。&lt;/p&gt;&#xD;
&lt;p&gt;通过以上方法的改进，调试串口的动态复用就更方便了。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/we-hjb/aggbug/2032247.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/we-hjb/archive/2011/04/28/2032247.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
