<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2760534279571634638</id><updated>2012-01-03T05:42:03.661-08:00</updated><category term='Windows Mobile'/><category term='PXA 320 .NET CF'/><category term='Performance'/><category term='OEMCacheRangeFlush  Data Abort'/><category term='USB Composite Functional Driver'/><category term='CreateFile Windows CE'/><category term='Windows CE USB'/><category term='Windows CE 6.0'/><category term='GPRS Connectivity Windows CE'/><category term='CeSetThreadQuantum'/><category term='XRShell'/><category term='Windows CE Suspend'/><category term='WSASetService'/><category term='Windows Embedded Compact 7'/><category term='Windows CE Camera'/><category term='Control Panel'/><category term='OEMPowerOFF'/><category term='COM Port Emulator'/><category term='Windows CE Serial port profile'/><category term='RealTime OS'/><category term='WinCE Shortcuts'/><category term='Rnaapp cloning'/><category term='Windows CE Image Viewer'/><category term='Platform.dat'/><category term='Sysgen Capture'/><category term='Windows CE PXA320'/><category term='Power Management'/><category term='Zylonite DOT Net CF'/><category term='first comment'/><category term='PXA320 Suspend'/><category term='SetSystemPowerState'/><category term='VirtualAllocEx'/><category term='Windows CE Power Manager'/><category term='Video Rendering'/><category term='Hiding Pop-up Window'/><category term='Video Mixer Render'/><category term='New power states'/><category term='Imaging'/><category term='Silverlight Shell'/><category term='Camera Application'/><category term='WEC7'/><category term='PXA320 Core Idle'/><category term='Windows CE I2C Driver'/><category term='DOT NET Compact Framework Windows CE 6.0'/><category term='Registration Failed. Dot Net CF not working'/><category term='DirectShow'/><category term='Windows CE Power Management'/><category term='Thread Priority'/><category term='PXA320 Ring Oscillator'/><category term='PXA320 Data Abort'/><category term='Zylonite Data Abort'/><category term='Windows CE Service discovery protocol'/><category term='Windows CE OAL'/><category term='ActiveSync'/><category term='VirtualFreeEx'/><category term='PXA 320 L2 Cache'/><category term='Shared Memory between Kernel mode user mode memory'/><category term='USB Functional Driver'/><category term='Shared Memory windows CE 6.0'/><category term='Digital Zoom'/><category term='Hive Based Registry'/><category term='Windows CE Stream Driver'/><category term='Windows CE'/><category term='PXA320 Windows CE 6.0 Data Abort'/><category term='VirtualCopyEx'/><category term='Bluetooth Windows CE'/><title type='text'>Vinoth's Windows CE blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-5716868372218134333</id><published>2012-01-02T02:00:00.000-08:00</published><updated>2012-01-03T05:42:03.673-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE Power Management'/><category scheme='http://www.blogger.com/atom/ns#' term='New power states'/><title type='text'>New Article: Exploring Power Management in Windows CE 6.0</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This is my new article published on my company website. I have explored windows CE 6.0 power management driver and given you some power management customization samples (How to add new power states,etc..). Hope it will show some lights on Windows CE 6.0 power management. Please see the below given link to go ahead.&lt;br /&gt;&lt;div style="background-color: white; color: #4c1130;"&gt;&lt;a href="http://www.e-consystems.com/WindowsCE-Power-Management.asp" target="_blank"&gt;&lt;span style="color: #741b47;"&gt;Exploring Windows Embedded CE 6.0 Power Management&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-5716868372218134333?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/5716868372218134333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=5716868372218134333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/5716868372218134333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/5716868372218134333'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2012/01/new-article-exploring-power-management.html' title='New Article: Exploring Power Management in Windows CE 6.0'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-5357782170852401564</id><published>2011-11-01T03:55:00.000-07:00</published><updated>2011-11-01T03:59:55.325-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video Mixer Render'/><category scheme='http://www.blogger.com/atom/ns#' term='DirectShow'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Embedded Compact 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Video Rendering'/><title type='text'>Exploring VMR Features on Windows Embedded Compact 7</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;As you may know that Windows Embedded Compact 7 has new component for  DirectShow video rendering(Video Mixing Render) which is more advanced  than the old video render used in Windows Embedded CE 6.0.This blog explore the features of VMR on WEC7. See the below link for more details...&lt;br /&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=759"&gt;http://www.e-consystems.com/blog/windowsce/?p=759&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-5357782170852401564?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/5357782170852401564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=5357782170852401564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/5357782170852401564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/5357782170852401564'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/exploring-vmr-features-on-windows.html' title='Exploring VMR Features on Windows Embedded Compact 7'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-4456235154950753717</id><published>2011-11-01T03:44:00.000-07:00</published><updated>2011-11-01T04:05:48.601-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rnaapp cloning'/><category scheme='http://www.blogger.com/atom/ns#' term='Sysgen Capture'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE'/><title type='text'>Cloning the Rnaapp application using Sysgen_Capture tool</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div class="single_content"&gt;I used to pin point the &lt;a href="http://www.e-consystems.com/blog/hiding-popup-window/"&gt;How to remove Pop-up windows in Kiosk mode&lt;/a&gt;  blog in MSDN forums to hide the pop-up Windows for Kiosk system. I have  dealt with some public source code in the blog to hide the Pop-up  Windows. You may know that it is not advisable to change the public  source code directly and you are recommended to clone the public  components to your platform BSP before modify the source code. Cloning  the component is straight forward for some components by using platform  builder IDE and for some components we have to manually clone the  component using sysgen_capture tool in command prompt. Unfortunately we  have to manually clone the components which I have mentioned in the blog  using sysgen_capture tool.see the below given blog for more details...&lt;br /&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=636"&gt;http://www.e-consystems.com/blog/windowsce/?p=636&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-4456235154950753717?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/4456235154950753717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=4456235154950753717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/4456235154950753717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/4456235154950753717'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/cloning-rnaapp-application-using.html' title='Cloning the Rnaapp application using Sysgen_Capture tool'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-9004181022313783782</id><published>2011-11-01T03:36:00.000-07:00</published><updated>2011-11-01T04:08:55.105-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight Shell'/><category scheme='http://www.blogger.com/atom/ns#' term='WEC7'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Embedded Compact 7'/><category scheme='http://www.blogger.com/atom/ns#' term='XRShell'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveSync'/><title type='text'>Windows Embedded Compact 7: Silverlight Shell with ActiveSync</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I have troubleshooted the Silverlight shell not launching with Active Sync on Windows Embedded Compact 7. Please see the below given blog for more details...&lt;br /&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=617"&gt;http://www.e-consystems.com/blog/windowsce/?p=617&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-9004181022313783782?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/9004181022313783782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=9004181022313783782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/9004181022313783782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/9004181022313783782'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/windows-embedded-compact-7-silverlight.html' title='Windows Embedded Compact 7: Silverlight Shell with ActiveSync'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-712299574570915530</id><published>2011-11-01T03:32:00.000-07:00</published><updated>2011-11-01T04:12:31.306-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DirectShow'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE 6.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Video Rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='Digital Zoom'/><title type='text'>Implementing Digital Zoom Using Directshow Render on Windows CE 6.0</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;There are some cases wherein digital zoom is required to implement in  your Directshow camera application. For example, some camera modules  support a few levels of optical zoom and user have a need of more zoom  level apart from the supported camera optical zoom or some camera won’t  support optical zoom at all. If this is your case, then this blog post  can give you some pointers to implement the digital zoom in your  Directshow camera application on window CE 6.0.&lt;br /&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=544"&gt;http://www.e-consystems.com/blog/windowsce/?p=544&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-712299574570915530?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/712299574570915530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=712299574570915530' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/712299574570915530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/712299574570915530'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/implementing-digital-zoom-using.html' title='Implementing Digital Zoom Using Directshow Render on Windows CE 6.0'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-6826590725428984852</id><published>2011-11-01T03:30:00.000-07:00</published><updated>2011-11-01T04:15:03.116-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB Functional Driver'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Composite Functional Driver'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE USB'/><title type='text'>Loading USB Composite Functional Device on Windows CE USB Composite Function Driver</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;As everybody knows Windows CE 6.0 supports USB functional composite  driver to load multiple client driver simultaneously.  Normally we used  to load the functional device classes having single interface  descriptor. Some of the functional client driver like USB Video class  (UVC) has multiple interface descriptors. While connecting the UVC  device to PC, it will be detected as a composite device. Now there is a  situation that a device having a mass storage functional driver, custom  HID functional driver and a UVC functional driver (Composite device)  will be loaded simultaneously on a composite functional driver. But we  can’t load the UVC (composite device) on Windows CE composite functional  driver directly without doing some tweak. This blog show a way to do  this easily.&lt;br /&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=465%20"&gt;http://www.e-consystems.com/blog/windowsce/?p=465 &lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-6826590725428984852?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/6826590725428984852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=6826590725428984852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/6826590725428984852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/6826590725428984852'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/loading-usb-composite-functional-device.html' title='Loading USB Composite Functional Device on Windows CE USB Composite Function Driver'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-8713601490010713731</id><published>2011-11-01T03:20:00.000-07:00</published><updated>2011-11-01T04:16:49.315-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DirectShow'/><category scheme='http://www.blogger.com/atom/ns#' term='Camera Application'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Performance Tuning on DirectShow Camera Application</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Windows CE 6.0 supports DirectShow® components to develop a rich camera  application. A minimum requirement of the camera application is to show  preview, capturing the still images which is stored as a compressed file  (JPG) format, capturing/multiplexing the video with or without audio  i.e. stored as a compressed file (WMV) format. See the below given blog link on how to achieve the performance...&lt;br /&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=415"&gt;http://www.e-consystems.com/blog/windowsce/?p=415&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-8713601490010713731?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/8713601490010713731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=8713601490010713731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/8713601490010713731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/8713601490010713731'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/performance-tuning-on-directshow-camera.html' title='Performance Tuning on DirectShow Camera Application'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-4977026509198136555</id><published>2011-11-01T03:16:00.000-07:00</published><updated>2011-11-01T04:19:14.295-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Platform.dat'/><category scheme='http://www.blogger.com/atom/ns#' term='WinCE Shortcuts'/><category scheme='http://www.blogger.com/atom/ns#' term='Control Panel'/><title type='text'>WinCE Shortcut to Control Panel Applet</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A recently invoked query on the MSDN news group for Windows CE has  induced me to script this post. Most of our WinCE guys might be aware of  creating a shortcut for a file. &lt;i&gt;Now a simple question&lt;/i&gt; – Is it  possible to create a short-cut to each and every individual control  panel application? The answer is YES, it’s possible and quite  enthusiastic too.See the below given link for more details...&lt;br /&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=378"&gt;http://www.e-consystems.com/blog/windowsce/?p=378&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-4977026509198136555?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/4977026509198136555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=4977026509198136555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/4977026509198136555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/4977026509198136555'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/wince-shortcut-to-control-panel-applet.html' title='WinCE Shortcut to Control Panel Applet'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-3572086241373133543</id><published>2011-11-01T03:11:00.000-07:00</published><updated>2011-11-01T04:25:17.952-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE Power Manager'/><category scheme='http://www.blogger.com/atom/ns#' term='SetSystemPowerState'/><category scheme='http://www.blogger.com/atom/ns#' term='Power Management'/><title type='text'>Customizing Power Manager for SetSystemPowerState()</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Changing the system state can be as simple as a &lt;i&gt;cup of tea!&lt;/i&gt; by calling &lt;i&gt;SetSystemPowerstate()&lt;/i&gt;  API. But not all power states can be allowed to set through this API in  the default cases. For example setting to “SystemIdle” using this API  will be failed.&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;There are some use cases, we may need to set “&lt;i&gt;systemIdle&lt;/i&gt;”  through our application/driver or we may need to deny the  application/driver to set some power states.&amp;nbsp; Sometimes, we would like  to have our own power state created and it may be allowed to set from  the application/driver.&amp;nbsp; To do this, we have to customize the Windows CE  power manager.&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=229"&gt;http://www.e-consystems.com/blog/windowsce/?p=229&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-3572086241373133543?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/3572086241373133543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=3572086241373133543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/3572086241373133543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/3572086241373133543'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/customizing-power-manager-for.html' title='Customizing Power Manager for SetSystemPowerState()'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-8495030142681984502</id><published>2011-11-01T03:06:00.000-07:00</published><updated>2011-11-01T04:27:05.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE Camera'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE Image Viewer'/><category scheme='http://www.blogger.com/atom/ns#' term='Imaging'/><title type='text'>Creating an effective image viewer in Windows CE</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="color: black;"&gt;There are some cases where we may need to  develop a DLL or application to show  the images on the devices. For  example, an Image viewer will be needed to show  the picture after  taking a snap shot from the camera using a direct show camera  application. &lt;/span&gt;&lt;span style="color: black;"&gt;Windows CE supports Imaging APIs to handle the various  file types like JPG, BMP, TIFF and GIF etc…&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=221"&gt;http://www.e-consystems.com/blog/windowsce/?p=221&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-8495030142681984502?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/8495030142681984502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=8495030142681984502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/8495030142681984502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/8495030142681984502'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/creating-effective-image-viewer-in.html' title='Creating an effective image viewer in Windows CE'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-3314245010662166505</id><published>2011-11-01T03:01:00.000-07:00</published><updated>2011-11-01T04:30:08.394-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CeSetThreadQuantum'/><category scheme='http://www.blogger.com/atom/ns#' term='Thread Priority'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE'/><category scheme='http://www.blogger.com/atom/ns#' term='RealTime OS'/><title type='text'>Handling Real Time Tasks in Windows CE</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;There are certain use  cases – we may have to handle the non-standard custom interface to  communicate between the processor and the hardware. An example is  controlling the brightness of an LCD. The brightness controller is  interfaced with the processor in a single GPIO pin. Communication will  happen by just toggling the GPIO at a constant rate through software  driver.&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;Since &lt;a href="http://en.wikipedia.org/wiki/Windows_Embedded_CE_6.0" target="_blank" title="WinCE on Wikipedia"&gt;Windows CE&lt;/a&gt;  is a multi-threading OS, task switching will happen between multiple  threads. This task switching may prevent your driver to maintain the  constant rate of GPIO toggling. This leads to malfunction. See more details on the following link...&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=218"&gt;http://www.e-consystems.com/blog/windowsce/?p=218&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-3314245010662166505?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/3314245010662166505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=3314245010662166505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/3314245010662166505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/3314245010662166505'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/handling-real-time-tasks-in-windows-ce.html' title='Handling Real Time Tasks in Windows CE'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-1599259794962813849</id><published>2011-11-01T02:47:00.000-07:00</published><updated>2011-11-01T04:31:46.041-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE OAL'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE I2C Driver'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Mobile'/><title type='text'>Sharing I2C bus between OAL RTC part and Driver part on Windows CE</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Real Time Clock or RTC is an essential component in all embedded systems.  Designers interface these RTC chips through a common I2C bus shared by a  lot of peripherals and sensors. Therefore a common I2C bus driver is  needed to the developers.Since an I2C interface is a shared bus, synchronization is needed  between the devices to access the I2C bus. Windows CE supports  synchronization objects like critical sections, semaphore and mutex  etc.., to share the device or bus in driver level without conflict. But  RTC related functionalities are implemented in the OAL.exe. Therefore it  is not possible to use synchronization objects in the OAL part. This  blog depicts – how to share I2C bus between OAL and driver without  conflict.&lt;br /&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=121%20"&gt;http://www.e-consystems.com/blog/windowsce/?p=121 &lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-1599259794962813849?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/1599259794962813849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=1599259794962813849' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/1599259794962813849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/1599259794962813849'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/sharing-i2c-bus-between-oal-rtc-part.html' title='Sharing I2C bus between OAL RTC part and Driver part on Windows CE'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-4011072494204272477</id><published>2011-11-01T02:40:00.000-07:00</published><updated>2011-11-01T04:32:56.882-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE Power Manager'/><category scheme='http://www.blogger.com/atom/ns#' term='Hive Based Registry'/><title type='text'>Reload the Power Manager activity timeout upon every booting in Hive based Registry</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Power management is an important aspect of the modern embedded devices.  Flexibility in the OS Power Manager is the key driver to meet the  requirements of myriad of devices. Windows CE offers this flexibility,  though developer has to do a quick tweak to use it effectively. This  blog describes the power manager in Windows CE, problem faced and how to  overcome it.&lt;br /&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=112%20"&gt;http://www.e-consystems.com/blog/windowsce/?p=112 &lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-4011072494204272477?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/4011072494204272477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=4011072494204272477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/4011072494204272477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/4011072494204272477'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/reload-power-manager-activity-timeout.html' title='Reload the Power Manager activity timeout upon every booting in Hive based Registry'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-2691241736312031216</id><published>2011-11-01T02:32:00.000-07:00</published><updated>2011-11-01T04:38:51.596-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hiding Pop-up Window'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE'/><title type='text'>How to remove Pop-up windows in Kiosk mode</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div class="single_content"&gt;&lt;div style="text-align: justify;"&gt;Windows CE is a customizable OS and  custom application has been executed on the top of the OS. Majority of  the customers won’t prefer to use the windows CE standard utilities  embed on the control panel. Instead they develop their own applications  using the standard APIs. During these cases, customer won’t like the  standard utility windows popping up on the top of their application. See the below given link for more details...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=81%20"&gt;http://www.e-consystems.com/blog/windowsce/?p=81&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-2691241736312031216?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/2691241736312031216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=2691241736312031216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/2691241736312031216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/2691241736312031216'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/how-to-remove-pop-up-windows-in-kiosk.html' title='How to remove Pop-up windows in Kiosk mode'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-1496275336738304416</id><published>2011-11-01T02:23:00.000-07:00</published><updated>2011-11-01T04:41:52.572-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PXA320 Ring Oscillator'/><category scheme='http://www.blogger.com/atom/ns#' term='OEMPowerOFF'/><category scheme='http://www.blogger.com/atom/ns#' term='PXA320 Suspend'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE Suspend'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE PXA320'/><category scheme='http://www.blogger.com/atom/ns#' term='PXA320 Core Idle'/><title type='text'>Workaround for Suspend using core idle or ring Oscillator Mode in PXA320</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://www.e-consystems.com/"&gt;e-con systems&lt;/a&gt; encourages his engineers to publish blogs on Windows CE in his  blog website. From this blog onwards I am publishing my blogs on&amp;nbsp;&lt;a href="http://www.e-consystems.com/blog/windowsce/"&gt;e-con systems Windows CE blog&lt;/a&gt; website and provide the links  here.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Power Management is one of the crucial aspects of the handheld design.  In various handhelds, the power management states and transition to  these states without losing the operating context is the key to  effective implementation of Power Management. The design decision of  device power states, individual module power states in each of the power  states, trigger sources configuration for each state etc are very  important steps in the design stage. The design stage also involves the  incorporation of the device power stages in to Windows CE Power  Management framework.&lt;br /&gt;This blog describes one interesting problem encountered in PXA320 CPU power modes in a Windows CE based design.Link the URL for more details about this blog.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;a href="http://www.e-consystems.com/blog/windowsce/?p=66" style="-moz-font-feature-settings: normal; -moz-font-language-override: normal; color: #666666; display: inline ! important; font-family: Helvetica,sans-serif; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 0px; outline-style: none; padding: 5px 0px; text-decoration: underline;"&gt;&lt;span class="Apple-style-span"&gt;http://www.e-consystems.com/blog/windowsce/?p=66&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-1496275336738304416?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/1496275336738304416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=1496275336738304416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/1496275336738304416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/1496275336738304416'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2011/11/workaround-for-suspend-using-core-idle.html' title='Workaround for Suspend using core idle or ring Oscillator Mode in PXA320'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-2468922909141297407</id><published>2009-09-22T04:15:00.000-07:00</published><updated>2011-11-01T04:56:04.307-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE Stream Driver'/><category scheme='http://www.blogger.com/atom/ns#' term='CreateFile Windows CE'/><title type='text'>How to open a Windows CE stream device with the Index number greater than ten</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Many Windows CE devices contain multiple peripherals. Some peripherals will be accessed through windows CE native drivers and the remaining peripherals will be accessed through stream drivers. A typical example of native driver is display driver and a typical example of stream driver is serial port. Stream driver is a simple, also powerful architecture and it is extremely flexible to develop a driver for any kind of devices. Serial port driver, bus drivers and custom device drivers are the typical examples for the stream driver.&lt;br /&gt;We can take a serial port driver as an example to explain this blog. Devices like POS terminals need several serial ports to connect the peripherals like GPS, GSM Modem, IR devices, Magnetic card readers etc. In some cases, we need virtual serial port to access devices. We assume a POS terminal contains more than ten serial ports. This blogs explains you – how to access the serial port with the Index number greater than 10.  &lt;br /&gt;Opening a serial port device with an index number less than 10&lt;br /&gt;Normally a combination of three letter prefix with the index number alone used to open the serial port driver. For example “COM3” is the name space used to open the serial port with the index 3. Following code snippet explains you to open the serial port with the index 3.&lt;br /&gt;HANDLE hPort;&lt;br /&gt;hPort   = CreateFile(TEXT("COM3:"), GENERIC_READ  GENERIC_WRITE, 0,NULL,                            OPEN_EXISTING, 0, NULL);&lt;br /&gt;This method supports to open a serial port with the index less than 10. Index1-9 represents the first nine serial ports and index 0 represents the 10th serial port. This method is called as legacy naming convention.&lt;br /&gt;Opening a serial port device with an index number greater than 10&lt;br /&gt;We need to add a device string in front of the above mentioned notation to open a serial port with the index greater than 10. Following code snippet explains you to open the serial port with the index 20.&lt;br /&gt;HANDLE hport;&lt;br /&gt;hPort   = CreateFile(TEXT("\$device\COM20"), GENERIC_READ  GENERIC_WRITE, 0,NULL,                            OPEN_EXISTING, 0, NULL);&lt;br /&gt;This method supports to open a serial port with any index from 0. This means, we can also open the index 3 with this method.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-2468922909141297407?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/2468922909141297407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=2468922909141297407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/2468922909141297407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/2468922909141297407'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2009/09/how-to-open-windows-ce-stream-device.html' title='How to open a Windows CE stream device with the Index number greater than ten'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-4838177860400099938</id><published>2009-07-27T04:51:00.000-07:00</published><updated>2011-11-01T04:56:45.989-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GPRS Connectivity Windows CE'/><title type='text'>My windows CE articles</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div&gt;Articles:&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://www.windowsfordevices.com/articles/AT8185724467.html"&gt; Windows CE 6.0 GPRS connectivity through dial-up networking&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://www.e-consystems.com/gprsconnectivity.asp"&gt;GPRS connectivity through dial up and Networking – Part II&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://www.e-consystems.com/portingwincepxa255.asp"&gt;Porting Windows CE 5.0 on PXA255 Based Platform&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-4838177860400099938?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/4838177860400099938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=4838177860400099938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/4838177860400099938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/4838177860400099938'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2009/07/my-another-windows-ce-blog.html' title='My windows CE articles'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-1146532680351223029</id><published>2008-11-04T08:40:00.000-08:00</published><updated>2008-11-04T08:49:30.553-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Zylonite DOT Net CF'/><category scheme='http://www.blogger.com/atom/ns#' term='PXA 320 .NET CF'/><category scheme='http://www.blogger.com/atom/ns#' term='Registration Failed. Dot Net CF not working'/><category scheme='http://www.blogger.com/atom/ns#' term='DOT NET Compact Framework Windows CE 6.0'/><title type='text'>Make it work .NET Compact Framework on PXA320 based Windows Embedded CE 6.0 Platform NET</title><content type='html'>&lt;p&gt;I have developed a BSP for PXA320 based platform running on windows embedded CE 6.0 R2. I have taken the Zylonite windows CE 5.0 BSP. I faced a strange issue while running the Dot Net Compact framework based application. The application failed to run even though the necessary components have been included for the Dot Net Compact framework.&lt;br /&gt;I tried to run the cgacutil.exe to get the version of the .net framework. I got “Registration Failed” message in the console. Same issue I faced when I installed the .Net Framework through the cab installer. I tried the same project file (.pbxml) with other platform. I found the .net framework was working.&lt;br /&gt;So the issue should be related to BSP. During the installation of the .NET Compact framework, the IOCTL_HAL_GET_DEVICE_INFO is called through the kernelIOcontrol to get the device information for registration. This IOCTL will give set of system parameter information through some SPI cases. One of the cases is SPI_GETPLATFORMNAME. This will give the platform name and it is used during the .NET compact framework GAC implementation. This case is missing in my BSP, since I have used the Zylonite windows CE 5.0 BSP. Because of this .NET Compact Framework is not working.&lt;br /&gt;Workaround 1:&lt;br /&gt;a) Add the global declarations&lt;br /&gt;const WCHAR HALPlatNameStr[] = L"XXXPlatform" ;&lt;br /&gt;const DWORD dwHALPlatNameStrLen = 9;&lt;br /&gt;b) Add the following code in the src\oal\oallib\ioctl.c OALGetDeviceInfo() function.&lt;br /&gt;case SPI_GETPLATFORMNAME:&lt;br /&gt;len = (dwHALPlatNameStrLen+1)*sizeof(WCHAR);&lt;br /&gt;if (lpBytesReturned)&lt;br /&gt;*lpBytesReturned = len;&lt;br /&gt;if (nOutBufSize &gt;= len &amp;amp;&amp;amp; lpOutBuf)&lt;br /&gt;{&lt;br /&gt;memcpy(lpOutBuf,HALPlatNameStr,len);&lt;br /&gt;retval = TRUE;&lt;br /&gt;} else&lt;br /&gt;NKSetLastError(ERROR_INSUFFICIENT_BUFFER);&lt;br /&gt;break;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;(OR)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Workaround 2:&lt;br /&gt;Do the following changes in src\inc\ioctl_tab.h file.&lt;br /&gt;{ IOCTL_HAL_GET_DEVICE_INFO, 0, OALIoCtlHalGetDeviceInfo },&lt;br /&gt;//{ IOCTL_HAL_GET_DEVICE_INFO, 0, OALGetDeviceInfo },&lt;br /&gt;Use the common OAL IOCTL function OALIoCtlHalGetDeviceInfo() instead of OALGetDeviceInfo(). The OALIoCtlHalGetDeviceInfo() will finally use the g_oalIoCtlPlatformType value implemented in the ioctl.c file.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-1146532680351223029?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/1146532680351223029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=1146532680351223029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/1146532680351223029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/1146532680351223029'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2008/11/make-it-work-net-compact-framework-on.html' title='Make it work .NET Compact Framework on PXA320 based Windows Embedded CE 6.0 Platform NET'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-8185936415257667454</id><published>2008-11-03T08:22:00.000-08:00</published><updated>2008-11-03T08:25:52.974-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OEMCacheRangeFlush  Data Abort'/><category scheme='http://www.blogger.com/atom/ns#' term='PXA 320 L2 Cache'/><category scheme='http://www.blogger.com/atom/ns#' term='PXA320 Windows CE 6.0 Data Abort'/><category scheme='http://www.blogger.com/atom/ns#' term='PXA320 Data Abort'/><category scheme='http://www.blogger.com/atom/ns#' term='Zylonite Data Abort'/><title type='text'>Work Around for data abort on L2 cache enabled PXA320 windows CE 6.0 platforms.</title><content type='html'>I have developed a BSP for PXA320 based platform running on windows embedded CE 6.0. I have taken the Zylonite windows CE 5.0 BSP. I faced an issue while enabling the PXA320 L2 cache. There are lots of data abort during the booting time from some drivers and application like explorer.exe. I track the call stack and I found the source code causing the data abort.  OEMCacheRangeFlush () CACHE_SYNC_DISCARD case is causing the issue.&lt;br /&gt;This case is used when the cache lines or the whole cache will be write-back and invalidate. Data Abort was occurring exactly when invalidating a range of cache lines. The invalidation operation for the whole cache or a range of the cache is decided based on the length and address. If length and address both are zero or the length is greater than the size of the cache, the whole cache will be flushed, otherwise only a particular set of cache lines will be flushed based on the address. Address passed as an argument is used to calculate the starting cache line to flush. L2 Cache is using physical address for cache operations. The cache flushing function is implemented in assembly language. It will convert the Virtual address to physical address through the page table entry. During this conversion sometime it is getting invalid page table data, which causes the data abort. I don’t know the reason for the invalid page table entry. But I have the workaround.&lt;br /&gt;The work around is, use the same function used for flushing the entire cache instead of using the function implemented for flushing the lines.&lt;br /&gt;Replace the function&lt;br /&gt;XScaleFlushDCacheLinesL2((LPVOID) dwNormalizedAddress, dwNormalizedLength, ARMCacheInfo.dwL2DCacheLineSize);&lt;br /&gt;With&lt;br /&gt;XScaleFlushDCacheL2(DCACHE_LINES, ARMCacheInfo.dwL2DCacheLineSize, (DWORD) gpvCacheFlushBaseMemoryAddress);&lt;br /&gt;This will stop the occurrence of data abort during the L2 cache flushing on OEMCacheRangeFlush().&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-8185936415257667454?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/8185936415257667454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=8185936415257667454' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/8185936415257667454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/8185936415257667454'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2008/11/work-around-for-data-abort-on-l2-cache.html' title='Work Around for data abort on L2 cache enabled PXA320 windows CE 6.0 platforms.'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-7152919229378817226</id><published>2008-11-03T00:54:00.000-08:00</published><updated>2009-12-21T22:30:15.912-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shared Memory between Kernel mode user mode memory'/><category scheme='http://www.blogger.com/atom/ns#' term='VirtualFreeEx'/><category scheme='http://www.blogger.com/atom/ns#' term='VirtualCopyEx'/><category scheme='http://www.blogger.com/atom/ns#' term='Shared Memory windows CE 6.0'/><category scheme='http://www.blogger.com/atom/ns#' term='VirtualAllocEx'/><title type='text'>Sharing Blocks of Memory between Kernel Mode Process and the User Mode Process in Windows Embedded CE 6.0</title><content type='html'>There are certain cases that we may need to share the same memory between kernel process and user process instead of copying the kernel memory data to user memory data or vice versa to increase the performance or process the data in a real time manner.&lt;br /&gt;For Example, consider the scenario on the camera based application. A camera has sending the frames in 30 Frames per second. Approximately 33 ms is the interval between the 2 frames. The camera driver stores the captured data (640*480*8bits) within 5 ms for every frame and the remaining 28 ms has been left to process the data in the application for the required output. The driver has to store all the required frames as blocks of memory. It means if the application need 60 frames, the driver has to store the 60 Frames in the memory contiguously.&lt;br /&gt;In this case, maintaining two large amount of memory in an embedded product will create scarcity of memory also this is not an efficient design. Unlike windows CE 5.0, directly accessing the kernel mode memory by the user process is restricted in windows CE 6.0 to avoid security vulnerability. However Windows Embedded CE 6.0 has introduced a new set of APIs that allows sharing the memory blocks between the kernel mode process and the user mode process in the secured manner.&lt;br /&gt;VirtualAllocEX, VirtualCopyEx and VirtualFreeEX are newly introduced APIs in Windows CE 6.0 and allows you to share the memory between the kernel and the user mode processes. I can explain you the implementation through the sample stream driver and a user application. The virtual address space is allocated to the process id given as an argument to VirtualAllocEX (). In our example, virtual address space is allocated to user process area or application process area. You can print the address to find the address range. It should be less than 2 GB (user address space).&lt;br /&gt;Allocating, sharing and freeing the memory address has been implemented through the IOCTL calls. The following source code explains the implementation.&lt;br /&gt;DWORD SMD_IOControl (DWORD dwOpen, DWORD dwCode, PDWORD pIn, DWORD dwIn,&lt;br /&gt;PDWORD pOut, DWORD dwOut, DWORD *pdwBytesWritten)&lt;br /&gt;{&lt;br /&gt;RETAILMSG(1, (TEXT("SMD_IOControl++ dwCode: 0x%x\r\n"),dwCode));&lt;br /&gt;switch (dwCode)&lt;br /&gt;{&lt;br /&gt;case IOCTL_SMD_ALLOC_ADDRESS:&lt;br /&gt;{&lt;br /&gt;*pOut=(DWORD)GetVirtualAddress();&lt;br /&gt;*pdwBytesWritten=4;&lt;br /&gt;dwOut=4;&lt;br /&gt;RETAILMSG (1, (TEXT("SMD_IOControl: Address=0x%x\r\n"), *pOut)); &lt;br /&gt;}&lt;br /&gt;break;&lt;br /&gt;case IOCTL_SMD_FREE_ADDRESS:&lt;br /&gt;{&lt;br /&gt;void* pvProcess=(void*)GetCallerVMProcessId();&lt;br /&gt;VirtualFreeEx(pvProcess,(PVOID)((ULONG)gUserAddr &amp;amp; ~(ULONG)(PAGE_SIZE - 1)), 0,MEM_RELEASE);&lt;br /&gt;gUserAddr=NULL;&lt;br /&gt;}&lt;br /&gt;break;&lt;br /&gt;case IOCTL_SMD_FILL_ADDRESS:&lt;br /&gt;{&lt;br /&gt;char* Temp= (char*)((char*)gUserAddr+0x1F00000);&lt;br /&gt;NKDbgPrintfW(L"Address=0x%x\r\n",Temp);&lt;br /&gt;Strcpy(Temp," Hello World");&lt;br /&gt;NKDbgPrintfW(L"Written value =%s\r\n",Temp);&lt;br /&gt;}&lt;br /&gt;break; &lt;br /&gt;&lt;br /&gt;default:&lt;br /&gt;{&lt;br /&gt;DEBUGMSG (1, (TEXT("SMD_IOControl: unknown code %x\r\n"), dwCode));&lt;br /&gt;}&lt;br /&gt;return FALSE;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;RETAILMSG(1, (TEXT("SMD_IOControl Finished--\r\n")));&lt;br /&gt;return TRUE;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;LPVOID GetVirtualAddress()&lt;br /&gt;{&lt;br /&gt;DWORD sDevPhysAddr = 0x81F00000;&lt;br /&gt;DWORD dwSize = 0x02000000;&lt;br /&gt;LPVOID lpUserAddr;&lt;br /&gt;ULONG SourceSize;&lt;br /&gt;ULONGLONG SourcePhys;&lt;br /&gt;void* pvProcess=(void*)GetCallerVMProcessId();&lt;br /&gt;SourcePhys = sDevPhysAddr &amp;amp; ~(PAGE_SIZE - 1);&lt;br /&gt;SourceSize = dwSize + (sDevPhysAddr &amp;amp; (PAGE_SIZE - 1));&lt;br /&gt;lpUserAddr = VirtualAllocEx(pvProcess, 0, SourceSize, MEM_RESERVE,PAGE_NOACCESS);&lt;br /&gt;if (lpUserAddr == NULL) {&lt;br /&gt;return NULL;&lt;br /&gt;}&lt;br /&gt;if (!VirtualCopyEx(pvProcess, lpUserAddr, GetCurrentProcess(), (PVOID)&lt;br /&gt;SourcePhys, SourceSize,&lt;br /&gt;PAGE_READWRITE PAGE_NOCACHE)) {&lt;br /&gt;return NULL;&lt;br /&gt;}&lt;br /&gt;NKDbgPrintfW(L"Before round up lpUserAddr=0x%x\r\n",lpUserAddr);&lt;br /&gt;lpUserAddr=(LPVOID)((ULONG)lpUserAddr+(sDevPhysAddr &amp;amp; (PAGE_SIZE - 1)));&lt;br /&gt;gUserAddr=lpUserAddr;&lt;br /&gt;NKDbgPrintfW(L"After round up gUserAddr=0x%x\r\n",gUserAddr);&lt;br /&gt;return lpUserAddr;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;IOCTL_SMD_ALLOC_ADDRESS: This Ioctl allocates blocks of memory and return the starting address of the allocated area to the user mode process (Application).&lt;br /&gt;IOCTL_SMD_FREE_ADDRESS: This IOCtl frees the allocated shared memory area using VirtualFreeEX ().&lt;br /&gt;IOCTL_SMD_FILL_ADDRESS: Just fill the data at the end of the large block of memory. These data can be printed by the application for the proof of concept of shared memory implementation.&lt;br /&gt;GetVirtualAddress (): It allocates 32 MB of large memory, which can be shared by the kernel mode process and the user mode process. This function calls the GetCallerVMProcessId () to get the caller process id given as an argument to VirtualAllocEx () and VirtualCopyEX (). The caller process id is the application process id or user mode process id in our case. VirtualAllocEx takes the caller process id and the current process id as an argument and allocates the shared memory. Usage of the VirtualAllocEx and VirtualCopyEx are very similar to the VirtualAlloc and VirtualCopy.&lt;br /&gt;The following is the sample application access the memory allocated by the sample memory driver.&lt;br /&gt;HANDLE SMDDrv;&lt;br /&gt;// Open the sample memory driver&lt;br /&gt;SMDDrv=CreateFile(L"SMD1:", //file name to be opened&lt;br /&gt;GENERIC_WRITEGENERIC_READ, //openign he fiel in read mode&lt;br /&gt;0, //no share mode&lt;br /&gt;NULL, //default security&lt;br /&gt;OPEN_EXISTING, //opening an existing file&lt;br /&gt;0, //non overlapped mode&lt;br /&gt;NULL //no any template file&lt;br /&gt;);&lt;br /&gt;if(SMDDrv==INVALID_HANDLE_VALUE)&lt;br /&gt;{&lt;br /&gt;printf(":SMD open failed\r\n");&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;printf(":SMD open success\r\n");&lt;br /&gt;} &lt;br /&gt;//Get the allocated shared pointer&lt;br /&gt;DeviceIoControl(SMDDrv,IOCTL_SMD_ALLOC_ADDRESS,NULL,0,&amp;amp;Address,sizeof(DWORD),&amp;amp;BytesWritten,NULL);&lt;br /&gt;char* Data=(char*)Address;&lt;br /&gt;printf("Address:0x%x",Data);&lt;br /&gt;//Request the driver to fill the data&lt;br /&gt;DeviceIoControl(SMDDrv,IOCTL_SMD_FILL_ADDRESS,NULL,0,NULL,0,NULL,NULL);&lt;br /&gt;// Move the pointer to the filled data area&lt;br /&gt;Data+=0x1F00000;&lt;br /&gt;//Just print the data for proof of concept&lt;br /&gt;printf("Data:%s",Data);&lt;br /&gt;// Free the memory &lt;br /&gt;DeviceIoControl(SMDDrv,IOCTL_SMD_FREE_ADDRESS,NULL,0,NULL,0,NULL,NULL);&lt;br /&gt;//Close the driver handle&lt;br /&gt;CloseHandle(SMDDrv);&lt;br /&gt;I have given the simple application that opens the driver, get the large memory pointer, move to the data area filled by the driver, print the data and close the driver.&lt;br /&gt;Hope this blog is useful for architects and developers, who are all in need of sharing the large blocks of memory between the user and kernel mode processes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-7152919229378817226?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/7152919229378817226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=7152919229378817226' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/7152919229378817226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/7152919229378817226'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2008/11/sharing-blocks-of-memory-between-kernel.html' title='Sharing Blocks of Memory between Kernel Mode Process and the User Mode Process in Windows Embedded CE 6.0'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-3856919589005434440</id><published>2008-10-29T08:50:00.000-07:00</published><updated>2008-10-29T08:56:38.965-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSASetService'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE Service discovery protocol'/><category scheme='http://www.blogger.com/atom/ns#' term='COM Port Emulator'/><category scheme='http://www.blogger.com/atom/ns#' term='Bluetooth Windows CE'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows CE Serial port profile'/><title type='text'>Enabling Bluetooth Serial Port Profile (SSP) for serial port emulator in Windows Embedded CE 6.0</title><content type='html'>Normally SSP is used by Hands Free Profile (HFP), Head set profile (HSP) and LAN Access Profile (LAP) in windows Embedded CE 6.0. However for some applications, SSP will be needed directly. Unfortunately there is no direct way of enabling the SSP in Windows CE ( No SYSGEN Variable).&lt;br /&gt;SPP will be accessed through socket programming and COM port emulator. Based on the application requirement, Socket programming will be used for multiple port access and COM port emulator will be used for single port access. To enable the SSP, Application has to export the SSP through the service discovery protocol (SDP).&lt;br /&gt;Exporting an service using SDP protocol is not a straight forward task. All the services are created as binary a record that has to be exported.  All the services has mentioned as a unique ID and in the form of GUID. For SSP the GUID is 00001101-0000-1000-8000-00805f9b34fb. Please see the bt_sdp.h in _(WINCEROOT)\public\common\sdk\inc directory for more Bluetooth services.  Microsoft has provided the sample applications , which explains the implementation of SSP over socket programming and serial port emulator.SSP has been exported  in the socket programming example. Unfortunately port emulation code does not having the SSP export over SDP.    Followings are the ways to create and export the SSP record.&lt;br /&gt;1)      Creating the service records dynamically through source code.&lt;br /&gt;Creating a SDP record is done by using the Component Object Model programming. Writing the source code to create a service record is bit difficult for naive users. To facilitate the naïve users, Microsoft has given a sample application to create the source code for service as well as the binary record for the corresponding services. This source code is available in the _(WINCEROOT)\PUBLIC\COMMON\SDK\SAMPLES\BLUETOOTH\BTHNSCREATE directory. You can add this created source code to your application to invoke the service.&lt;br /&gt;2)      Using the sample socket programming over SSP.&lt;br /&gt;_(WINCEROOT)\PUBLIC\COMMON\SDK\SAMPLES\BLUETOOTH\SSA is the sample implementation for the socket programming over SSP. It is having the SSP export code.&lt;br /&gt;_(WINCEROOT)\PUBLIC\COMMON\SDK\SAMPLES\BLUETOOTH\SCA is the sample implementation for serial port emulator.&lt;br /&gt;a)      Create a new project, copy the SCA application code for serial port emulator implementation.&lt;br /&gt;b)      Add the following code  as a glopal.&lt;br /&gt; #define SDP_RECORD_SIZE 0x0000003f&lt;br /&gt;#undef WSAGetLastError&lt;br /&gt;#define WSAGetLastError() GetLastError()&lt;br /&gt;&lt;br /&gt;BYTE rgbSdpRecord[SDP_RECORD_SIZE] = {&lt;br /&gt;                0x35, 0x3d, 0x09, 0x00, 0x01, 0x35, 0x11, 0x1c,&lt;br /&gt;0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // service UUID goes here (+8)&lt;br /&gt;                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,&lt;br /&gt;                0x09, 0x00, 0x04, 0x35, 0x0c, 0x35, 0x03, 0x19,&lt;br /&gt;                0x01, 0x00, 0x35, 0x05, 0x19, 0x00, 0x03, 0x08,&lt;br /&gt;                0x00,                                                                                                                                                                     // server channel goes here (+40)&lt;br /&gt;                      0x09, 0x00, 0x06, 0x35, 0x09, 0x09, 0x65,&lt;br /&gt;                0x6e, 0x09, 0x00, 0x6a, 0x09, 0x01, 0x00, 0x09,&lt;br /&gt;                0x01, 0x00, 0x25, 0x03, 0x53, 0x53, 0x41&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;This the Sdp record to be exported for the SSP.  The size of the SSP GUID is 16 bytes and this will be added after  8 bytes of the  SDP record. The Channel number will be added after 40 bytes of the SDP record.&lt;br /&gt;&lt;br /&gt;c)       Add the following  code before calling the HANDLE h = RegisterBluetoothCOMPort (L"COM", index, &amp;amp;pp);  function.&lt;br /&gt;&lt;br /&gt;GUID serviceClassId;&lt;br /&gt;ULONG recordHandle = 0;&lt;br /&gt;WSADATA wsd;&lt;br /&gt;if (WSAStartup (MAKEWORD(1,0), &amp;amp;wsd)) {&lt;br /&gt;                wprintf (L"Initialization of socket subsystem failed! Error = %d\n", WSAGetLastError ());&lt;br /&gt;                return 0;&lt;br /&gt;}&lt;br /&gt;GetGUID (_T("00001101-0000-1000-8000-00805f9b34fb"),&amp;amp;serviceClassId);&lt;br /&gt;wprintf(L"Channel No=0x%x\n",pp.channel);&lt;br /&gt;rgbSdpRecord[40] = (unsigned char)pp.channel;&lt;br /&gt;GUID bigEndianGUID;&lt;br /&gt;bigEndianGUID.Data1 =   ((serviceClassId.Data1 &lt;&lt; 24) &amp;amp; 0xff000000)&lt;br /&gt;                                ((serviceClassId.Data1 &lt;&lt; 8)  &amp;amp; 0x00ff0000)&lt;br /&gt;                                                ((serviceClassId.Data1 &gt;&gt; 8)  &amp;amp; 0x0000ff00)&lt;br /&gt;                                                ((serviceClassId.Data1 &gt;&gt; 24) &amp;amp; 0x000000ff);&lt;br /&gt;bigEndianGUID.Data2 =   ((serviceClassId.Data2 &lt;&lt; 8) &amp;amp; 0xff00)&lt;br /&gt;                                                ((serviceClassId.Data2 &gt;&gt; 8) &amp;amp; 0x00ff);&lt;br /&gt;bigEndianGUID.Data3 =   ((serviceClassId.Data3 &lt;&lt; 8) &amp;amp; 0xff00)&lt;br /&gt;                                                ((serviceClassId.Data3 &gt;&gt; 8) &amp;amp; 0x00ff);&lt;br /&gt;memcpy (bigEndianGUID.Data4, serviceClassId.Data4, sizeof(serviceClassId.Data4));&lt;br /&gt;memcpy (rgbSdpRecord + 8, &amp;amp;bigEndianGUID, sizeof(bigEndianGUID));&lt;br /&gt;struct {&lt;br /&gt;                BTHNS_SETBLOB              b;&lt;br /&gt;                unsigned char   uca[SDP_RECORD_SIZE];&lt;br /&gt;} bigBlob;&lt;br /&gt;&lt;br /&gt;                                ULONG ulSdpVersion = BTH_SDP_VERSION;&lt;br /&gt;                                bigBlob.b.pRecordHandle   = &amp;recordHandle;&lt;br /&gt;                                bigBlob.b.pSdpVersion     = &amp;ulSdpVersion;&lt;br /&gt;                                bigBlob.b.fSecurity       = 0;&lt;br /&gt;                                bigBlob.b.fOptions        = 0;&lt;br /&gt;                                bigBlob.b.ulRecordLength  = SDP_RECORD_SIZE;&lt;br /&gt;                                memcpy(bigBlob.b.pRecord, rgbSdpRecord, SDP_RECORD_SIZE);&lt;br /&gt;BLOB blob;&lt;br /&gt;blob.cbSize    = sizeof(BTHNS_SETBLOB) + SDP_RECORD_SIZE - 1;&lt;br /&gt;blob.pBlobData = (PBYTE) &amp;bigBlob;&lt;br /&gt;WSAQUERYSET Service;&lt;br /&gt;memset (&amp;amp;Service, 0, sizeof(Service));&lt;br /&gt;Service.dwSize = sizeof(Service);&lt;br /&gt;Service.lpBlob = &amp;blob;&lt;br /&gt;Service.dwNameSpace = NS_BTH;&lt;br /&gt;int iRet = WSASetService(&amp;amp;Service,RNRSERVICE_REGISTER,0);&lt;br /&gt;if (iRet != ERROR_SUCCESS) {&lt;br /&gt;wprintf (L"WSASetService failes with status %d\n",  WSAGetLastError ());&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;pp.uuidService.Data1=serviceClassId.Data1;&lt;br /&gt;pp.uuidService.Data2=serviceClassId.Data2;&lt;br /&gt;pp.uuidService.Data3=serviceClassId.Data3;&lt;br /&gt;memcpy(pp.uuidService.Data4,serviceClassId.Data4,sizeof(serviceClassId.Data4));&lt;br /&gt;   // HANDLE h = RegisterBluetoothCOMPort (L"COM", index, &amp;amp;pp);&lt;br /&gt; HANDLE h = RegisterDevice (L"COM", index, L"btd.dll", (DWORD)&amp;amp;pp);&lt;br /&gt;    wprintf (L"handle = 0x%08x\n", (int)h);&lt;br /&gt;&lt;br /&gt;    if (h == NULL) {&lt;br /&gt;        wprintf (L"GetLastError = %d\n", GetLastError ());&lt;br /&gt;        return 0;&lt;br /&gt;    }&lt;br /&gt;WCHAR szComPort[30];&lt;br /&gt; wsprintf (szComPort, L"COM%d:", index);&lt;br /&gt; HANDLE hCommPort = CreateFile (szComPort, GENERIC_READ  GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);&lt;br /&gt; if (hCommPort == INVALID_HANDLE_VALUE) {&lt;br /&gt;        wprintf (L"Failed to open %s. Error = %d\n", szComPort, GetLastError ());&lt;br /&gt;       // DeregisterBluetoothCOMPort (h);&lt;br /&gt;                                DeregisterDevice(h);&lt;br /&gt;        return 0;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;To export the SSP, the only way you have to use the Winsock APIs. WSAStartup() and WSASetservice() are used for registering the SSP service. You can use RegisterDevice instead of RegisterBluetoothCOMPort provided you have to mention the DLL name as an argument. Please see the above code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-3856919589005434440?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/3856919589005434440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=3856919589005434440' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/3856919589005434440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/3856919589005434440'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2008/10/enabling-bluetooth-serial-port-profile.html' title='Enabling Bluetooth Serial Port Profile (SSP) for serial port emulator in Windows Embedded CE 6.0'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760534279571634638.post-1095164388310042999</id><published>2008-04-29T01:01:00.000-07:00</published><updated>2008-04-29T01:03:23.745-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='first comment'/><title type='text'>First Comment</title><content type='html'>Think high to grow high. soonly you can expect some useful info......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760534279571634638-1095164388310042999?l=vinoth-vinothblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vinoth-vinothblog.blogspot.com/feeds/1095164388310042999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760534279571634638&amp;postID=1095164388310042999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/1095164388310042999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760534279571634638/posts/default/1095164388310042999'/><link rel='alternate' type='text/html' href='http://vinoth-vinothblog.blogspot.com/2008/04/first-comment.html' title='First Comment'/><author><name>Vinoth</name><uri>http://www.blogger.com/profile/01668193840247817426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_RdJVCys_d70/TDR24eQhYzI/AAAAAAAAAOk/0amugnOw5OY/S220/Vinoth_2008.jpg'/></author><thr:total>0</thr:total></entry></feed>
