September 2009 Entries

Windows CE: Watchdog Timers
Watchdog timers have been coming up in discussions lately, so I thought it might be good to start a discussion about the use and misuse of watchdog timers in a preemptive multitasking operating system, like Windows CE. I am going to share my thoughts, but look forward to you, my reader, sharing your thoughts on the subject. I am going to focus this discussion on hardware watchdogs, totally ignoring the software watchdog that is included in Windows CE and discussed by Luca Calligaris in an article ......

Posted On Tuesday, September 29, 2009 8:03 PM | Comments (2)

Windows CE: 7.0 Announced
Yesterday at the Embedded Systems Conference (ESC) Boston, Kevin Dallas the General Manager of Windows Embedded at Microsoft announced that there will be a major release of Windows Embedded CE 7.0 in Q2 2010. Well, that is entirely accurate; the release will be named Windows Embedded Compact 7.0. That is right, the name is changing from CE to Compact. This brings the naming in line with naming of other Windows Embedded products. This spring I attended the MVP Summit at Microsoft, an NDA event, and ......

Posted On Wednesday, September 23, 2009 10:46 PM | Comments (3)

Windows CE Chat September 29, 2009
Another great opportunity to ask Microsoft engineers your technical questions is coming up on Tuesday, September 29th. These chats are your opportunity to get advice and answers from the engineers at Microsoft. You may want to review the transcript from last month to get an idea about what kind of topics are discussed. Title: Windows CE Live Chat! When: Tuesday, September 29, 2008 9:00 - 10:00 A.M. Pacific Time Add to Calendar Description: Do you have tough technical questions regarding Windows CE ......

Posted On Wednesday, September 23, 2009 10:29 PM | Comments (0)

Windows CE: Overview of Silverlight Application Development
The soon to be released Windows Embedded CE 6.0 R3 will contain a new Silverlight for Windows Embedded that will change the way great applications are developed. There are some videos available on the Windows Embedded WEB site that explain this new feature better than I can, but I want to give you a quick overview. Silverlight for Windows Embedded is not the same Silverlight that you may have seen being used by WEB sites. Instead it is a subset of the browser plug in designed to be used by stand ......

Posted On Wednesday, September 23, 2009 9:54 PM | Comments (1)

Windows CE: Soon to be Available – 6.0 R3
Yesterday at the Embedded Systems Conference (ESC) Boston, Kevin Dallas the General Manager of Windows Embedded at Microsoft announced that there will be a Windows CE 6.0 R3 release available within a month. The engineers tell me that the work is complete, now it is just a matter of getting it ready for us to download. The goal of the R3 release seems to be centered on usability. The new features are: Silverlight – or actually a subset with variation. This is not Silverlight for the browser, but ......

Posted On Wednesday, September 23, 2009 9:01 PM | Comments (0)

Windows CE: Suspend, What Really Happens?
What happens when a Windows CE device suspends? What does suspend mean? Let’s look at these, but not in the technical sense of examining all of the details and twists and turns, but in terms that an application developer and maybe a user may want to know. Suspend, also known as putting the device to sleep or on some devices turning it off, is a way to put a device in a state that it consumes very little electricity. This is important for battery operated devices, like PDAs and cell phones. The system ......

Posted On Monday, September 21, 2009 8:07 PM | Comments (12)

ESC Boston this Week, I will be there, will you?
I will be at the Embedded Systems Conference (ESC) Boston this week. ESC should be an interesting week full of extremely geeky presentations and discussions. I am really there to meet and greet people (you know, networking.) If you will be there and want to get together, let me know by using the Contact link at the right side of my page. That link sends me a private email, so give me a way to contact you at the show. Copyright © 2009 – Bruce Eitman All Rights Reserved ......

Posted On Sunday, September 20, 2009 8:45 PM | Comments (0)

Windows CE: Stream Interface Driver Post Init IOCTL
There is a lesser known feature of stream interface drivers, the post init IOCTL. This is probably lesser known because there isn’t a good way to put this in the help index and it doesn’t appear to be mentioned in the stream interface section of the help contents. The post init IOCTL is an IOCTL that is called by the device manager after calling XXX_Init(). The purpose is that this allows your driver to do some initialization after XXX_Init() runs. Huh, initialization after XXX_Init() runs? Yes, ......

Posted On Sunday, September 20, 2009 8:39 PM | Comments (0)

Windows CE: Advertising a Power Manageable Device Driver
I was working on a driver suspend/resume issue this week. The driver was originally developed without support for the Power Manager, but really it would work better if it could respond to requests from the Power Manger to change power states. No problem, I just went to Windows CE: Stream Interface Driver Power Management and cut and pasted some code and in no time had the driver ready to work with the Power Manger. The next step was to advertise to the Power Manager that the driver wanted to be managed. ......

Posted On Friday, September 18, 2009 8:38 PM | Comments (0)

Windows CE: Setting a lot of Registry Values
If you wanted to dump a lot of values into the registry on a Windows XP system, you could create a reg file and then use RegEdit to import the reg file into the registry. But on a Windows CE device that functionality doesn’t exist. There are some registry editors available for Windows CE that will import a reg file though. Every once in a while I need to do it and don’t have a registry editor to do it for me, so I wrote a little function to write to the registry using an array of data. First I created ......

Posted On Friday, September 18, 2009 6:52 PM | Comments (0)

Platform Builder: Setting the Task Bar to Auto Hide by Default
In the last Microsoft Windows CE chat, someone asked about setting the Explorer Task Bar to auto hide by default. The problem is that the value that controls auto hide is the default value for the key. Default key values are defined in reg files using @=dword:1, which is not supported by Platform Builder’s fmerge. One solution would be to clone the Explorer shell and modify it so that the default value is set to TRUE. But that is a big hammer for a very small nail, isn’t it? Another solution would ......

Posted On Friday, September 18, 2009 6:41 PM | Comments (1)

Platform Builder: Target Processor 'Armv4I' not Installed
Platform Builder: Target Processor 'Armv4I' not Installed Recently a poster to the Platform Builder newsgroup posted an interesting solution to a not so uncommon problem when installing QFEs. The problem is that the error message “Target processor 'Armv4I' not installed” and the install stops. This happens even though ARMV41 is actually installed. I have seen this problem myself, although not recently, and have always been able to solve it by deleting C:\Windows\WinCEPB60.ini (change the number to ......

Posted On Wednesday, September 16, 2009 8:43 AM | Comments (3)

Windows CE: Modifying XXX_Open() for the Power Manager
Previously I wrote about adding power management support to a stream interface driver in Windows CE: Stream Interface Driver Power Management. What I didn’t discuss was that the Power Manager needs to open the driver so that it can call DeviceIoControl() to access the IOCTLs. Of course that isn’t a problem if the driver is written to support multiple opens, but many drivers neither need or support multiple opens. These drivers usually have a flag or counter to restrict the number of open handles. ......

Posted On Tuesday, September 15, 2009 9:36 PM | Comments (0)

Platform Builder: Supporting High Resolution Printing
The Windows CE PCL printer driver seems to be a little bit simple in its support of different Dots Per Inch (DPI) settings. It only supports two; 150 and 300 DPI. Interesting since there appear to be settings for low and high resolution DPI in the registry for each printer, and they are different for the default printers. In this article, I will explain how to clone the PCL driver and modify to hard code new DPI settings – I will leave a fancier implementation up to you. Steps that I used to modify ......

Posted On Thursday, September 3, 2009 8:55 PM | Comments (0)

Windows CE: Printing in Color
The Windows CE printer driver (pcl.dll) is capable of printing in color, but it might not recognize that your connected printer supports color. When this occurs, the print dialog will not allow selecting color as a print option. The good news is that this can be corrected. There are a few ways to handle this: Use the default PCL Inkjet printer in the print dialog. It has been setup for color support. Modify the registry settings for the printer. Modify the printer driver to always support color printing. ......

Posted On Wednesday, September 2, 2009 8:10 PM | Comments (0)

Windows CE: Removing Event Notifications
So you used one of the notification functions, like CeRunAppAtEvent() or CeRunAppAtTime(), to request that an app or event be signaled when a system event occurs. Now you want to disable the event notification, well that is easy just call the same function again but with different parameters to disable it. Let’s look at this: // Ask the system to run repllog.exe when a cable is connected. CeRunAppAtEvent(TEXT("repll... NOTIFICATION_EVENT_RS232_DE... ... do other stuff // Ask the system ......

Posted On Tuesday, September 1, 2009 8:36 PM | Comments (2)