Friday, 13 April 2012

Windows Embedded Compact QFEs for March 2012 have arrived!

Hi all,

the March updates for Windows Embedded Compact are available for download:

Windows Embedded Compact 7 Monthly Update March 2012 (Update 9):

Fixes made in this Update:

Component: Catalog
· 120330_KB2666258 - This update adds support for Calibrui module.

Component: CoreOS
· 120322_KB2636175 - This update addresses some issues with UNISCRIBE.
· 120331_KB2693667 - An error may occur when using BINFS and setting COMPRESSION=OFF.

Component: DirectX
· 120313_KB2680238 - An out of memory error may occur when parsing certain WMA files with large file headers.

Component: Networking
· 120316_KB2678235 - Timeout of IcmpSendEcho may not work correctly.
· 120320_KB2686797 - The event notifications (NOTIFICATION_EVENT_NET_CONNECT and NOTIFICATION_EVENT_NET_DISCONNECT) are not being raised.
· 120309_KB2672387 - IPv6 default gateway address is not displayed when ipconfig command is issued.
· 120331_KB2672189 - Users are not able to disable the IPV6 temporary address by setting the registry 'UseTemporaryAddresses' to '0'. A new registry is added to configure the 'Temporary IPV6 address'. The default value is set to '1' (enabled). [HKEY_LOCAL_MACHINE\Comm\Tcpip6\Parms\GlobalParams] "UseTemporaryAddresses"=dword:1
· 130331_KB2675756 - Memory leak may occur when adding/removing interfaces.

Component: OSShell
· 120308_KB2683496 - When screen is rotated, an opened alchemy application appears on top of Z-order.

Component: SCHANNEL
· 120319_KB2650116 - This update addresses an issue in Schannel.

Component: Tools
· 120330_KB2689819 - This update addresses some build issues with the cloned modules.

Windows Embedded CE 6.0 Monthly Update March 2012:

Fixes made in this Update:

Component: COMM
· 120329_KB2679890 - Winsock goes into waiting state while receiving data and may cause some data failures.

Component: DevMgr
· 120313_KB2685136 - An error may occur when USB Mass Storage device is plugged and unplugged.

Component: Filesys
· 120320_KB2676298 - Under certain circumstances a deadlock may occur.

Component: Internet Explorer
· 120312_KB2675735 - IME On/Off modes are not working as expected.

Component: Kernel
· 120319_KB2686451 - Under certain circumstances time shifts of one hour may occur.
· 120316_KB2684184 - DebugZones set in the registry are not honored for modules that load in boot phase 0.

Component: MSFlash
· 120319_KB2687725 - System hang may occur during boot up.

Windows CE 5.0 Monthly Update March 2012:

Fixes made in this Update:

Component: TimeSVC
· 120313_KB2683396 - This is a DST update for Chile.

Remember: it’s important to keep your system up to date!

Have fun!
Read more! Post this to a friend!

Wednesday, 4 April 2012

WEDU registration endless loop

Hi folks,

When I tried updating my Windows Embedded Compact 7 environment which has to be done with Windows Embedded Developer Update (WEDU), I was never able to get past the registration page.

The solution in a nutshell:
You HAVE to select “Yes, I agree” to the question “* Do you agree that a Windows Embedded representative may contact you using the phone number or email address provided by you to supply further Windows Embedded information?

Thanks Michael for the solution! You can read his full post here.

Have fun!
Read more! Post this to a friend!

Monday, 2 April 2012

How to reduce driver development turn around time

Do you think that driver development under Windows CE is a time-consuming challenge? Ok, not all coders like twiddling with registers and interrupts - that's why we are here.
Under CE - and similar to other embedded operating systems - a 'normal' and therefore sometimes boring driver development cycle looks like that:

    1. Compile and link the driver dll from driver source

    2. Download and boot the modified image

    3. The OS loads the driver and you start debugging

    4. Go to 1 (Do not pass Go, do not collect $200)

Fortunately, there are some shortcuts in this cycle that saves you lots of time.

The first, simple and well known means is to exclude the driver binary from the CE image. Let the OS load the driver from the release file system (Relfsd). With that there is no need to perform a 'makeimg' after each driver modification. Note: This requires a working KITL connection.

The next shortcut requires some initial work but mosly there's no need to download and boot the OS image in each cycle.

I'm sure you will re-use this driver development pattern in future.
For that you have to rename the driver registry entries. Instead of "Drivers\BuiltIn\MyDriver" use for example "Drivers\BuildInTest\MyDriver". With that the driver is not loaded during boot. Then write a simple driver test tool that performs the following steps:

    1. Create a named event. If the event already exists signal the event and goto step 6; otherwise continue with the next step.

    2. Copy the registry data from "Drivers\BuiltInTest\MyDriver" to "Drivers\BuildIn\MyDriver".

    3. Let the OS load and start the driver via ActivateDeviceEx() API function.

    4. Wait for the named event to be signalled by a second instance of the edriver test tool.

    5.As the event gets signalled unload the driver by calling DeactivateDevice() API function.

    6. Free the event so with the next start of your test tool it again loads the driver.

    7. Simply exit :-)

With all that stuff prepared you load your driver by starting the test tool the first time (e.g. via CE shell "s loaddriver.exe". Now you can test/investigate your driver as in former times. The big difference is that you can unload the driver by starting the test tool a second times, modify your driver and start over without the need to reboot the OS again.

This little development pattern accompanies my since I started CE development about 10 years ago. So it's high time to share :-)

Read more! Post this to a friend!