<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Pei Zheng's Mobile Computing Blog : Windows Mobile</title><link>http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx</link><description>Tags: Windows Mobile</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>ConnectivityManager in Android SDK: Compared with Connection Manager in Windows Mobile</title><link>http://blogs.msdn.com/zhengpei/archive/2009/09/22/connectivitymanager-in-android-sdk.aspx</link><pubDate>Wed, 23 Sep 2009 08:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9898296</guid><dc:creator>zhengpei</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/9898296.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=9898296</wfw:commentRss><description>&lt;p&gt;Anyone who has ever used Windows Mobile (actually WinCE) Connection Manager will probably share mix feelings: on one side, the ConnMgr APIs provide a nice abstraction for applications to request and use a connection without knowing and controlling the physical connectivity; on the other side, it has been a pain in the neck to override or bypass Connection Manager's connection selection logic if the application should use a specific physical connection (for example, GPRS rather than WiFi). And the concept of metanetworks, Internet, Work, WAP network, Secured WAP, is indeed very confusing and difficult to manipulate. &lt;/p&gt;
&lt;p&gt;So how does Android manage connections?&lt;/p&gt;
&lt;p&gt;In Android SDK 1.5 (code named cupcake),&amp;nbsp; the android.net.ConnectivityManager class (this is Java, not C++) provides connection state management and notification functionality. Specifically, it can be used to:&lt;br&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Obtain broadcast intents when network connectivity changes by checking ConnectivityManager.CONNECTIVITY_ACTION and ConnectivityManager.EXTRA_NETWORK_INFO in a class extended from BroadcastReceiver. (For a brief introduction to Android application fundamentals, &lt;a href="http://developer.android.com/guide/topics/fundamentals.html" target="_blank" mce_href="http://developer.android.com/guide/topics/fundamentals.html"&gt;read this document&lt;/a&gt;. An example of network connectivity listener can be found &lt;a href="http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/net/NetworkConnectivityListener.java" target="_blank" mce_href="http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/net/NetworkConnectivityListener.java"&gt;here&lt;/a&gt;.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Query the coarse-grained or fine-grained state of the available networks using ConnectivityManager.GetActiveNetworkInfo() or ConnectivityManager.GetNetworkInfo(int networkType). &lt;br&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;This is same-old same-old as in Windows Mobile, which provides similar APIs like ConnMgrRegisterStatusNotification(), ConnMgrConnectionStatus, and ConnMgrQueryDetailedStatus() (examples of these APIs can be found in WM SDK &lt;a href="http://msdn.microsoft.com/en-us/library/aa455226.aspx" target="_blank" mce_href="http://msdn.microsoft.com/en-us/library/aa455226.aspx"&gt;cmhelper&lt;/a&gt;).&lt;br&gt;&lt;br&gt;However, the ConnectivityManager class does offer an interesting method called requestRouteToHost():&lt;br&gt;&lt;/p&gt;
&lt;div class="jd-details api apilevel-1"&gt;
&lt;blockquote&gt;
&lt;h4 class="jd-details-title"&gt;&lt;span class="normal"&gt;public boolean &lt;/span&gt;&lt;span class="sympad"&gt;requestRouteToHost&lt;/span&gt; &lt;span class="normal"&gt;(int networkType, int hostAddress)&lt;/span&gt; &lt;/h4&gt;
&lt;div class="api-level"&gt;Since: &lt;a href="http://developer.android.com/guide/appendix/api-levels.html#level1"&gt;API Level 1&lt;/a&gt; &lt;/div&gt;
&lt;div class="jd-tagdata jd-tagdescr"&gt;
&lt;p&gt;Ensure that a network route exists to deliver traffic to the specified host via the specified network interface. An attempt to add a route that already exists is ignored, but treated as successful.&lt;/p&gt;&lt;/div&gt;
&lt;div class="jd-tagdata"&gt;
&lt;h5 class="jd-tagtitle"&gt;Parameters&lt;/h5&gt;
&lt;table class="jd-tagtable"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;networkType &lt;/th&gt;
&lt;td&gt;the type of the network over which traffic to the specified host is to be routed&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;hostAddress &lt;/th&gt;
&lt;td&gt;the IP address of the host to which the route is desired&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h5 class="jd-tagtitle"&gt;Returns&lt;/h5&gt;
&lt;ul class="nolist"&gt;
&lt;li&gt;&lt;code class="Code prettyprint"&gt;true&lt;/code&gt; on success, &lt;code class="Code prettyprint"&gt;false&lt;/code&gt; on failure &lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;
&lt;div class="jd-details-descr"&gt;
&lt;div class="jd-tagdata"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;This method is very useful--it allows your application to ensure that a desired physical connectivity (represented by the networkType) is available to reach a specific destination. If a route to the destination IP address from the desired network type is in place (in the routing table), then it simply returns success. Otherwise, it will try to make that happen--this is not mentioned in the above description but can be traced to ConnectivityService class:&lt;/p&gt;
&lt;p&gt;In &lt;a href="http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/net/ConnectivityManager.java" target="_blank" mce_href="http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/net/ConnectivityManager.java"&gt;ConnectivityManager class&lt;/a&gt; where mService is a ConnectivityService object: &lt;br&gt;&lt;/p&gt;/**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Ensure that a network route exists to deliver traffic to the specified&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * host via the specified network interface.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param networkType the type of the network over which traffic to the specified&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * host is to be routed&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param hostAddress the IP address of the host to which the route is desired&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return {@code true} on success, {@code false} on failure&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean requestRouteToHost(int networkType, int hostAddress) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enforceChangePermission();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!ConnectivityManager.isNetworkTypeValid(networkType)) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; NetworkStateTracker tracker = mNetTrackers[networkType];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; * If there's only one connected network, and it's the one requested,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * then we don't have to do anything - the requested route already&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * exists. If it's not the requested network, then it's not possible&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * to establish the requested route. Finally, if there is more than&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * one connected network, then we must insert an entry in the routing&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * table.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; if (getNumConnectedNetworks() &amp;gt; 1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return tracker.requestRouteToHost(hostAddress);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return tracker.getNetworkInfo().getType() == networkType;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;The mNetTrackers array contains NetworkStateTracker objects for different network types (mobile data and WiFi).&lt;br&gt;&lt;br&gt;In MobileDataStateTracker class, which extends from NetworkStateTracker:&lt;br&gt;&lt;br&gt;/**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Ensure that a network route exists to deliver traffic to the specified&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * host via the mobile data network.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param hostAddress the IP address of the host to which the route is desired,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * in network byte order.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return {@code true} on success, {@code false} on failure&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean requestRouteToHost(int hostAddress) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mInterfaceName != null &amp;amp;&amp;amp; hostAddress != -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (DBG) {&lt;br&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; Log.d(TAG, "Requested host route to " + Integer.toHexString(hostAddress));&lt;br&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NetworkUtils.addHostRoute(mInterfaceName, hostAddress) == 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;p&gt;Notice the NetworkUtils.addHostRoute() call. This will add a host route into the system's routing table for the specified destination address via the mobile WWAN interface. This enables the scenario where you want your MMS go through a specific APN for MMS while other traffic on another APN. As of Android SDK 1.5, only MobileDataStateTracker class will actually does this--the WiFiStateTracker class does not do anything yet at this point. &lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898296" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Wireless+Technologies/default.aspx">Wireless Technologies</category><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Connection+Manager/default.aspx">Connection Manager</category></item><item><title>3rd Party Software Integration: What Quality Gates are Needed?</title><link>http://blogs.msdn.com/zhengpei/archive/2009/08/18/3rd-party-software-integartion-what-quality-gates-are-needed.aspx</link><pubDate>Tue, 18 Aug 2009 20:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9874429</guid><dc:creator>zhengpei</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/9874429.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=9874429</wfw:commentRss><description>&lt;p&gt;One of the key phases for a mobile device project is 3rd party software integration, which is usually done after initial software baseline has been established (BSP migration complete, driver stabilized, hopper &amp;amp; battery life pass). According to device software product definition, a number of 3rd party applications and modules (for example, some DShow filters) have been identified and made available for integration at this phase. Some of these software may not be the final release as the vendors may also need to conduct technical evaluation and testing with a sample device on their side before releasing a final release. Vendors will provide in-ROM integration instructions, and the ROM build team just needs to follow the instructions to generate test images.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Nonetheless, a well-defined strategy and process for 3rd party software quality gating turn out to be highly critical for device software stability. At minimum, for each 3rd party application, the following quality gates must be used:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Detecting leaks using Application Verifier: Make sure the application does no have significant memory leaks, handle leaks, GDI leaks. For modules/drivers, develop test tools to run within Application Verifier. This can be done within 3 days for a single application or module. &lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;MTTF using hopper: Any application should not take down hopper number by more than 10%. Some applications were not designed with hopper testing in mind (for example, an application runs full-screen but does not enable "Start" button). These will bring down hopper numbers so they must be fixed. Having a focused hopper tool handy such that you can stress a specific application. Also useful is to enable debug messages in those 3rd party applications such that you can always check CElogs for a failed hopper run. This will usually take 3-6 days depending on the degradation of hopper numbers caused by the application.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Battery life/DoU: Windows Mobile application design guideline suggests that an application should follow device power management (by registering for power notification events) and react to system power state changes accordingly. No polling or animations when the application is in background. Use power monitor to check power consumption when the application is running and the device is in various power states. DoU test can be performed to ensure an application does not bring down more than 10% of the DoU number. This will take one or two weeks if the application needs to be modified and re-tested.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;No device crashes/hang: this is quite obvious. A 3rd party application often comes with an acceptance test plan, which identifies test cases in different priorities. Perform all the tests and make sure there is no crash (we're sorry messages) or device hang. If there are crashes, the root cause must be found and fixed (if it is in the application) by looking into the dump files (kdmp) with symbols. A consistent repro of a crash is ship-blocking and must be fixed. Depending on the complexity of the test plan, this step may take 2-3 weeks and even longer if the 3rd party software does not come with good quality.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In summary, for a single 3rd party application, it may take several weeks to perform the integration and quality gating, during which effective communication with the vendors is important and both sides understand the device will not ship unless these quality gates are passed (according to the license agreement with the vendors). Issues uncovered should be properly prioritized such that key blocking/critical issues are resolved in the new builds from the vendor, whereas low-user-impact issues can be punted to maintenance releases later. &lt;/p&gt;&lt;p&gt;To ensure high quality of the 3rd party software and overall device stability, and importantly device software will be delivered as planned, an earlier planning of integration and quality gating for each 3rd party software is a must-do for overall device software engineering management, along with required QA/Dev resources pre-allocated. &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9874429" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Mobile+Landscape/default.aspx">Mobile Landscape</category></item><item><title>Windows CE Storage Manager Breakdown</title><link>http://blogs.msdn.com/zhengpei/archive/2009/08/14/windows-ce-storage-manager-breakdown.aspx</link><pubDate>Sat, 15 Aug 2009 00:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9870602</guid><dc:creator>zhengpei</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/9870602.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=9870602</wfw:commentRss><description>&lt;P&gt;The best architectural pictures for Windows CE / Windows Mobile Storage Manager are the followings (from &lt;A href="http://msdn.microsoft.com/en-us/library/aa459155.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/aa459155.aspx"&gt;msdn site&lt;/A&gt;):&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG align=middle src="http://i.msdn.microsoft.com/Aa912098.49d587db-3007-4bd0-bcde-e877d458728c%28en-us,MSDN.10%29.gif" width=351 height=348 mce_src="http://i.msdn.microsoft.com/Aa912098.49d587db-3007-4bd0-bcde-e877d458728c(en-us,MSDN.10).gif"&gt;&amp;nbsp;&lt;IMG align=middle src="http://i.msdn.microsoft.com/Aa459155.embedded06172003_fig3%28en-us,MSDN.10%29.gif" width=149 height=375 mce_src="http://i.msdn.microsoft.com/Aa459155.embedded06172003_fig3(en-us,MSDN.10).gif"&gt;&lt;/P&gt;
&lt;P&gt;Now, if you look at the following call stack on a WM6.5 device emulator (CE5), the above picture is much easier to understand:&lt;/P&gt;
&lt;P&gt;Call Stack: filesys.exe: 0x1FFE9356 &lt;BR&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;0x0406eb18 AMDNORD!CNorFmd::ReadSector(unsigned long) fmd.cpp line 256&lt;BR&gt;0x0406eb18 AMDNORD!FMD_ReadSector() fmd.cpp line 1168&lt;BR&gt;0x0406eb24 AMDNORD!Fal::ReadFromMedia() fal.cpp line 160 + 36 bytes&lt;BR&gt;0x0406eb50 AMDNORD!ReadFromMedia() falmain.cpp line 1064 + 20 bytes&lt;BR&gt;0x0406eb7c AMDNORD!DSK_IOControl(unsigned char *, unsigned long, unsigned long *) falmain.cpp line 695 + 8 bytes&lt;BR&gt;0x0406ebb4 FSDMGR!CBlockDevice::Control(void *, unsigned long, unsigned long *, _OVERLAPPED *) blockdev.h line 90 + 40 bytes&lt;BR&gt;0x0406ebe0 FSDMGR!FS_DevDeviceIoControl(void *, unsigned long, unsigned long *, _OVERLAPPED *) blockdev.cpp line 24&lt;BR&gt;0x0406ec00 NK!SC_DeviceIoControl(void *, unsigned long, unsigned long *, _OVERLAPPED *) kmisc.c line 2871 + 52 bytes&lt;BR&gt;0x0406ec74 COREDLL!xxx_DeviceIoControl(void *, unsigned long, unsigned long *, _OVERLAPPED *) twinbase.cpp line 49 + 52 bytes&lt;BR&gt;0x0406ecac FSDMGR!CStore::InternalStoreIoControl(void *, unsigned long, unsigned long *, _OVERLAPPED *) store.cpp line 887&lt;BR&gt;0x0406eccc FSDMGR!FSDMGR_DiskIoControl(void *, unsigned long, unsigned long *, _OVERLAPPED *) fsdserv.cpp line 567 + 60 bytes&lt;BR&gt;0x0406ed10 MSPART!ReadPartition(unsigned long, unsigned long *) part.cpp line 600 + 60 bytes&lt;BR&gt;0x0406ed40 MSPART!PD_DeviceIoControl(unsigned char *, unsigned long, unsigned long *) part.cpp line 754 + 36 bytes&lt;BR&gt;0x0406ed74 FSDMGR!CPartDriver::DeviceIoControl(unsigned long, void *, unsigned long, unsigned long *) partition.h line 273 + 52 bytes&lt;BR&gt;0x0406edac FSDMGR!PartitionIoControl(void *, unsigned long, unsigned long *, _OVERLAPPED *) partition.cpp line 57 + 40 bytes&lt;BR&gt;0x0406edd8 FSDMGR!FSDMGR_DiskIoControl(void *, unsigned long, unsigned long *, _OVERLAPPED *) fsdserv.cpp line 567 + 60 bytes&lt;BR&gt;0x0406ee1c FSDMGR!ReadWriteDiskEx() fsdserv.cpp line 215 + 48 bytes&lt;BR&gt;0x0406ee4c FSDMGR!FSDMGR_ReadDiskEx() fsdserv.cpp line 317&lt;BR&gt;0x0406ee50 IMGFS!CVolume::ReadDisk() imgfsvol.cpp line 1715 + 32 bytes&lt;BR&gt;0x0406eeac IMGFS!CStream::LoadBlockAllocationTable() imgfsfile.cpp line 326 + 16 bytes&lt;BR&gt;0x0406eedc IMGFS!CStream::CStream(unsigned long) imgfsfile.cpp line 215&lt;BR&gt;0x0406eee4 IMGFS!CFile::GetStream() imgfsfile.cpp line 172 + 36 bytes&lt;BR&gt;0x0406ef00 IMGFS!CVolume::FS_CreateFileW_read(unsigned long, unsigned long, unsigned long) imgfsvol.cpp line 944 + 12 bytes&lt;BR&gt;0x0406f138 IMGFS!FSD_CreateFileW(unsigned long, _SECURITY_ATTRIBUTES *, unsigned long, unsigned long, void *) imgfsapi.cpp line 95&lt;BR&gt;0x0406f150 FSDMGR!FSDMGR_CreateFileW(unsigned long, _SECURITY_ATTRIBUTES *, unsigned long, unsigned long, void *) fsdapis.cpp line 1020 + 76 bytes&lt;BR&gt;0x0406f1b0 COREDLL!xxx_AFS_CreateFileW(unsigned long, _SECURITY_ATTRIBUTES *, unsigned long, unsigned long, void *) textfile.c line 95&lt;BR&gt;0x0406f1dc FILESYS!FS_CreateFileW(unsigned long, unsigned long, void *) fsmain.c line 2246 + 60 bytes&lt;BR&gt;0x0406f6fc NK!SC_CreateFileW(unsigned long, unsigned long, void *) kmisc.c line 2600 + 56 bytes&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;From the top to the bottom of the stack:&lt;/P&gt;
&lt;P&gt;AMDNORD.DLL: flash driver, which is a block driver FMD (Flash Media Driver) linked with FAL (Flash Abstraction Layer) lib.&amp;nbsp; Source code for this FMD used in the device emulator is in \PLATFORM\DeviceEmulator\SRC\COMMON\AMD\FMD\. Real world examples of MSFLASHFMD&amp;nbsp;are avaliable here PUBLIC\COMMON\OAK\DRIVERS\BLOCK\MSFLASHFMD. &lt;/P&gt;
&lt;P&gt;FMD exposes standard stream interface to device manager. The associated storage file is specified in the Drivers registry key. &lt;BR&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\AmdNorFMD]&lt;BR&gt;&amp;nbsp;&amp;nbsp; "Dll"="amdnord.dll"&lt;BR&gt;&amp;nbsp;&amp;nbsp; "Order"=dword:2&lt;BR&gt;&amp;nbsp;&amp;nbsp; "Prefix"="DSK"&lt;BR&gt;&amp;nbsp;&amp;nbsp; "Ioctl"=dword:4&lt;BR&gt;&amp;nbsp;&amp;nbsp; "Profile"="MSFlash"&lt;BR&gt;&amp;nbsp;&amp;nbsp; "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"&lt;BR&gt;&amp;nbsp;&amp;nbsp; "MemBase"=dword:A8020000&lt;BR&gt;&amp;nbsp;&amp;nbsp; "MemLen"=dword:05FE0000&lt;BR&gt;&amp;nbsp;&amp;nbsp; "Flags"=dword:00010000 &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;FSDMGR.DLL: file system driver manager, which looks into the storage profile in the registry to find partition driver (if any) and file system drivers (FSDs) for those partitions (and possiblely file system filter drivers as well). If no partition driver is specified, then entire device is exposed as a single partition. In this&amp;nbsp;example, the file systems to be loaded are Imgfs and FATFS (FMD for RAM file system (root)&amp;nbsp;plus hive storage is ramfmd.dll in PUBLIC\COMMON\OAK\DRIVERS\BLOCK\MSFLASHFMD\RAM). Note that the MSFLASH flash block driver has been specified as auto-load block driver, meaning that it will be loaded by storage manager instead of device manager, and it cannot be unloaded. &lt;BR&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;"PartitionDriver"="mspart.dll"&lt;/B&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "MountAsROM"=dword:1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "MountHidden"=dword:1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Folder"="Flash Disk"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Name"="FLASH Disk Block Device"&lt;BR&gt;&lt;BR&gt;; Keep FATFS from trying to shadow \Windows&lt;BR&gt;[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\FATFS]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "MountAsROM"=dword:0&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "MountHidden"=dword:0&lt;/P&gt;
&lt;P&gt;; Support XIP in IMGFS&lt;BR&gt;[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\IMGFS]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "XIP"=dword:1&lt;/P&gt;
&lt;P&gt;; Default settings for ImgFS. These can be overriden per profile.&lt;BR&gt;[HKEY_LOCAL_MACHINE\System\StorageManager\IMGFS]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "FriendlyName"="Image-Update Filesystem"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;"Dll"="imgfs.dll"&lt;/B&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Paging"=dword:1&lt;BR&gt;; @CESYSGEN IF IMGFS_IMGFS_NOWRITE&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; By default, a read-only imgfs partition will shadow ROM.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ShadowROM"=dword:1&lt;BR&gt;; @CESYSGEN ENDIF&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;; Override names in default profile&lt;BR&gt;[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Name"="MSFLASH for AMD Nor"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Folder"="NOR Flash"&lt;BR&gt;&lt;BR&gt;[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\MSFlash]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "DriverPath"="Drivers\\BuiltIn\\AmdNorFMD"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; LoadFlags 0x01 == load synchronously&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "LoadFlags"=dword:1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Order"=dword:0&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "BootPhase"=dword:0 &lt;BR&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;MSPART.DLL: partition driver to be used for the MSFLASH profile bound with the flash block driver.&lt;/P&gt;
&lt;P&gt;IMGFS.DLL: file system driver for Imgfs which is mounted at \Windows.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;So from the bottom to the top, when the file system (filesys.exe) is about to create a file, file system manager (fsdmgr.dll) finds the file system driver (imgfs.dll) which in turn asks for ReadDisk from file system manager. Then the file system driver issues FSDMGR_DiskIoControl to partition driver (mspart.dll), which eventually goes to the flash block driver (amdnord.dll). If there is a file system filter driver in place, then it will&amp;nbsp;reside as an extra lightweight file system driver on top of the standard one. I hope this helps clarify the architecture of CE/Mobile storage management.&lt;BR&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9870602" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Using Power Monitor to Tackle Battery Life Problems: Examples</title><link>http://blogs.msdn.com/zhengpei/archive/2009/08/11/using-power-monitor-to-tackle-battery-life-problems-examples.aspx</link><pubDate>Tue, 11 Aug 2009 20:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9864716</guid><dc:creator>zhengpei</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/9864716.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=9864716</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://www.monsoonsolutions.com/LabEquipment/PowerMonitor/" target="_blank" mce_href="http://www.monsoonsolutions.com/LabEquipment/PowerMonitor/"&gt;Power monitor (made by Monsoon solutions)&lt;/a&gt; is a very useful to improve device battery life. I think every OEM/ODM engineering team should have on handy to watch and troubleshoot battery life issues. Even better, bring the power monitor with your devices into the field, and perform filed tests or comparison tests. For example, how's power consumption of the GPS chip on your device? Just take a drive with your device and connected power monitor with GPS on and capture the logs. Then power monitor will parse the logs and give you a power consumption graph for the test. &lt;/p&gt;

&lt;p&gt;The following are some examples of using power monitor to uncover mysterious battery life issues. &lt;/p&gt;

&lt;p&gt;1. Standby Current - 30mA ! &lt;br&gt;&lt;/p&gt;

&lt;table style="width: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href="http://picasaweb.google.com/lh/photo/_uc96mzW1rQQJEgNk0nWuQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_kuJ2zKqXit8/SoGuT6Qq2zI/AAAAAAAAGlc/M21hl1WvfOk/s800/StandbyCurrent.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;This graph shows power consumption data of several scenarios on a device: 2G MT call, 2G MO call, Switching to 3G (by changing phone settings), 3G MT call, 3G MO call, and then device gets back to standby with screen off. Device backlight, which burns about 50mA of current, will be turned off after 30 seconds of idle time. When that happens the standby current is around 2-8mA, as can seen after the 2G MT, 2G MO, and 3G MT calls.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;The problem is that after the 3G MO call, and device backlight off and suspends, the standby current stays at around 30mA forever. Back-of-the-envelop calculation shows for a whole day 30mA * 24h = 720mAH, about half of the battery capacity on the device. &lt;/p&gt;

&lt;p&gt;As this can be reproduced pretty easily, modem log and CE log can be collected and investigated. Eventually this turned out to be the audio path not being properly closed when the 3G MO out ended. After fixing it in RIL driver, the problem was solved. &lt;/p&gt;

&lt;p&gt;2. Mysterious thread&lt;/p&gt;



&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/DKGpk-Pe2Q66fn-1zi2RWQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_kuJ2zKqXit8/SoG_vQIsIaI/AAAAAAAAGlo/l1SRWk_e2DY/s800/Mysterious_1Minute_thread.PNG"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;This is a classic example of power-unaware programming. At some point the device starts to run a mysterious thread exactly every minute (see the 120mA spikes, even if in suspend mode. Essentially this leads to an average current of about 20-30mA, which is definitely unacceptable. More specifically, when the thread runs, it drains an average of 50mA for 16 seconds, and that will be 13.3mAh for an hour, or 320mAh a day!&lt;/p&gt;&lt;p&gt;How to find the culprit thread? Use Kernel Tracker. Try to look for WaitForSingleObject() calls that has a timeout of 1 minute. If the kernel tracker GUI does not work for you, get the CE log and look for mysterious threads that run every 60 seconds:&lt;/p&gt;&lt;div style="margin-left: 40px;"&gt;0:10:35.890.640 , Switch Thread , hThread=0x07A9FFAE&lt;br&gt;0:10:35.890.645 , Migrate Thread , hProcess=0x07AB230E&lt;br&gt;0:10:35.890.741 , Wait for Multiple Objects , Timeout=60000ms , WaitAll=0 , NumObjects=8 , Object 0: 0x07AA8C2A , Object 1: 0x07A9A2C6 , Object 2: 0xC7A9A5D2 , Object 3: 0x07A9A392 , Object 4: 0xC7A9A506 , Object 5: 0x07A9FAAA , Object 6: 0x47A9A986 , Object 7: 0x07AC15E2&lt;br&gt;&lt;br&gt;&lt;br&gt;0:11:15.961.408 , Switch Thread , hThread=0x07A9FFAE&lt;br&gt;0:11:15.961.412 , Migrate Thread , hProcess=0x07AB230E&lt;br&gt;0:11:15.961.508 , Wait for Multiple Objects , Timeout=60000ms , WaitAll=0 , NumObjects=8 , Object 0: 0x07AA8C2A , Object 1: 0x07A9A2C6 , Object 2: 0xC7A9A5D2 , Object 3: 0x07A9A392 , Object 4: 0xC7A9A506 , Object 5: 0x07A9FAAA , Object 6: 0x47A9A986 , Object 7: 0x07AC15E2&lt;br&gt;&lt;/div&gt;&lt;p&gt;This can be further mapped to a thread name as long as you have flat release directory. For the issue, it turned out a battery monitor thread in devices.exe that has a bug which will keep the thread running forever even if the device has been suspended.&lt;/p&gt;&lt;p&gt;Summary: &lt;/p&gt;&lt;p&gt;Power monitor is a great weapon to attach battery life problems for mobile devices. Use it along with other tools such as kernel tracker, CE Log, and KITL to pinpoint what has been wrong in your system. Always has a reference device handy so you know what are normal and what are not. When you perform a scenario test, have CE Log running will be a good idea, but you have to be aware that CE Log flush will drain some battery and create some spikes in your power graph. &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9864716" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Windows Mobile Device DRM Integration</title><link>http://blogs.msdn.com/zhengpei/archive/2009/08/09/windows-mobile-device-drm-integration-test.aspx</link><pubDate>Mon, 10 Aug 2009 01:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9862723</guid><dc:creator>zhengpei</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/9862723.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=9862723</wfw:commentRss><description>&lt;p&gt;Many devices today provide an OMA DRM 1.x/2.0 solution from a 3rd party (for example, from &lt;a href="http://www.irdeto.com" target="_blank" mce_href="http://www.irdeto.com"&gt;irdeto&lt;/a&gt;). So how to verify if the integration has been properly done? Well, aside from the tests that your vendor performed, you can also use the following site to verify:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.drmtest.com" mce_href="http://www.drmtest.com"&gt;http://www.drmtest.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Common use of this site is to test those Forward Lock and Combined Delivery content such as images (JPG, GIF) and media formats (WAV, mp3, etc).&amp;nbsp;&lt;/p&gt;&lt;p&gt;To make a Windows Mobile phone DRM-ready, i.e., be able to recognize DRM content received via MMS, email, or from the web, a specific file system filter driver has to be loaded into the system. This is often done by adding the the filter into the MODULES section of the memory bib file such that it will be loaded into Slot 1 (unless Slot 1 is so crowded that the module overflows into Slot 0), and put required registry values (for registering the filter driver with file system) to BOOT HIVE.&lt;/p&gt;&lt;p&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link href="file:///C:%5CUsers%5Cpzheng%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"&gt;&lt;link href="file:///C:%5CUsers%5Cpzheng%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"&gt;&lt;link href="file:///C:%5CUsers%5Cpzheng%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;ZH-CN&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
   &lt;w:UseFELayout/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:宋体;
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-alt:????????¨¬????;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
	{font-family:"\@宋体";
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 680460288 22 0 262145 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	text-justify:inter-ideograph;
	mso-pagination:widow-orphan;
	font-size:10.5pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:宋体;
	mso-bidi-font-family:宋体;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;
&lt;/style&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:宋体;
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;/p&gt;&lt;blockquote&gt;&lt;p class="MsoNormal" style="margin-left: 10.5pt;"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;; HIVE BOOT SECTION&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 10.5pt;"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;[HKEY_LOCAL_MACHINE\System\StorageManager\Filters]&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 10.5pt;"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;[HKEY_LOCAL_MACHINE\System\StorageManager\Filters\DrmFSFilter]&amp;nbsp;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 10.5pt;"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;"Order"=dword:00000001&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 10.5pt;"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;"Dll"="DrmFSFilter.dll" &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 10.5pt;"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;; END HIVE BOOT SECTION&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;MA DRM specifications can be downloaded from &lt;a href="http://www.openmobilealliance.org/technical/release_program/drm_archive.aspx" target="_blank" mce_href="http://www.openmobilealliance.org/technical/release_program/drm_archive.aspx"&gt;http://www.openmobilealliance.org/technical/release_program/drm_archive.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9862723" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>DirectShow Tool GraphEdt on Windows Mobile</title><link>http://blogs.msdn.com/zhengpei/archive/2009/08/07/directshow-tool-graphedt-on-windows-mobile.aspx</link><pubDate>Sat, 08 Aug 2009 02:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9860797</guid><dc:creator>zhengpei</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/9860797.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=9860797</wfw:commentRss><description>&lt;p&gt;On Windows and Windows CE, the &lt;b&gt;GraphEdt&lt;/b&gt; tool can be used to investigate (visually) what DShow filters are used for a given media file, and it is also very useful to verify if your filters work as expected. For desktop Windows, this tool is included in the platform SDK or so called Windows SDK. On Windows CE, the following steps have been suggested to do this: &lt;/p&gt;&lt;p&gt;&amp;nbsp;To use graphedt on CE 5.0, you need to do the following:&lt;br&gt; &lt;br&gt;
1.    set WINCEREL=1&lt;br&gt; &lt;br&gt;
2.    graphedt uses MFC, so set SYSGEN_MFC=1. Then do "sysgen -p dcom mfc"&lt;br&gt; &lt;br&gt;
3.    sysgen -p directx graphedt&lt;br&gt; &lt;br&gt; Then you should see graphedt.exe in your _flatreleasedir.&lt;/p&gt;&lt;p&gt;On a Windows Mobile AKU build environment, if you follow the steps above, you will hit errors like there at Step 3:&lt;/p&gt;&lt;p&gt;\public\common\sdk\lib\ARMV4I\retail\corelibc.lib &lt;br&gt;graphedt.lib(filtervw.obj) : error LNK2001: unresolved external symbol IID_IDirectDrawSurfaceKernel&lt;br&gt;graphedt.lib(filtervw.obj) : error LNK2001: unresolved external symbol IID_IDirectDrawKernel&lt;br&gt;graphedt.lib(filtervw.obj) : error LNK2001: unresolved external symbol IID_IDDVideoPortContainer&lt;br&gt;&lt;/p&gt;&lt;p&gt;Meantime I am looking into this and see if this can be fixed. Or it can't be fixed because it is by-design because officially Microsoft does not support GraphEdt on Windows Mobile? &amp;nbsp; &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9860797" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Best Client Apps of Twitter, Facebook, LinkedIn, Youtube, Picassa for Windows Mobile</title><link>http://blogs.msdn.com/zhengpei/archive/2009/06/27/best-windows-mobile-client-of-twitter-facebook-linkedin-youtube-picassa-and-more.aspx</link><pubDate>Sat, 27 Jun 2009 20:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9806690</guid><dc:creator>zhengpei</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/9806690.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=9806690</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;Here is&amp;nbsp;the outcome of my&amp;nbsp;little research...&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Best Twitter Client for Windows Mobile&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://code.google.com/p/pocketwit/" target=_blank mce_href="http://code.google.com/p/pocketwit/"&gt;PocketTwit&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 356px; HEIGHT: 548px" src="http://pocketwit.googlecode.com/svn/trunk/Screenshots/MainList.png" width=356 height=548 mce_src="http://pocketwit.googlecode.com/svn/trunk/Screenshots/MainList.png"&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;---------------------------------------------------------------------------------------------------------------------------------------&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Best Facebook Client for Windows Mobile&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/windowsmobile/en-us/downloads/facebook.mspx" target=_blank mce_href="http://www.microsoft.com/windowsmobile/en-us/downloads/facebook.mspx"&gt;Offical Facebook Client by Microsoft&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG src="http://www.microsoft.com/library/media/1033/windowsmobile/en-us/assets/images/downloads/scr_facebook03.jpg" mce_src="http://www.microsoft.com/library/media/1033/windowsmobile/en-us/assets/images/downloads/scr_facebook03.jpg"&gt;&lt;IMG style="WIDTH: 260px; HEIGHT: 195px" src="http://www.microsoft.com/library/media/1033/windowsmobile/en-us/assets/images/downloads/scr_facebook02.jpg" width=260 height=195 mce_src="http://www.microsoft.com/library/media/1033/windowsmobile/en-us/assets/images/downloads/scr_facebook02.jpg"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;---------------------------------------------------------------------------------------------------------------------------------------&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Best LinkedIn Client for Windows Mobile&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;There is no LinkedIn client for Windows Mobile yet at this moment.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;---------------------------------------------------------------------------------------------------------------------------------------&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Best Youtube Client for Windows Mobile&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;A href="http://www.google.com/mobile/winmo/youtube.html" target=_blank mce_href="http://www.google.com/mobile/winmo/youtube.html"&gt;The official Youtube client&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;IMG src="http://www.winmobiletech.com/kuvat/0903youtube7.png" width=354 height=487 mce_src="http://www.winmobiletech.com/kuvat/0903youtube7.png"&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;---------------------------------------------------------------------------------------------------------------------------------------&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Best Picasa Client for Windows Mobile&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;No standalone app available yet. From a web browser you can visit m.google.com/photos to acccess the mobile picasa site.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9806690" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Mobile+Landscape/default.aspx">Mobile Landscape</category></item><item><title>Remote-Desktop into MacOS from Windows Mobile</title><link>http://blogs.msdn.com/zhengpei/archive/2009/03/06/remote-desktop-into-macos-from-windows-mobile.aspx</link><pubDate>Sat, 07 Mar 2009 01:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9463560</guid><dc:creator>zhengpei</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/9463560.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=9463560</wfw:commentRss><description>&lt;p&gt;Windows Mobile 6 has the built-in remote desktop client. So you can use it to remote desktop into any Windows machine running terminal services (i.e., running the &lt;a href="http://en.wikipedia.org/wiki/Remote_Desktop_Protocol" target="_blank" mce_href="http://en.wikipedia.org/wiki/Remote_Desktop_Protocol"&gt;RDP&lt;/a&gt; service that listens at Port 3389). For example, once you enable remote desktop on your XP box, you can remote into it using the client on Windows Mobile. For any other platforms, as long as you have the open source &lt;a href="http://xrdp.sourceforge.net/" target="_blank" mce_href="http://xrdp.sourceforge.net/"&gt;xrdp&lt;/a&gt; package installed (which is a RDP server),&amp;nbsp; you can remote into it.&lt;/p&gt;&lt;p&gt;RDP is only one flavor of the remote-desktop world. VNC (Virtual Networking Computing) has been there way before RDP becomes pupular on Windows. &lt;br&gt;&lt;/p&gt;&lt;p&gt;For MacOS, there is an easier way to remote-desktop into it:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Enable Apple Remote Desktop (an implementation of VNC service): &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link href="file:///C:%5CUsers%5Cpzheng%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"&gt;&lt;link href="file:///C:%5CUsers%5Cpzheng%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"&gt;&lt;link href="file:///C:%5CUsers%5Cpzheng%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;ZH-CN&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:宋体;
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-alt:??¨¬?;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
	{font-family:"\@宋体";
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 680460288 22 0 262145 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:宋体;
	mso-fareast-theme-font:minor-fareast;
	mso-bidi-font-family:"Times New Roman";}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;
&lt;/style&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;span style="font-size: 11pt; font-family: 'Calibri','sans-serif';"&gt;Preferences &amp;gt; Sharing &amp;gt; select Apple Remote
Desktop&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Install a VNC client on your Windows Mobile device. I tried several, but only &lt;a href="http://zoomvnc.com/index.php/Download" target="_blank" mce_href="http://zoomvnc.com/index.php/Download"&gt;ZoomVNC&lt;/a&gt; works on my WM6.1 device.&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;Done. Isn't that simple?&lt;br&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link href="file:///C:%5CUsers%5Cpzheng%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"&gt;&lt;link href="file:///C:%5CUsers%5Cpzheng%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso" rel="Edit-Time-Data"&gt;&lt;!--[if !mso]&gt;
&lt;style&gt;
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;link href="file:///C:%5CUsers%5Cpzheng%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"&gt;&lt;link href="file:///C:%5CUsers%5Cpzheng%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;ZH-CN&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:宋体;
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-alt:??¨¬?;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
	{font-family:"\@宋体";
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 680460288 22 0 262145 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:宋体;
	mso-fareast-theme-font:minor-fareast;
	mso-bidi-font-family:"Times New Roman";}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;
&lt;/style&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman","serif";}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;span style="font-size: 11pt; font-family: 'Calibri','sans-serif'; color: rgb(31, 73, 125);"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75"
 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
 filled="f" stroked="f"&gt;
 &lt;v:stroke joinstyle="miter"/&gt;
 &lt;v:formulas&gt;
  &lt;v:f eqn="if lineDrawn pixelLineWidth 0"/&gt;
  &lt;v:f eqn="sum @0 1 0"/&gt;
  &lt;v:f eqn="sum 0 0 @1"/&gt;
  &lt;v:f eqn="prod @2 1 2"/&gt;
  &lt;v:f eqn="prod @3 21600 pixelWidth"/&gt;
  &lt;v:f eqn="prod @3 21600 pixelHeight"/&gt;
  &lt;v:f eqn="sum @0 0 1"/&gt;
  &lt;v:f eqn="prod @6 1 2"/&gt;
  &lt;v:f eqn="prod @7 21600 pixelWidth"/&gt;
  &lt;v:f eqn="sum @8 21600 0"/&gt;
  &lt;v:f eqn="prod @7 21600 pixelHeight"/&gt;
  &lt;v:f eqn="sum @10 21600 0"/&gt;
 &lt;/v:formulas&gt;
 &lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/&gt;
 &lt;o:lock v:ext="edit" aspectratio="t"/&gt;
&lt;/v:shapetype&gt;&lt;v:shape id="Picture_x0020_4" o:spid="_x0000_i1025" type="#_x0000_t75"
 alt="" style='width:240pt;height:180pt'&gt;
 &lt;v:imagedata src="file:///C:\Users\pzheng\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"
  o:href="cid:image001.png@01C99E51.0C4A5F30"/&gt;
&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="file:///C:/Users/pzheng/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg" v:shapes="Picture_x0020_4" width="320" height="240"&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9463560" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Mobile OS Virtualization </title><link>http://blogs.msdn.com/zhengpei/archive/2008/11/25/mobile-os-virtualization.aspx</link><pubDate>Tue, 25 Nov 2008 23:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9142740</guid><dc:creator>zhengpei</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/9142740.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=9142740</wfw:commentRss><description>&lt;P&gt;Even before &lt;A href="http://www.reuters.com/article/internetNews/idUSTRE4A977220081110" target=_blank mce_href="http://www.reuters.com/article/internetNews/idUSTRE4A977220081110"&gt;VMWare acquires Trango&lt;/A&gt;, the &lt;A href="http://www.trango-vp.com/" target=_blank mce_href="http://www.trango-vp.com/"&gt;French company specialized in mobile OS virtualization&lt;/A&gt;, I've heard some OEMs in talks with Trango for future Windows Mobile devices. &lt;/P&gt;
&lt;P&gt;A picture is better than 1000 words. Here is a picture of Trango's virtual processor: &lt;/P&gt;
&lt;P&gt;&lt;IMG height=360 src="http://www.trango-vp.com/cms/site/rubrique_images/Schemas/TGO_VP_and_HWresources.jpg" width=650 align=middle mce_src="http://www.trango-vp.com/cms/site/rubrique_images/Schemas/TGO_VP_and_HWresources.jpg"&gt;&lt;/P&gt;
&lt;P&gt;The hypervisor is the Virtual Machine Monitor. From Trango's website:&lt;BR&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;I&gt;The TRANGO hypervisor is a virtualization layer that allows multiple Virtual Machines to run on a single Hardware platform. It is based on paravirtualization technology which &lt;B&gt;requires that the guest OS be slightly modified&lt;/B&gt;.&amp;nbsp; "Privileged" or kernel mode instructions in the OS that access hardware directly are modified to API calls to the hypervisor, or "hypercalls".&lt;BR&gt;&lt;/I&gt;&lt;/P&gt;&lt;I&gt;Para virtualization is the most appropriate virtualization technique for embedded applications as it allows the best real-time performance compared to emulation or full virtualization which impose considerable resource burdens on the system both from the standpoint of memory and CPU overhead.&lt;/I&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This is like Microsoft's Hypervisor for desktop systems, as opposed to VMWare's. This solution can be used for enabling something that Windows Mobile does not support, for example, iMode for Japanese market, or maybe running Windows Mobile apps on iPhone, or the other way around? &lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9142740" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Cellular Based Video Telephony on Windows Mobile</title><link>http://blogs.msdn.com/zhengpei/archive/2008/11/14/cellular-based-video-telephony-on-windows-mobile.aspx</link><pubDate>Fri, 14 Nov 2008 11:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9068790</guid><dc:creator>zhengpei</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/9068790.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=9068790</wfw:commentRss><description>How do you enable Video Telephony on Windows Mobile? What are the things you have to be careful of? &lt;br&gt;&lt;br&gt;First
of all, what is the underlying bearer? WiFi, WiMax, or 3G? For WiFi and
WiMax, VT will be just a Video over IP application. For 3G, however,
most likely it will be a circuit-switching based application. This
article is focused on the 3G side of video telephony on Windows Mobile.
The standard 3G-324M is based on ITU H.324 standard that specified a
data rate of 64 kilobits per second over a circuit-switched UMTS or
TD-SCDMA
connection.&lt;br&gt;&lt;br&gt;The following picture shows the 3G-324M architecture (copied from &lt;a href="http://www.smartphonemag.com/cms/_archives/oct06/mobilevideo.aspx?page=0%2C4" mce_href="http://www.smartphonemag.com/cms/_archives/oct06/mobilevideo.aspx?page=0%2C4" title="an article" target="_blank" id="k4gi"&gt;an article&lt;/a&gt; published at www.smartphonemag.com):&lt;div id="ua3w" style="padding: 1em 0pt; text-align: center;"&gt;&lt;img src="http://docs.google.com/File?id=ajcpkgnrjfr4_155gnszqjff_b" mce_src="http://docs.google.com/File?id=ajcpkgnrjfr4_155gnszqjff_b" style="width: 500px; height: 209px;"&gt;&lt;/div&gt;Overall, to enable Video Telephony on Windows Mobile, there are four major work items to be done:&lt;br&gt;&lt;ol&gt;&lt;li&gt;Develop a VT application must enable circuit switching for video call with the baseband processor using TAPI;&lt;/li&gt;&lt;li&gt;Must have 3G-324M protocol stack, such as the one from &lt;a href="http://www.radvision.com/Products/Developer/Protocol/3G324M/" mce_href="http://www.radvision.com/Products/Developer/Protocol/3G324M/" title="Radvision" target="_blank" id="ulnd"&gt;Radvision&lt;/a&gt; or &lt;a href="http://www.dilithiumnetworks.com/solutions/handsetchipset_OEM.asp" mce_href="http://www.dilithiumnetworks.com/solutions/handsetchipset_OEM.asp" title="Dilithium" target="_blank" id="bg_d"&gt;Dilithium&lt;/a&gt;;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Must have Video codecs for H.264 (a.k.a MPEG-4 AVC), H.263, 3gp, etc.&lt;br&gt;&lt;/li&gt;&lt;li&gt;VT application should be tightly integrated with Windows Mobile phone app;&lt;/li&gt;&lt;/ol&gt;The following picture from Radvision shows the architecture of a VT app on Windows Mobile:&lt;br&gt;&lt;br&gt;&lt;div id="dlye" style="padding: 1em 0pt; text-align: center;"&gt;&lt;img src="http://docs.google.com/File?id=ajcpkgnrjfr4_157ck4wh8g5_b" mce_src="http://docs.google.com/File?id=ajcpkgnrjfr4_157ck4wh8g5_b" style="width: 520px; height: 319px;"&gt;&lt;/div&gt;&lt;br&gt;Note
that the VT application goes directly to TAPI and then RIL. Contrast to
handling cellular voice calls, connection manager is not involved for
VT calls. However, connection manager will be able to detect radio
resources used by VT calls and manage them as "alien calls" which has a
higher priority of data connection but lower priority of cellular voice
call.&lt;br&gt;&lt;br&gt;Phone canvas integration with the VT application is easy -
Windows Mobile provides many ways to customize controls on the phone
canvas. The AKU has numerous examples of doing that. Outlook and
contacts integration can also be done without too much difficulty.
Codec-wise, the programming interface is standard Direct Show based.&lt;br&gt;&lt;br&gt;The
major work is the 3G-324M stack, such as implementing call
establishment, control control and quality of service support. Doing
that from scratch does not seem to worth the effort. Adopting a
high-performance stack is a common practice among device manufacturers.
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9068790" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Debugging Stack Fault of Hopper Failure on Windows Mobile devices</title><link>http://blogs.msdn.com/zhengpei/archive/2008/09/11/debugging-stack-fault.aspx</link><pubDate>Fri, 12 Sep 2008 09:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8945629</guid><dc:creator>zhengpei</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/8945629.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=8945629</wfw:commentRss><description>&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.25in; text-indent: -0.25in;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;span style=""&gt;&lt;font face="Calibri"&gt;1.&lt;/font&gt;&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;Introduction&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Stack fault happens whenever a thread’s stack is almost used up, and the Windows CE kernel will generate a message of the problem like this:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 12pt;"&gt;&lt;font face="Calibri"&gt;9381584 PID:47c40bda TID:24ccc7ce [Stack fault]: Thread=85fa3a40 Proc=8060e640 'device.exe'&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 12pt;"&gt;&lt;font face="Calibri"&gt;9381584 PID:47c40bda TID:24ccc7ce AKY=00020013 PC=01a23be0(&lt;b style=""&gt;&lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;dummy.dll&lt;/span&gt;&lt;/b&gt;+0x00003be0) RA=03ed33a0(devmgr.dll+0x000033a0) BVA=&lt;b style=""&gt;24081d24&lt;/b&gt; FSR=00000007&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;The data in the message is important to understand the failure, which can be a data abort, stack fault, page fault, etc. &lt;/font&gt;&lt;/p&gt;
&lt;ul style="margin-top: 0in;" type="disc"&gt;
&lt;li class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;AKY &lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;"Access Key": Process slot bitmask corresponding to the processes the excepting thread has access to. Platform Builder can show Access Keys of each process in the “Processes” window.&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;PC "Program Counter": Represents the current line of instruction. On ARM platforms, this is the current value of the PC register and EIP (Instruction Pointer) on x86 platforms. If symbols are available, the exception handler will attempt to provide an offset line into the DLL that caused the exception.&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;RA "Return Address": Pointer to the instruction address of the function that called the current function. Had the current function NOT caused an exception, this is where we would return to. For a DLL on Windows CE, simply use the last two bytes of the address plus the preferred load address of the module (0x10000000) to search Rva+Base column in the corresponding map file and you will find the function the address falls into. For an EXE, use the last two bytes of the address plus the preferred load address (0x00010000) to search the Rva+Base column. The same calculation applies to BVA below.&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;BVA "Base Virtual Address": The contents of BVA depend on the type of exception found. If the exception is a Prefetch Abort, the value points directly to the PC register (execution point). If the exception is a Data Abort, then this value points to why the exception was caused. It is a combination of the Virtual Memory base of the module found plus the value that caused the exception.&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;FSR "Fault Status Register": The FSR represents several flags that will help you understand the nature of your exception. For ARM devices the following flags can be set:&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; text-indent: 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;#define FSR_ALIGNMENT&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x01&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&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; &lt;/span&gt;#define FSR_PAGE_ERROR&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x02&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&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; &lt;/span&gt;#define FSR_TRANSLATION&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x05&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&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; &lt;/span&gt;#define FSR_DOMAIN_ERROR&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x09&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&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; &lt;/span&gt;#define FSR_PERMISSION&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x0D&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;To confirm a stack fault failure, you should at least have the system dump when the problem occurred. Or better yet, you have a KITL enabled device and you can reproduce the problem.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.25in; text-indent: -0.25in;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;span style=""&gt;&lt;font face="Calibri"&gt;2.&lt;/font&gt;&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;A Real Example&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;The following is a real world example of stack fault in while running Hopper with focus on tmail.exe. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;9381584 PID:47c40bda TID:24ccc7ce [Stack fault]: Thread=85fa3a40 Proc=8060e640 'device.exe'&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;9381584 PID:47c40bda TID:24ccc7ce AKY=00020013 PC=01a23be0(&lt;b style=""&gt;&lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;dummy.dll&lt;/span&gt;&lt;/b&gt;+0x00003be0) RA=03ed33a0(devmgr.dll+0x000033a0) BVA=&lt;b style=""&gt;24081d24&lt;/b&gt; FSR=00000007&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;Failed to initialize bug tagger! &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;9383377 PID:47c40bda TID:24ccc7ce RaiseException: Thread=85fa3a40 Proc=8060e640 'device.exe'&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;9383463 PID:47c40bda TID:24ccc7ce AKY=00020013 PC=03f6c3c4(coredll.dll+0x0001e3c4) RA=8030a514(NK.EXE+0x0000a514) BVA=00000001 FSR=00000001&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;9384183 PID:a79698b2 TID:a5f6ac92 OEMIoControl: Unsupported Code 0x1010058 - device 0x0101 func 22&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;Assembly Dump:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;DUM_IOControl:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BA4 E1A0C00D&lt;span style=""&gt;&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=""&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;mov&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r12, sp&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BA8 E92D5FF0&lt;span style=""&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;/span&gt;stmdb&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sp!, {r4 - r12, lr}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BAC E28DB028&lt;span style=""&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;/span&gt;add&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r11, sp, #0x28 &amp;lt;&amp;lt;r11 points back to last sp (0x28 accounts for 40 bytes for those saved registers)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BB0 E59FCD48&lt;span style=""&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;/span&gt;ldr&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r12, [pc, #0xD48]&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&amp;lt; Load value into r12 from address 0x01A24900. Note that the value is negative. (FFFF7EFC or -33028,&lt;b style=""&gt; the size of the local variables&lt;/b&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BB4 E08DD00C&lt;span style=""&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;/span&gt;add&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sp, sp, r12&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&amp;lt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Sp = 24081D44 and only 7K (1D44)&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;left on the stack after this.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;$L36859:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BB8 E1A06002&lt;span style=""&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;/span&gt;mov&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r6, r2&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BBC E1A04001&lt;span style=""&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;/span&gt;mov&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r4, r1&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BC0 E59F3D34&lt;span style=""&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;/span&gt;ldr&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, [pc, #0xD34]&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BC4 E5933000&lt;span style=""&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;/span&gt;ldr&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, dwLenIni &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BC8 E50B302C&lt;span style=""&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;/span&gt;str&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, [r11, #-0x2C]&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BCC E59F0D24&lt;span style=""&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;/span&gt;ldr&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r0, [pc, #0xD24]&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BD0 E3A08001&lt;span style=""&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;/span&gt;mov&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r8, #1&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BD4 E3A03000&lt;span style=""&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;/span&gt;mov&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, #0&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BD8 E3A07057&lt;span style=""&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;/span&gt;mov&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r7, #0x57&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BDC E24BC902&lt;span style=""&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;/span&gt;sub&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r12, r11, #2, 18 &amp;lt;&amp;lt; r12 = r11 -2&amp;gt;&amp;gt;18 = 0x24081e70&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;font face="Calibri"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;01A23BE0 E50C7114&lt;span style=""&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;/span&gt;str&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r7, [r12, #-0x114]&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&amp;lt; Crash here since a page in request failed due to stack overflow&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A23BE4 E24BC902&lt;span style=""&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;/span&gt;sub&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r12, r11, #2, 18&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;…&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;01A24900 FFFF7EFC&lt;span style=""&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;/span&gt;???&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;Registers Dump:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;R0 = 01A23138 R1 = 0001000D R2 = 24089F80 R3 = 00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;R4 = 0001000D R5 = 0005E180 R6 = 24089F80 R7 = 00000057&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;R8 = 00000001 R9 = 24089F80 R10 = 00000000 R11 = 24089E70&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;R12 = &lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;24081E70&lt;/span&gt; Sp = 24081D44 Lr = 03ED33A0 Pc = 01A23BE0&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;Cpsr = 4000001F&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;Negative=0 Zero=1 Carry=0 Overflow=0 Q=0&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;Call Stack Dump:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;Call Stack: tmail.exe: 0x24CCC7CE&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;11:36:54 12/07/2007 Taipei Standard Time&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b style=""&gt;&lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;0x24081d44&lt;/span&gt;&lt;/b&gt; DUMMY!DUM_IOControl(void * 0x00000000, unsigned long 0x00000000, unsigned long * 0x00000000) dummy.cpp line 491 + 20 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x24089e70 DEVMGR!DM_DevDeviceIoControl(void * 0x00000000, unsigned long 0x00000000, unsigned long * 0x00000000, _OVERLAPPED * 0x00000000 {Internal=??? InternalHigh=??? Offset=??? ...}) devfile.c line 464 + 44 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x24089eb4 NK!SC_DeviceIoControl(void * 0x00000000, unsigned long 0x0001000d, unsigned long * 0x80321034, _OVERLAPPED * 0x0ba6169c {Internal=0x00550044 InternalHigh=0x0031004d Offset=0x0000003a ...}) kmisc.c line 2860 + 52 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x24089f28 COREDLL!xxx_DeviceIoControl(void * 0x00000000, unsigned long 0x00000000, unsigned long * 0x00000000, _OVERLAPPED * 0x00000000 {Internal=??? InternalHigh=??? Offset=??? ...}) twinbase.cpp line 49 + 52 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x24089f60 CAMERA_MAINSTONEII!SetCameraPresentFlag() cameradriver.cpp line 419&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x24089f90 CAMERA_MAINSTONEII!CAM_Open() cameradriver.cpp line 461&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x24089fb4 DEVMGR!I_CreateDeviceHandle(void * 0x0005e020) devfile.c line 98 + 24 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x2408a004 DEVMGR!DM_CreateDeviceHandle() devfile.c line 182 + 24 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x2408a084 COREDLL!xxx_CreateDeviceHandle() tdevice.c line 122&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x2408a08c FILESYS!FS_CreateFileW(unsigned long 0x00075c08, unsigned long 0xc0000000, void * 0x00000001) fsmain.c line 2275 + 28 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x2408a5ac COREDLL!xxx_CreateFileW(unsigned long 0x00000003, unsigned long 0x00000080, void * 0x00000000) twinbase.cpp line 100 + 52 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0x2408a5e0 QUARTZ!CCaptureAdapter::Load() adapter.cpp line 69 + 44 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;End Call Stack: tmail.exe: 0x24CCC7CE&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;11:36:54 12/07/2007 Taipei Standard Time&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Combining the call stack and the registers, we can draw the following figure of the thread stack:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;img src="http://blogs.msdn.com/photos/zhengpei/images/8945631/original.aspx" border="0"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;The local variable size in the function DUM_IOControl() is 33028 (Note that -33298=&lt;/font&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt; FFFF7EFC)&lt;/span&gt;&lt;font size="3"&gt;. However, the thread stack is almost used up, with only 7492(0x1D44) bytes left. The problem should not occur if OEM checks every warning message when they compile the code.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;font face="Calibri"&gt;The following instruction results in a device hang:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.25in; line-height: normal;"&gt;&lt;font face="Calibri"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;01A23BE0 E50C7114&lt;span style=""&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;/span&gt;str&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r7, [r12, #-0x114]&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&amp;lt; Crash here since a page in request failed due to stack overflow&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style=""&gt;&lt;font face="Calibri" size="3"&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; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;At this point r12 is 0x24081E70. Thus r7 will be stored in &lt;b style=""&gt;0x2E081D5C&lt;/b&gt;. Note that there are two 4K guard pages for a 64Kb thread stack (in this case the thread stack is 0x24080000 ~ 0x2408FFFF). Note that when you build applications within Platform Builder or the Windows Mobile Adaptation Kit, the default thread stack is 64Kb of reserved virtual memory (the physical RAM is committed one page at a time). This is a pretty reasonable limit for most things on an embedded device. However, when you build your applications in Visual Studio, the default thread stack is 1MB of reserved virtual memory, which is often much more than needed. That is why experienced Windows Mobile application developers will set the default thread stack to 64Kb in Visual Studio (in Project properties &lt;/font&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;span style=""&gt;à&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri"&gt; Linker &lt;/font&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;span style=""&gt;à&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri"&gt; System &lt;/font&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;span style=""&gt;à&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri"&gt; Stack Reserve Size) and then allocate larger stacks only when necessary. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Back to the stack fault above, the two guard pages are: Page A: 0x24082000-0x24083FFFF and Page B: 0x24080000-0x24081FFFF. When Page B is being hit, the kernel will throw an exception for the application to handle. If the application hits Page A, the system will terminate the thread. The above instruction is hitting Page B and the thread will be terminated immediately. For more on thread stack guard pages, see &lt;/font&gt;&lt;a href="http://blogs.msdn.com/hopperx/archive/2006/02/03/524170.aspx" mce_href="http://blogs.msdn.com/hopperx/archive/2006/02/03/524170.aspx"&gt;&lt;font color="#0000ff" face="Calibri" size="3"&gt;http://blogs.msdn.com/hopperx/archive/2006/02/03/524170.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.25in; text-indent: -0.25in;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;span style=""&gt;&lt;font face="Calibri"&gt;3.&lt;/font&gt;&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;A Faulty Sample Driver&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Now let’s take a look at the sample driver that demos the sample problem. Let’s first see the failure logs and call stacks.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;Debug messages:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;920555 PID:a377f6ca TID:624727c2 [Stack fault]: Thread=83451bb4 Proc=80314240 'device.exe'&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;920557 PID:a377f6ca TID:624727c2 AKY=00000411 PC=&lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;019b14dc&lt;/span&gt;(baddrv.dll+0x000014dc) RA=019b151c(baddrv.dll+0x0000151c) BVA=161b19a4 FSR=00000005&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&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; &lt;/span&gt;Call stack:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;0x161b19cc BADDRV!StackOverflow(unsigned long 0x00000010)&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;line 25&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;0x161b59d8 BADDRV!StackOverflow(unsigned long 0x00000010)&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;line 34&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;0x161b99e4 BADDRV!StackOverflow(unsigned long 0x00000011)&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;line 34&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;0x161bd9f0 BADDRV!Stack_Fault(unsigned char * 0x00000000, unsigned long 0x00000000, unsigned char * 0x00000000, unsigned long 0x00000000, unsigned long * 0x161bdb6c)&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;line 20&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;0x161bda0c BADDRV!Launch_Test_case(unsigned long 0x00000300, unsigned char * 0x00000000, unsigned long 0x00000000, unsigned char * 0x00000000, unsigned long 0x00000000, unsigned long * 0x161bdb6c)&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;line 40&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;0x161bda38 BADDRV!BAD_IOControl(unsigned long 0x00000066, unsigned long 0x00000300, unsigned char * 0x00000000, unsigned long 0x00000000, unsigned char * 0x00000000, unsigned long 0x00000000, unsigned long * 0x161bdb6c)&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;line 78 + 36 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;0x161bda68 DEVMGR!DM_DevDeviceIoControl(void * 0x00000000, unsigned long 0x161bdb6c, unsigned long * 0x00000000, _OVERLAPPED * 0x161c5970)&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;line 464 + 44 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;NK!80036520()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&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; &lt;/span&gt;Registers:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;R0 = 00000010 R1 = 00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;R2 = 00000000 R3 = 00000001&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;R4 = 019B14A0 R5 = 00000003&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;R6 = 00000300 R7 = 00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;R8 = 00000000 R9 = 00000000&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;R10 = 00000000 R11 = 161BDAA8&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;R12 = 161B59D8 &lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;Sp = 161B19CC&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;Lr = 019B151C Pc = 019B14DC&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;Cpsr = 2000001F&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;Negative=0 Zero=0 Carry=1 Overflow=0&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;Q=0&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;IRQ=0 FIQ=0 Thumb=0&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;M4=1 M3=1 M2=1 M1=1 M0=1&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;Disassembly: &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;StackOverflow:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B14CC&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mov&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r12, sp&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B14D0&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;stmdb&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sp!, {r0}&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B14D4&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;stmdb&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sp!, {r12, lr}&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B14D8&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sub&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sp, sp, #1, 18&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;$M26864:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;font face="Calibri" size="3"&gt;019B14DC&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;add&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, sp, #1, 18&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B14E0&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ldr&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, [r3, #8]&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B14E4&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cmp&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, #0&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B14E8&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bhi&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;|$M26864+14h (019b14f0)|&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B14EC&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;b&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;|$M26864+40h (019b151c)|&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B14F0&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;add&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, sp, #1, 18&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B14F4&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ldr&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, [r3, #8]&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B14F8&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sub&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, r3, #1&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B14FC&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;add&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r12, sp, #1, 18&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B1500&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;str&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, [r12, #8]&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B1504&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mov&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, #1&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B1508&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;add&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r12, sp, #3, 20&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B150C&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;str&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r3, [r12, #0xFFC]&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B1510&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;add&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r0, sp, #1, 18&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B1514&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ldr&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r0, [r0, #8]&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B1518&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bl&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;|StackOverflow (019b14cc)|&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B151C&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;add&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sp, sp, #1, 18&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B1520&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ldmia&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sp, {sp, lr}&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;"&gt;&lt;font face="Calibri" size="3"&gt;019B1524&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bx&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;lr&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;The faulting instruction is PC=019B14DC. At that point SP is 161B19CC. We know that for each thread’s stack ranges from xxxx0000 ~ xxxxffff, and 161B19CC falls into the topmost guard page (Please refer to the stack figure in the above example). Therefore when the kernel sees this as one of the operands in this instruction, it will generate the stack fault.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;The code that creates big arrays on the thread stack is shown below:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Lucida Console';"&gt;void&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt; Stack_Fault( PBYTE pBufIn, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&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; &lt;/span&gt;DWORD dwLenIn, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&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; &lt;/span&gt;PBYTE pBufOut, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&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; &lt;/span&gt;DWORD dwLenOut, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&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; &lt;/span&gt;PDWORD pdwActualOut )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DWORD dwStackDepth = 18;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;StackOverflow(dwStackDepth);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Lucida Console';"&gt;void&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt; StackOverflow(DWORD dwDepthCount)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;(0 &amp;gt;= dwDepthCount )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;dwDepthCount --;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Create an array on the stack&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DWORD buf[4096];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;buf[4095] = 1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt 0.5in; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;StackOverflow(dwDepthCount);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt; text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: 'Lucida Console';"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Stack_Fault() calls StackOverflow() recursively. Each time 4Kb of space is allocated on the thread stack. This explains why the thread stack is all used up after three calls of StackOverflow(), as shown in the call stack dump above.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.25in; text-indent: -0.25in;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;span style=""&gt;&lt;font face="Calibri"&gt;4.&lt;/font&gt;&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;font face="Calibri"&gt;Conclusion&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;This article discusses stack fault, a common problem with a device driver on Windows Mobile platform. The problem occurs when the guard pages of the 64Kb thread stack is being hit. When you see this problem while running Hopper or other tests, make sure you have the call stack and registers, as well as the assembly code such that you can verify the cause. &lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8945629" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Debugging Attached Process on Devices</title><link>http://blogs.msdn.com/zhengpei/archive/2008/09/05/debugging-attached-process-on-devices.aspx</link><pubDate>Sat, 06 Sep 2008 00:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8926968</guid><dc:creator>zhengpei</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/8926968.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=8926968</wfw:commentRss><description>&lt;P&gt;Very often I need to build a quick test EXE or DLL and test it using device emulator. I can of course do this by using Platform Builder's "load from release directory" feature with a KITL enabled image. But this will require a full booting up&amp;nbsp;of the image. &lt;/P&gt;
&lt;P&gt;I can also use the "Attach to Process" feature of Visual Studio Smart Device component. First run the test application on a device emulator, then attach the VS debugger to the process. Then when you break the process, you probably see some disassembly code with unresolved addresses. So the question is, how to make better use of this feature for source code debugging? &lt;/P&gt;
&lt;P&gt;First, you need to check if the symbol of&amp;nbsp;the test application&amp;nbsp;is loaded. Open the 'Modules' windows and see if the symbol file (PDB) of the test application is showing up there. You should see 'symbol loaded' if you have the PDB file and the EXE/DLL in the same directory where you run the test application. &lt;/P&gt;
&lt;P&gt;Then, think about what code is running when you break the process. If you see symbol of the test application is loaded but you did not see any symbol in the disassembly window when you break the process, chances are the process is running code that you don't have the symbols. For example, for a simple Win32 window application created using the wizard, if you break it, you will end up in the message loop somewhere in coredll.dll. If you don't have symbol for it, you will not see any meaningful information in the disassembly window and the call stack window. &lt;/P&gt;
&lt;P&gt;A good way to break the test application is to create a breakpoint that you know it will be hit. After attaching the debugger to the process, add a new breakpoint such as "func" (whereas func is a function in the test application). &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;NOTE: DO NOT USE THE PB METHOD OF ADDING A BREAKPOINT HERE!&lt;/U&gt;&lt;/STRONG&gt; That is, just enter the function name, not the PB way of "{,,yourapp.exe} func". &lt;/P&gt;
&lt;P&gt;Then you should see the breakpoint is resolved and a solid red circle shows up next to it in the breakpoint window. Then when you do something with the application to trigger this breakpoint, you will see the application breaks and its source code shows up! Well, that is based on the assumption that the source code path indicated in the PDB file exists on this computer. If the debugger has trouble finding the source files using that path, it will pop up a nice dialog box for you to specify a path. In that case, just browse to the place where you have the source files. &lt;/P&gt;
&lt;P&gt;Now, you can do source code debugging of the process you just attached. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8926968" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Cloud Computing: "Save To My SkyDrive"</title><link>http://blogs.msdn.com/zhengpei/archive/2008/08/02/save-to-my-skydrive.aspx</link><pubDate>Sat, 02 Aug 2008 03:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8803479</guid><dc:creator>zhengpei</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/8803479.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=8803479</wfw:commentRss><description>&lt;p&gt;Disclaimer:&amp;nbsp;this post does not imply anything related to Microsoft&amp;nbsp;Cloud Computing strategy.&lt;/p&gt;
&lt;p&gt;What does Cloud Computing (CC)&amp;nbsp;mean to me?&amp;nbsp; Two services for now:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://skydrive.live.com/" target="_blank" mce_href="http://skydrive.live.com/"&gt;Microsoft SkyDrive&lt;/a&gt; is a service to store and share files on the web, and &lt;a href="http://docs.google.com" class="" target="_blank" mce_href="http://docs.google.com"&gt;Google Docs &lt;/a&gt;enables online editing and sharing of documents and calendars. (Google Gear allows offline editing). &lt;/p&gt;
&lt;p&gt;One feature missing from both services is what I call the "&lt;b&gt;Save To My SkyDrive&lt;/b&gt;" on the "File" menu, with which you can edit your stuff in your client application and save it directly to your SkyDrive. Even better, you&amp;nbsp;should be able to&amp;nbsp;create a network drive that maps your SkyDrive to a drive letter, and drag and drop your stuff directly into the drive.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Looking ahead, I expect a lot (probably not all) of &lt;b&gt;your&amp;nbsp;communication materials&amp;nbsp;on your hard drive will be actually just local copies of&amp;nbsp;the same stuff&amp;nbsp;in the cloud&lt;/b&gt;. We already have emails stored somewhere on the Internet so we can access anywhere, anytime, from any computer. We will see a lot more going this direction: your Office docs, your calendar, your personal documents, your health care record, your family photos, etc. In other words, the web, or the cloud, is your big "My Documents" folder, and you are either working offline with some client applications such as Microsoft Office and sync with the cloud later, or working online using web browser based applications to edit your files directly. &lt;/p&gt;
&lt;p&gt;The files are not even stored and managed in one single place - for example, your family video may not be saved as&amp;nbsp;a single file&amp;nbsp;on Cloud Server # 314 at Mountain View, CA. Instead, pieces of this file may be stored in various places in New York City, Phoenix, Chicago, and Seattle, and some networking coding scheme is employed to achieve excellent performance and reliability (P2P users should know what I mean here). &lt;/p&gt;
&lt;p&gt;And your mobile devices should be doing the same thing - offline editing and online syncing to your corner in the cloud.&lt;/p&gt;
&lt;p&gt;One word: &lt;b&gt;web-sourcing&lt;/b&gt;. We will see our local storage sourced to the cloud, and a lot of our communications (file editing and review, meeting request, trip planning and expense tracking, etc) can be sourced to the cloud as well.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Why are we heading this way? Two reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Files in your local storage can not be shared with others easily; How often do you have to send attachments of file copies back and forth to your colleagues and family, and to yourself? &lt;br&gt;&lt;/li&gt;
&lt;li&gt;How much space do you really need to store your docs/videos/mp3/books? I always need more space ...&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Is this trend killing box software manufacturers like Microsoft? Not at all. Client applications are still much more powerful and user-friendly than those browser-based solutions. People still need them.&amp;nbsp;The client software just need to be more &lt;b&gt;CC-ready,&lt;/b&gt; creating an enriched user experience that is closely, naturally integrated into the web&lt;b&gt;.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;This requires a company-wide initiative to be successful, something like &lt;b&gt;Cloud-Ready Computing&lt;/b&gt; (CRC (r) all rights reserved) , just like what Microsoft did with security (Trustworthy Computing). Small features such as "Save To My SkyDrive" should be identified by every participating product group, and the Windows Live services should be extended to provide could hosting, and the Windows Mobile platform should be Cloud-Ready together with other Microsoft products as well instead of always playing the porting/catching-up game. &lt;/p&gt;&lt;p&gt;&lt;i&gt;Update: &lt;a href="http://workspace.officelive.com/" target="_blank" mce_href="http://workspace.officelive.com/"&gt;Microsoft Office Live Workspace (beta)&lt;/a&gt; offers similar service as Google Docs. &lt;/i&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8803479" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>How to Display all IE Mobile Favorites?</title><link>http://blogs.msdn.com/zhengpei/archive/2008/07/11/how-to-display-all-ie-mobile-favorites.aspx</link><pubDate>Fri, 11 Jul 2008 09:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8720445</guid><dc:creator>zhengpei</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/8720445.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=8720445</wfw:commentRss><description>&lt;p&gt;Let's say we want to write an application that displays all the favorites of IE Mobile and allows user to click them. Then IE Mobile should go to that URL. &lt;/p&gt;
&lt;p&gt;We can certainly write some code to retrieve all the favorites items from \Windows\Favorites by calling FindFirstFile(). Note that some&amp;nbsp;default favorites are saved in a registry key, so we might want to retrieve those as well. Then we can create a UI to show them, and then launch IE Mobile with the selected URL user clicked. &lt;/p&gt;
&lt;p&gt;Or, we can utilize the default home page of IE Mobile, \windows\default_0409.htm. This page has some javascript that will call a window.external.favorites object which will retrieve all favorites into a string array. The javascript code looks like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Loads the current favorites&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function LoadFavorites()&lt;br&gt;&amp;nbsp;&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; // favorites&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var favorites = window.external.favorites;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; for(var i = 0; i &amp;lt; favorites.length; ++i)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strFavHTML +=&amp;nbsp; "&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;a class=\"collection\" href='' onclick=\"window.external.favorites(" + &lt;br&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; i + ").goTo();return false\"&amp;gt;" + favorites(i).name + &lt;br&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;lt;/a&amp;gt;&amp;lt;br&amp;gt;";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;We can create a new page to do the same. However, when I copied the page onto the device and loaded it into IE Mobile, I did not see any favorites. What is the problem?&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Security&lt;/b&gt;. The default home page default_0409.htm has a 'system' attribute! Okay, I changed my html file to be 'system' as well using Pocket Controller, then it worked!&lt;/p&gt;
&lt;p&gt;Remaining work is quite simple. Write an application to call CreateProcess() and pass my own htm file name as parameter to IExplore.exe:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHELLEXECUTEINFO info;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; memset(&amp;amp;info, 0, sizeof(SHELLEXECUTEINFO));&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.cbSize = sizeof(SHELLEXECUTEINFO);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.fMask = SEE_MASK_FLAG_NO_UI;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.lpVerb = _T ("open");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.lpFile = L"&lt;a href="file://windows//IExplore.exe" mce_href="file://windows//IExplore.exe"&gt;\\Windows\\IExplore.exe&lt;/a&gt;";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.lpParameters = L"&lt;a href="file://windows//fav.htm" mce_href="file://windows//fav.htm"&gt;file://\\windows\\fav.htm&lt;/a&gt;";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.nShow = SW_SHOW;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShellExecuteEx(&amp;amp;info);&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;My simple page fav.htm looks like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;html&amp;gt;&lt;br&gt;&amp;lt;head&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=windows-1252"&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;meta name="MobileOptimized" content="240"&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;title&amp;gt;IE Mobile Favorites&amp;lt;/title&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var strFavHTML&amp;nbsp;&amp;nbsp; = "";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var strHistHTML&amp;nbsp; = "";&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Loads the current favorites&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function LoadFavorites()&lt;br&gt;&amp;nbsp;&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; // favorites&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var favorites = window.external.favorites;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; for(var i = 0; i &amp;lt; favorites.length; ++i)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strFavHTML +=&amp;nbsp; "&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;a class=\"collection\" href='' onclick=\"window.external.favorites(" + &lt;br&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; i + ").goTo();return false\"&amp;gt;" + favorites(i).name + &lt;br&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;lt;/a&amp;gt;&amp;lt;br&amp;gt;";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;br&gt;&amp;lt;/head&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;body align=center&amp;gt; &lt;br&gt;&amp;lt;p&amp;gt;My Favorites&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;script&amp;gt;&lt;br&gt;&amp;nbsp;LoadFavorites()&lt;br&gt;&amp;nbsp;document.write(strFavHTML);&lt;/p&gt;
&lt;p&gt;&amp;lt;/script&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8720445" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Device Hangs: Anti-Virus Software and ActiveSync Deadlock</title><link>http://blogs.msdn.com/zhengpei/archive/2008/06/27/device-hangs-anti-virus-software-and-activesync.aspx</link><pubDate>Fri, 27 Jun 2008 02:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8659074</guid><dc:creator>zhengpei</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/8659074.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=8659074</wfw:commentRss><description>&lt;p&gt;I've been working on an interesting problem reported by a Windows Mobile partner. They have a anti-virus software installed on the WM6 device. And whenever they copy an infected file from desktop to the device, that anti-virus software will detect that infected file and delete it. After the user sees 'cannot copy file blah blah' in ActiveSync on the desktop side, the device hangs. &lt;/p&gt;&lt;p&gt;So the question is: what causes the device to hang? &lt;/p&gt;&lt;p&gt;Apparently the AV software has something to do with it. It is constantly monitoring any file system changes on the device, trying to scan every new file copied from the desktop side.&amp;nbsp;&lt;br&gt; &lt;/p&gt;&lt;p&gt;Okay, I've got a full kdmp file, with a corresponding flat release directory with all the symbols (including the AV software symbol files). Attach it to PB, run CEDebugX, I see this (Note I slightly modified the stuff to hide some sensitive information):&lt;/p&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&amp;nbsp;Thread A:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;Thread: 0x89395640 (rapiclnt)
hThread=0x6939595a&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;===========================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!SC_TakeCritSec() line 5233&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!EnterCriticalSection() line
104&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!SC_LoadLibraryExW() line 4699&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;COREDLL!int_LoadLibraryExW()
line 598 + 60 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;COREDLL!stub_LoadLibraryExW()
line 352&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;COREDLL!xxx_LoadLibraryW() line
649&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="background: yellow none repeat scroll 0% 50%; color: rgb(31, 73, 125); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;FAVFFILT!DLL_F_CEL_LogMsg(const wchar_t * 0x03ec4134, unsigned long
0x00000002) + 40 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="background: yellow none repeat scroll 0% 50%; color: rgb(31, 73, 125); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;FAVFFILT!FILTER_MoveFileW() + 260 bytes&lt;/span&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;CACHEFILT!FilterHook_t::MoveFileW()
line 379 + 16 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;CACHEFILT!CachedVolume_t::MoveHelper()
line 903&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;CACHEFILT!FCFILT_MoveFileW()
line 281 + 8 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;FSREPLXFILT!FILTER_MoveFileW()
line 410 + 28 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;FSDMGR!FSDMGR_MoveFileW() line
634 + 32 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;COREDLL!xxx_AFS_MoveFileW() line
118&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;FILESYS!FS_MoveFileW() line 2449
+ 16 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;COREDLL!xxx_MoveFileW() line 62&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;RAPICLNT!xxxMoveFile() line 117&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Thread B:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;Thread: 0x89397000
(av.exe) hThread=&amp;nbsp; 0xea63f872&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;===========================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!SC_TakeCritSec() line 5233&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!UB_TakeCritSec() line 5274&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;COREDLL!xxx_TakeCritSec() line
1857&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;COREDLL!EnterCriticalSection()
line 104&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;CACHEFILT!CachedVolume_t::CreateFileW(unsigned
long 0x00000001, _SECURITY_ATTRIBUTES * 0x00000000, unsigned long 0x00000003,
unsigned long 0x00000000, void * 0x00000000) line 665&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;CACHEFILT!FCFILT_CreateFileW(unsigned
long 0x00000001, _SECURITY_ATTRIBUTES * 0x00000000, unsigned long 0x00000003,
unsigned long 0x00000000, void * 0x00000000) line 267&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;FSREPLXFILT!FILTER_CreateFileW(unsigned
long 0x00000001, _SECURITY_ATTRIBUTES * 0x00000000, unsigned long 0x00000003,
unsigned long 0x00000000, void * 0x00000000) line 76 + 64 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;FSDMGR!FSDMGR_CreateFileW(unsigned
long 0x00000000, _SECURITY_ATTRIBUTES * 0x00000003, unsigned long 0x00000000,
unsigned long 0x00000000, void * 0x0b392002) line 1013 + 76 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;COREDLL!xxx_AFS_CreateFileW(unsigned
long 0x00000001, _SECURITY_ATTRIBUTES * 0x00000000, unsigned long 0x00000003,
unsigned long 0x00000000, void * 0x00000000) line 95&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;FILESYS!FS_CreateFileW(unsigned
long 0x00000000, unsigned long 0x80000000, void * 0x00000000) line 2226 + 48
bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!SC_CreateFileW(unsigned long
0x00000003, unsigned long 0x00000000, void * 0x00000000) line 2589 + 56 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!OpenFileFromFilesys() line
571 + 48 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!TryDir(int 0x0000000e, int
0x00000000) line 690 + 28 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!TrySameDir() line 728&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!OpenExecutable() line 806 +
12 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!OpenADll() line 3441 + 20
bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!PerformCallBack4Int() line
2386 + 68 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!InitModule(unsigned short
0x0000) line 4105 + 44 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!LoadOneLibraryW() line 4442 +
24 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;NK!SC_LoadLibraryExW() line 4699
+ 20 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="background: yellow none repeat scroll 0% 50%; color: rgb(31, 73, 125); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;COREDLL!int_LoadLibraryExW() line 598 + 60 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="background: yellow none repeat scroll 0% 50%; color: rgb(31, 73, 125); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;COREDLL!stub_LoadLibraryExW() line 352&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="background: yellow none repeat scroll 0% 50%; color: rgb(31, 73, 125); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;COREDLL!xxx_LoadLibraryW() line 649&lt;/span&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;SHUTIL!CePerfOpenSession() line
489 + 24 bytes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;[Diagnose] Invoking deadlock diagnose
tool&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;Creating thread list ...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;Creating the proxy list...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;920 thread proxies.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;DEADLOCK DETECTED!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;===========================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;| &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;|&amp;nbsp; Deadlock between
rapiclnt av.exe&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;| &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;===========================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;--&amp;gt; Critical Section (lpcs =
0x042902cc) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
owned by ...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&amp;nbsp; rapiclnt thread
0x89395640&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
blocked on ...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&amp;nbsp; Critical Section (lpcs =
0x842f0ba0) LLcs&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
owned by ...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&amp;nbsp; av.exe thread 0x89397000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
blocked on ...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;--&amp;gt; Critical Section (lpcs =
0x042902cc) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;p&gt;rapiclnt.exe is the RAPI client that handles file operations of ActiveSync. av.exe is the AV software. As you can see from the CedebugX output, the two threads deadlocked because Thread B is holding the LLcs, the OS loader lock while trying to get into a critical section. Thread A is doing MoveFile and somehow it is trying to get the loader lock after getting into that critical section that Thread B is waiting to get in. So deadlock occurred. I looked into the code path of Thread A, and figured out the critical section it holds is the file system volume access critical section. When Thread B calls CACHEFILT!CachedVolume_t::CreateFileW(), it tries to enter that file system volume critical section,&amp;nbsp; which is taken by Thread A.&lt;br&gt;&lt;br&gt;Then the question is, why Thread A, which is supposedly performing a MoveFile operation, tries to get the OS loader lock? Take a look at Thread A's stack, you will see a file system filter FAVFFILT.dll that performs a LoadLibrary call. Yes, that is why the loader lock is needed. I was told that the file system filter is a third-party software installed on the device. Without knowing the source of the filter, I cannot dig deeper into this issue any more.&lt;br&gt;&lt;br&gt;Anyway, things have been clear now. The file system filter driver should be fixed: do not call LoadLibrary() because that will require a OS loader lock while the underlying thread is probably holding a file system volume lock. This may lead to a deadlock with other threads calling LoadLibrary(). &lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8659074" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item></channel></rss>