The most up-to-date version of the Windows Embedded Compact 7 release notes is available at http://go.microsoft.com/fwlink/?LinkId=219208.


Documentation for Windows Embedded Compact 7 is available in Visual Studio only in Administrator mode. To work around this issue, run Visual Studio as an administrator.

Windows Embedded Compact 7 Installation Instructions

Windows Embedded Compact 7 cannot be installed on computers that have previous versions of Windows Embedded CE installed. If you have a previous version installed on the target computer, do one of the following:

  • Uninstall the previous version of Windows Embedded CE before installing Windows Embedded Compact 7.

  • Create a virtual machine and install Windows Embedded Compact 7 on the virtual machine. In a Windows 7 environment, you can use Microsoft Virtual PC. For more information about Virtual PC, see http://go.microsoft.com/fwlink/?LinkID=210755.

  • Install Windows Embedded Compact 7 on a different computer.

Hardware Requirements

Your computer must meet the following hardware requirements:

  • Approximately 100 GB of free hard disk space

  • Minimum: 1.6 GHz CPU, 384 MB RAM, 1024x768 display, 5400 RPM hard disk

  • Recommended: 2.4 GHz or higher CPU, 2048 MB or more RAM, 1280x1024 display, 7200 RPM or higher hard disk

Operating Systems

You can install this release on the following operating systems:

  • Windows XP Service Pack 3

  • Windows Vista Service Pack 2

  • Windows 7 and any available service packs

Software Requirements

Your computer must have the following software installed:

  • Visual Studio 2008 Professional (for all components)

  • Visual Studio 2008 Service Pack 1

  • .NET Framework 3.5


To use Microsoft® Silverlight® for Windows Embedded you will also need to have the following software installed:

  • Microsoft Expression Blend® 3

  • Windows Embedded Silverlight Tools

Your computer must not have the following software installed:

  • Previous Windows CE, Windows Embedded CE, or Windows Embedded Compact components

Trial versions of Visual Studio 2008 are available from http://go.microsoft.com/fwlink/?LinkId=193526.

To Install Windows Embedded Compact 7

Before you install, do the following:
  1. Back up important data and programs stored on your development computer.

  2. Have your copy of the installation discs and the product keys available to use.

Step 1: Install Visual Studio 2008

Install Visual Studio 2008, including the Smart Device Programmability for Visual C++ if currently not installed. Professional and Team Edition platforms of Visual Studio are both supported.

  1. Verify that you have administrative credentials on your development computer.

  2. Insert the first Visual Studio 2008 disc.

  3. In the Visual Studio 2008 Setup dialog box, select Install Visual Studio 2008.

  4. In the Welcome dialog box, click Next, and follow the instructions.

    You may be prompted to change discs during the installation process.
    After installing Visual Studio 2008 you may be prompted to install the MSDN Library for product documentation. This step is optional and the DVD containing the MSDN Library is the Visual Studio 2008 DVD, which is included with the Windows Embedded Compact 7 toolkit. For the most current documentation see http://www.msdn.microsoft.com.

  5. Install Microsoft Visual Studio 2008 Service Pack 1.

Step 2: Installing Microsoft Expression BlendTM 3 (Optional), required for using Silverlight for Windows Embedded

  1. Insert the Microsoft Expression Blend 3 disc.

  2. When the Welcome dialog box is displayed, click Begin Install, and follow the instructions.

Step 3: Install Windows Embedded Compact 7

Before you install the latest version of Platform Builder, you must uninstall earlier versions of Platform Builder and the Compact Test Kit. For more information, see Uninstall Previous Revisions of Platform Builder and Test Kit before Updating.

  1. Verify that you have administrative credentials on your development computer.

    After installation is complete, you do not have to be logged on with administrator credentials.
  2. Insert the Windows Embedded Compact 7 disc 1.

  3. Run WindowsEmbeddedCompact7.exe.

  4. When the Welcome dialog box is displayed, click Begin Install, and then follow the instructions.

    During installation, the progress bar is not always accurate, and installation times can vary according to installation type.

Step 4: Install Windows Embedded Compact 7 extra components and related service packs

  1. Review the release notes and do the following:

    1. Install any required Microsoft updates or service packs.

    2. Install any optional components that may be available.

  2. Install optional or third-party components (if applicable).

Installation Known Issues

-quiet Install Disk Costing

Installing Windows Embedded Compact 7 using the –quiet flag does not perform disk costing. Disks that do not have the required available free space will stop the installation and remove cached installation MSI's.

Installation Resume After Failure

The resume logic for restarting an installation after the initial installation failed does not work. To work around this issue, restart the installation manually.

Shared Source Installation

When you do a full install or a custom install with shared source selected, the Installation Source File dialog box appears. If you download options from the Internet and the Allow downloading for all files box is checked, the installation of shared source fails. In this condition, you cannot take action from the Installation Source File dialog box; you must cancel the installation. To work around this issue, use the original media install disks provided with a purchased copy of Compact 7.

Using the Expression Blend Templates Included in the Windows Embedded Silverlight Tools Installation

To use the Expression Blend Templates for Silverlight for Windows Embedded that are included with Windows Embedded Silverlight Tools, you must install Expression Blend 3 first. If Expression Blend 3 is not installed, the template files will not be installed.

To download Microsoft Expression Blend 3 + SketchFlow trial, see http://go.microsoft.com/fwlink/?LinkId=200968.

If you are using Expression Blend 3 in a language other than English, the templates will not display in the New Project dialog box of Expression Blend 3. To use the templates, copy the files stored in %ProgramFiles%\Microsoft Expression\Blend 3\ProjectTemplates\en\Windows Embedded Silverlight Tools to the local user directory: %Users%\<user name>\Documents\Expression\Blend 3\ProjectTemplates\Windows Embedded Silverlight Tools.

Default path

You cannot edit the default path directly; you must click the Change button.

Cache location

Removing the cache location will impact your ability to manage your installed components.

UAC Acceptance

If the installation loses access to the source location, the following error appears:

Install cannot proceed without UAC acceptance.

To work around this issue, restore connectivity to the source location and retry or restart the installation.

To Uninstall Windows Embedded Compact 7

Uninstall Known Issues

  • You cannot uninstall Compact 7 components while they are open.

To Modify Your Installation of Windows Embedded Compact 7

To modify your installation of this release
  1. In Control Panel, under Programs, click Change a Program.

  2. In Uninstall or change a program, select Windows Embedded Compact 7, and then click Change.

Modify Installation Known Issues

Modify Installation Disk Costing
  • When removing a component from an installation, disk costing does not subtract the previously installed components. It displays the disk cost of currently added options for the modify page and may display the following error message:

    Not enough Free Space available on the target volume for the current options selected

    To work around this issue, uninstall the product completely, then reinstall.

Product and Documentation Updates

To get the latest product and documentation updates, use the Windows Embedded Device Updates by selecting Check for Updates from the Help menu in Platform Builder.

Platform Builder for Windows Embedded Compact 7

Platform Builder is included with Windows Embedded Compact 7 and now installs on Visual Studio 2008 SP1.

ARMv4i Architecture Support

ARMv4i support is not available in this release. ARMv5 is the earliest supported ARM architecture. You can no longer build or deploy images to ARMv4i platforms, including Device Emulator.

Board Support Package (BSP) Test Suite

The BSP Test Suite is now a collection of BSP-specific tests accessed within the normal use of the Test Kit tool instead of a plug-in.

PC Card (PCMCIA) Support

PCMCIA (PC Card) is not supported in this release. If you experience difficulty building your OS because it supported these buses, remove references to the deprecated components.

SDK Samples

This release does not include SDK samples.

Security Features

The Certificate Module (CertMod) and the SYSGEN_CERTMOD variable are not available in this release. Instead you can use the Loader Verifier Module (LVMOD).

Known Issues

Platform Builder Known Issues

Project Properties Window Gives Invalid Pointer Error

When working on an OS design from a modified %_WINCEROOT% location, an error dialog with one of the following messages is displayed when trying to display the project properties of newly created OS design:

  • The operation could not be completed. Invalid pointer
  • Object reference not set to an instance of an object. Object reference not set to an instance of an object.

This issue is caused by the %_WINCEROOT% value not being propagated within Platform Builder. To work around this issue, try one of the following options:

  • Log off and log in again to force opening the project again and force a reset of the related registry key.

  • On the Tools menu, click Options, and then select Platform Builder and modify the _WINCEROOT value in the UI to populate the registry key.

Romimage.exe Build tool

Non-XIP DLLs defined in the FILES section of a .BIB file can be located only within the address range "0x40000000 - 0x5FFFFFFF". However, XIP DLLs defined in the MODULES section of a .BIB file can be located within the address range "0x40000000 - 0x6FFFFFFF", which means these DLLs can overlap the addresses of RAM-backed map files(0x60000000 - 0x6FFFFFFF).

The Romimage.exe build tool does not reject the DLLs that overlap with the RAM-backed map files and will cause the image not to boot. To work around this issue, do not locate XIP DLLs within the address range of RAM-backed map files (0x60000000 - 0x6FFFFFFF).

Building on Multi-Processor Machines

When building an OS image on a machine with multiple processors, if the CPPBROWSE=1 flag is set, then the SYNCHRONIZE_BLOCK=1 flag is needed to ensure that the build succeeds.

Build Solution Source Build

When selecting the Build Solution command from the Build menu, Platform Builder will scan all the source trees (private, public, and so on) to determine what to build before completing the build process (running the Sysgen, Build, BuildRel, and MakeImg phases) to minimize build breaks.

To return to previous behavior (CE6), use a custom build command to achieve the desired behavior, possibly resulting in shorter build times but with some increased risk of a break during the build.


The Tab character causes the command line for the assembler to insert a gap that the assembler command line misinterprets, resulting in an error during build. To work around this issue, avoid using the Tab character in the SOURCES file.

Debugger and Connectivity

Platform Builder supports a maximum baud rate of 115200 for serial download or KITL connections. To work around this issue, use USB & TCPIP KITL when larger baud rates are required.

Resource-only DLLs will not show up in the Modules window when the debugger is loaded. To work around this issue, use gi mod to view the list of modules.

In multi-core systems, the debugger may not be able to attach to a process after it disconnects from another process because of a race condition that effects the way threads are initialized and terminated. To work around this issue, exit the debugger and restart it.

Do Not Open .kdmp or .sln Files within the Flat Release Directory

Do not open dump (.kdmp) or Visual Studio solution (.sln) files in the flat release directory because it might cause issues with Platform Builder. To work around this issue, on the Start menu, click Run. In the Run dialog box, type devenv /vsskippkgs, and then click OK.

Dump File Cannot Be Written

Writing the complete dump file from the Capture Dump File command on the Debug menu will occasionally display the message “Dump file cannot be written” after attempting to create the file. To work around this issue, try saving the file again.

Creating a Win32 Application with MFC Support

When using a Windows Embedded Compact SDK to create a Win32 application with MFC support, the build output displays the following expected unsafe API warnings:

  • Warning C4996: 'wcstombs': This function or variable may be unsafe. Consider using wcstombs_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details. C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include\xlocnum
  • Warning C4996: 'mbstowcs': This function or variable may be unsafe. Consider using mbstowcs_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details. C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include\xlocnum

Visual Studio 2008 ATL and MFC does not support SMP devices

ATL and MFC Smart Device applications can throw an exception or may stop responding when executed on a Windows Embedded Compact 7 SMP Device.

To work around this issue, tell Windows Embedded Compact 7 to run the application on only one processor by doing the following:

  1. In the Properties for the application, on the Configuration Properties page, under the Linker option, select Command Line.

  2. In the Additional Options field, replace “7” with “5”.

Visual Studio Smart Device Native Debugger

The Visual Studio Smart Device native debugger may not step against a Compact 7 image. Stepping in, stepping out, and stepping over do not work when using the debugger without Platform Builder in an SDK, or with Platform Builder but in a separate Smart Device project.

To work around this issue, set breakpoints and use F5 to hit the next breakpoint.

Visual Studio Smart Device Native Development Support for ARMv4i

Visual Studio Smart Device (VSD) native development will compile ARMv4i code for all Compact 7 ARM-based devices. SDK packages derived from ARM OS Designs will be designated as ARMv4i devices when installed against Visual Studio 2008 SP1. Applications built from those SDKs (using Smart Device Projects in Visual Studio) will be compiled and linked as ARMv4i applications. Applications built in this manner should only be deployed to devices running the OS Design from which the SDK was created.

To work around this issue, add the following entries to the Microsoft.TypeMaps.xsl file (In Windows 7, this file is located in C:\ProgramData\Microsoft\corecon\1.0\addons\Microsoft.TypeMaps.xsl). These entries map the VSD tools to ARMv5, ARMv6 and ARMv7 capable devices. You can add the following items after the other ARM version definitions.

If you already have the file Microsoft.Platform Builder 700.TypeMaps.xsl it should create the following mappings for you.
<QIS ID="84148224"> <!-- 0x05040000 ARMv6 -->
<PROPERTY ID="default" Protected="true">ARMV4I</PROPERTY>
<QIS ID="84148225"> <!-- 0x05040001 ARMv6 with FP -->
<PROPERTY ID="default" Protected="true">ARMv4I</PROPERTY>
<QIS ID="84213760"> <!-- 0x05050000 ARMv7-->
<PROPERTY ID="default" Protected="true">ARMV4I</PROPERTY>
<QIS ID="84213761"> <!-- 0x05050001 ARMv7 with FP -->
<PROPERTY ID="default" Protected="true">ARMV4I</PROPERTY>
<QIS ID="84279296"> <!-- 0x05060000 ARMv5 -->
<PROPERTY ID="default" Protected="true">ARMV4I</PROPERTY>
<QIS ID="84279297"> <!-- 0x05060001 ARMv5 with FP -->
<PROPERTY ID="default" Protected="true">ARMV4I</PROPERTY>

SDK Issues

Reinstalling an SDK after uninstalling it and installing Platform Builder will cause the connection to the device to fail from Visual Studio.

When using a Windows Embedded Compact 7 SDK to create a Smart Device Project, the build output shows the following non-critical warnings. No workaround is needed.

C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include\altcecrt.h(308) : warning C4985: '_wcstoi64': attributes not present on previous declaration.

c:\program files\windows ce tools\sdks\sdk_n_m\include\armv4i\stdlib.h(676) : see declaration of '_wcstoi64'

C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include\altcecrt.h(309) : warning C4985: '_wcstoui64': attributes not present on previous declaration.

c:\program files\windows ce tools\sdks\sdk_n_m\include\armv4i\stdlib.h(677) : see declaration of '_wcstoui64'

C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include\altcecrt.h(380) : warning C4985: '_strtoi64': attributes not present on previous declaration.

c:\program files\windows ce tools\sdks\sdk_n_m\include\armv4i\stdlib.h(646) : see declaration of '_strtoi64'

C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include\altcecrt.h(381) : warning C4985: '_strtoui64': attributes not present on previous declaration.

c:\program files\windows ce tools\sdks\sdk_n_m\include\armv4i\stdlib.h(647) : see declaration of '_strtoui64'

Board Support Package (BSP) Known Issues

Windows Embedded Compact supports only the ARM, x86, and MIPS architectures. Other architectures, including the previously supported SH4, are not supported.

If a USB mass storage device is removed during a write operation on any platform, the platform retains the storage device folder in the file system. This leads to the creation of multiple folders while the platform retries the write operation.

CeGetCallerTrust() is not supported in this release, although a stub function exists, which will return an ASSERT(0).

On CEPC and TI OMAP 3530 BSPs, plugging flash drives with less than 1 GB storage into a USB hub with other USB flash drives may cause the drives to disappear from Windows Explorer after suspending and resuming the OS. To work around this issue, remove all flash drives and plug them back in. The flash drives will reappear in Windows Explorer.

ARM Architecture Changes

If you use any of the supported ARM variants, completely uninstall any previous version of Platform Builder and use the versions of Platform Builder that comes with this release.

On ARM-based platforms, you cannot use PAGE_GUARD if you have NX support enabled.

See this TechNet article (http://go.microsoft.com/fwlink/?LinkID=203130) for more information.


The backlight settings on the CEPC do not affect the timeout of the display. If there has been no input for 10 minutes, the display will go to sleep, even if the backlight settings have disabled automatic turn-off.CEPC devices may not properly suspend when used as a USB RNDIS Host. There is currently no workaround for this behavior.

The XXX_PowerDown & XXX_PowerUp implementation of the USB driver makes System API calls, which is not recommended by the power management specifications. For more information about the known issues with the USB driver, see USB Enhanced Host Controller Interface (EHCI) Driver.

When selecting the Suspend command from the Start menu using a PS/2 Keyboard, the CEPC is not properly suspended. The CEPC suspends, then immediately resumes even though there is no physical trigger to wake it up. There is no workaround available for this issue.

If the Serial Debug Port is disabled or set to any other COM Port other than COM1, the OS boot-up time is significantly increased. To work around this issue, set “IMGENFORA=” or modify the "ComPort"= setting in the "COM1 for underlying GSM 07.10" section of the %WINCEROOT%\public\cellcore\oak\files\cellcore.reg file.

Using CompositeFn on a NET2280 card does not allow all three USB-function client drivers to work simultaneously, because NET2280 only supports six programmable USB endpoints. Using all three client drivers simultaneously requires eight programmable USB endpoints. To work around this issue, use the NET2282 card.

If you use the BLDR bootloader on a CEPC, you cannot open RDP with 24-bits or 32-bits. To work around this issue, use the LoadCEPC bootloader with one of the following options:

  • When using the onboard VGA Socket: loadcepc /v /L:640x480x32

  • When using a RageXL Card Socket: loadcepc /v /L:800x600x24

Freescale i.MX27 BSP

When a mass storage device such as a pen drive is attached to the USB OTG Port of a Freescale i.MX27 device, the debug output displays the messages “DataBufferError in IN” and “CQTransfer:Halted”. USB functionality is not affected by these messages: the mass storage device is detected, and USB host tests are executed.

Freescale i.MX31 3DS BSP

i.MX31 3DS images fails to build in debug or checked configurations because of a missing debug or checked library, Pwrtstutil.lib. To work around this issue, remove the "TEST" line from the file \platform\iMX313DS\SRC\dirs. This workaround simply disables compilation of the platform-specific tests that require this library.

When you use ActiveSync or USB KITL, the desktop computer OS may not detect the device. To work around this issue, use a self-powered USB hub to connect the three-stack i.MX31 3DS board to the USB port on the desktop computer.

For additional USB connectivity issues, see USBDBG RNDIS Driver Connectivity with Windows 7.

The Freescale i.MX31 3DS accelerometer driver supports both level detection and pulse detection. After you configure the driver to use level or pulse detection mode, the typical procedure is to wait for named OS events to be notified of level or pulse detection interrupts. After the named OS event has been set, the caller can read the accelerometer's Detection Source Register [0xA] to determine the exact source of the interrupt.

Immediately after you set the accelerometer mode to ACC_MODE_LEVELDETECTION or ACC_MODE_PULSEDETECTION, the named OS event may be spuriously triggered. A subsequent read of the Detection Source Register (using IOCTL_ACC_GET_STATUS) will reveal that none of the interrupt bits have been set. To work around this issue, check the Detection Source Register and then ignore this spurious event, or else preemptively call the function WaitForMultipleObjects with timeout set to 0 (zero) to clear the events before waiting for them.

The post-filter driver component of the image processing unit (IPU) uses the AllocPhysMem function to allocate physical memory and then uses the VirtualCopyEx function with the fdwProtect parameter set to PAGE_PHYSICAL to map the physical address returned by AllocPhysMem. Any use of AllocPhysMem with VirtualCopy where the fdwProtect parameter is set to PAGE_PHYSICAL can cause incorrect physical-page reference-counting and may lead to system instability. The post-filter driver component is untested and not a supported component of this release.

It is not possible to update the MAC Address of the LAN 9217 adapter through the boot loader menu. The LAN9217 adapter is programmed to always read the MAC address from the EEPROM.

The general purpose timer (GPT) clock on the i.MX31 3DS is not accurate or consistent.

ICOP eBox 3300 BSP

The USB host controller may not work correctly when performing interrupt-type transactions. LCD display is supported in this BSP but has not been tested. There is no native IDE mode support.

Preparing a bootable hard disk in DOS using setup.144 is not supported in this release.

If you build an image using the “Embedded device with Silverlight XAML” design template, you will see the following access violation when trying to download it to a device:

4294770055 PID:400002 TID:110004a Unknown: DEBUGCHK failed in file e:\enlistments\ebox3300\chelan-v1\private\winceos\coreos\gwe\mgdi\base\gdi.cpp at line 3008 4294770060 PID:400002 TID:110004a !!ERROR: Calling LeaveCriticalSection without calling EnterCriticalSection

4294770060 PID:400002 TID:110004a dwThId = 0110004a, vpcs->OwnerThread = 00000000, lpcs = efd19fc4

4294770067 PID:400002 TID:110004a Exception 'Access Violation' (0xe): Thread-Id=0110004a(pth=c0430690), Proc-Id=00400002(pprc=81dba108) 'NK.EXE', VM-active=01d9001a(pprc=c042c1c0) 'udevice.exe'

4294770067 PID:400002 TID:110004a PC=efc78de4(gwes.dll+0x000b8de4) RA=efc78d81(gwes.dll+0x000b8d81) SP=cd03fb30, BVA=000000a0

4294770076 PID:400002 TID:110004a Eax=cd05a870 Ebx=00000000 Ecx=00000090 Edx=cd05a870

4294770076 PID:400002 TID:110004a Esi=00006000 Edi=00000000 Ebp=cd03fb3c Esp=cd03fb30 Eip=efc78de4

4294770076 PID:400002 TID:110004a CS=0019 DS=0040 ES=cd050040 SS=0021 FS=efec0060 GS=cd030078

4294770076 PID:400002 TID:110004a URtlDispatchException: returning failure. Flags=0

To work around this issue, enable SYSGEN_DDRAW after creating the Embedded Device with Silverlight XAML OS design:

  1. Open the Catalog Items view.

  2. Navigate to the Graphics subnode of Graphics and Multimedia Technologies.

  3. Select DirectDraw.

  4. On the Build menu, point to Advanced Build Commands, and select Clean Sysgen (blddemo clean -q).

  5. Once the OS design is done building, download it to the device.

NEC Electronics NE1TB Capricorn BSP

The following features are not supported in the NE1TB Capricorn BSP:

  • Suspend and resume

  • Power management


  • SATA

Samsung SMDK6410 BSP

You may encounter difficulties while trying to flash the bootloader to NAND for the first time by using the DNW tool from a computer running Windows 7. To work around this issue, use the DNW tool to download the bootloader to RAM first, then use the USB Serial transport and Platform Builder to download the bootloader to flash.

The Samsung SMDK6410 OAL image will not load if the ENABLE_OAL_ILTIMING variable is set.

Only one of two HS/MMC memory card slots (channel 1) is working. Only one of the two USB host ports is connected to the USB host controller. The BSP does not contain a general purpose Ethernet driver. Use Ethernet kernel independent transport layer (KITL) or USB RNDIS KITL for a shared network connection over VMINI. Some touch panels may need calibration at startup. A calibration application is supplied with the BSP.

SDBUS doesn’t detect a SDIO device from SMDK6410 SDHC after suspending and resuming the device.

The USB Function controller driver only works with USB Mass Storage, RNDIS, and Serial class USB function client drivers. Other USB function client drivers are not supported.

The Samsung SMDK6410 BSP may experience connectivity issues with Ethernet-based KITL connections. To work around this issue, use USB-based KITL connections instead.

Sigma Designs SMP865x BSP

The Ethernet driver incorrectly indicates broadcast packets to the Network Driver Interface Specification (NDIS) driver, even when the NDIS driver has requested filtering of broadcast packets. This results in debug messages and minor performance impact. There is currently no workaround for this issue.

The Sigma SMP865x platform does not support changing the display resolution at run time with the ChangeDisplaySettingsEx function. You can configure the resolution at startup by using the registry.

Using 3Gbps SATA drives on the Sigma SMP865X platform causes direct memory access (DMA) controller failures. To work around this issue, use jumper cables to configure the SATA drives to the 1.5 Gbps configuration.

The EHCI and OHCI controllers on the Sigma SMP865x platform are linked, so you must set BSP_SMP865X_OHCI=1 for any USB functionality.

To play AAS, DTS, ADTS, and AC3 audio files and .asf video files on an SMP865x platform, you need a private security token for each board. Contact Sigma Designs, http://www.sigmadesigns.com/, to obtain a token and instructions on how to use it.

When you play a video file, the active movie window is not released. If you play another video, a second window will open. There is currently no workaround for this issue.

The Video Decoder does not always provide the correct video dimension to the renderer. There is currently no workaround for this issue.

The DirectDraw driver cannot create surfaces in system memory and does not render some colors correctly. It also does not support video ports. There is currently no workaround for this issue.

USB devices are not detected after being plugged-in and plugged-out multiple times until you reboot the device.


The TI OMAP3530 BSP does not recognize "2 GB Transcend MultiMediaCard" MMC Card.The TI OMAP3530 cannot be used as a USB Loopback reflector. The DLLs LpBkCfg1.dll and lpBkCfg2.dll do not load when the "s lufldrv" command is issued.

When the device is manually resumed from the suspend system power state via pressing the PWR_ON button, the UserActivity timer's ACTIVE event is not set and the respective INACTIVE event is not set.

When using the USB Enhanced Host Controller Interface (EHCI) controller on the TI OMAP3530 Evaluation Module 2 (EVM2), plugging a low-speed or full speed device into the USB port on the EHCI port will cause the port to become non-functional until a reboot. To work around this issue, use a USB 2.0 hub between the USB port and the low-speed or full-speed device.

The EHCI port stops functioning after using the warm reset (warm_rst) button, which causes USB devices such as keyboards, mice, or USB drives to not be detected properly. To work around this issue, use the reset (omap_rst) button to reset the device.

While playing media files on the TI OMAP3530, if the Media Player window is moved or rotated then horizontal lines will appear on the screen, which will block the video playback. To work around this issue, do not move the Media Player window after the file starts playing.

Once the RNDIS function driver is loaded on the TI OMAP3530, it cannot be unloaded until the device is restarted.

TI OMAP 3530 USB RNDIS device functionality does not work correctly. Development computers and other Compact 7 devices will not be able to recognize the TI OMAP3530 as an RNDIS function device. Data transfer between a TI OMAP3530 host and USB RNDIS devices will fail.

On the TI OMAP 3530, the divided by zero exception is not thrown. In this case, the cumulative flag in the FPSCR is set to 1 and the result will be a NaN as defined by IEEE754.

When a device is connected to the OTG port of TI OMAP 3530, occasionally the device will not enumerate during the boot process. To work around this issue, remove and reinsert the cable connected to the OTG port.

The Ethernet driver on the TI OMAP3530 can occasionally become unresponsive during data intensive operations. To work around this issue, restart the device.

The TI OMAP 3530 overrides the common registry settings for the USB function driver class and sets the registry value to Serial, regardless of the which USB function SYSGEN is set. To work around this issue, modify the %_WINCEROOT%\platform\TI_3530_EVM\files\platform.reg file to select the desired driver in the [HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers] key.

The TI OMAP3530 BSP uses PowerVR DDK version 1.3, which has the following known issues:

  1. PowerVR drivers cannot be used with OpenGL compositor. A data abort exception is observed in nullws.dll when booting an image that has PowerVR drivers and the OpenGL compositor. To work around this issue use the GDI compositor.

  2. Applications or tests which use OpenGL driver will appear to hang when the device goes to SYSTEMIDLE state because the OpenGL driver stops rendering but the display does not turn off. Tapping the LCD screen brings the device back to the ON power state and the OpenGL driver resumes rendering.

  3. A prefetch abort exception occurs when the Internet Explorer Embedded browser uses OpenGL drivers for hardware acceleration.

  4. The OpenGL driver does not synchronize eglSwapBuffers with the display vsync rate, causing performance issues in Silverlight for Windows Embedded framework.

The PowerVR DDK version 1.5 is available from Texas Instruments.

vCEPC (Virtual CEPC) BSP

Unlike in the Device Emulator, COM port output in the vCEPC BSP cannot be redirected to a console window. The COM port of a virtual CEPC (vCEPC) can only be output to a file, rerouted to the physical COM port of the host computer, or rerouted to a named pipe (if you have installed a named pipe terminal).

For Windows VirtualPC (WVPC) with Windows 7, currently only the English (United States) keyboard is supported. There is no support for languages other than US English.

The vCEPC BSP does not boot up properly when using Windows Virtual PC for Windows 7 on a 64-bit AMD processor running 32-bit Windows 7. To work around this issue, boot the WVPC using a virtual floppy drive. More information can be found at http://go.microsoft.com/fwlink/?LinkId=206041.

x86 BIOS Loader

The build fails in the %_TARGETPLATROOT%\SRC\BOOTLOADER\BIOSLOADER\BOOTSECTOR\EXFAT\ path. It needs the 16-bit Microsoft Macro-Assembler (MASM) and linker to build the path. This issue applies to the following x86-based platforms: CEPC, ICOP eBox 3300, and vCEPC.

To work around this issue, download the 16-bit Microsoft Macro-Assembler (MASM) and linker from the following locations:

Compact Test Kit (CTK) Known Issues

A new version of the Windows Embedded Test Kit (CTK) is included as a preview of upcoming functionality. The Windows Embedded CTK User Guide.pdf, in the C:\Program Files\Windows Embedded Compact 7\documentation folder, contains more detailed information and a quick start guide on how to use some of the core features of the CTK.

All Platforms

App Verifier is not part of Windows Embedded Compact Test Kit (CTK). It has been replaced with Resource Leak Detector (RLD), which is one of the Remote Tools available with Platform Builder.

You may encounter false failures when running the Windows Embedded Compact Test Kit test 1795: "Direct Draw Interface Test" (ddints.dll) because it tests “unlock surface,” but accesses the pixel pointer again without locking. To work around this issue, do not run this test.

Follow the directions below to build the tests from the installed Shared Source:

Requirements for building the test:

  • Visual Studio 2008 Professional

  • Platform Builder 7

  • Windows Embedded Compact 7 installed with shared sources

To build the tests in the Shared Source
  1. In Visual Studio, create a New OS Design project.

  2. Select the BSP (CPU architecture) you want the binary to be built for.

  3. Select the Image config - i.e. PDA, Enterprise_WebPad, etc.

  4. On the Build menu, click Open Release Directory in Build Window.

  5. In the Build Window, navigate to the Test folder, for example "C:\WINCE700\PRIVATE\TEST".

  6. At a Command Prompt, run "Build -c" and then wait until the build completes.

  7. The test binaries are copied to C:\WINCE700\PUBLIC\TEST\OAK\TARGET\. Select the CPU folder chosen in Step 2.

  8. Copy the built test files to the CTK installation location, i.e. "C:\Program Files\Windows Embedded Compact Test Kit\tests\target\<cpu>\retail", assuming the root directory is C:\. For the "<cpu>", this is the same CPU from Step 2.

  9. Run the test from the CTK.

When the device is suspended while connected to the CTK, it may disconnect or hang when the device is resumed after a delay of more than 30 seconds.

When documentation for a test is not available, the CTK displays “Program could not display page…” instead of leaving the page blank.

When using Windows Vista or Windows 7, you must launch CTK and Platform Builder with the same privilege level. For example, if Platform Builder is opened with administrator privilege, CTK must also be opened with administrator privilege. This is due to permission issues that may arise when copying files from the installation directories to the device.

In this release, the following tests are compatible with Graph Tool:

  • perf_winsock2

  • perf_ddraw

  • fsperflog

  • perf_bluetooth

  • usbperf

  • Silverlight for Windows Embedded tests:

    • Applications Load - Browser

    • Applications Load - Music Player

    • Applications Load - Picture Viewer

    • Applications Load - Sample Home Screen

    • Applications Load - Video Player

    • Background Animation

    • Image Manipulation

    • Screen Transition

Perf_bluetooth results can only be viewed with the GraphTool User Interface application.

Tests from previous Windows Embedded CE 6 releases of CETK are not compatible with this release.

In order for CTK to obtain the correct device architecture during the connection process, CEInstructionSet must be set in the board support package (BSP). CEInstructionSet is typically set in the OEMInit function in the %_WINCEROOT%\platform\<bsp>\src\oallib\init.c file.

The CTK may fail to connect to the device due to one or more of the following possible reasons:

  • The device does not have the supported CPU architecture.

  • The release folder where the image is loaded from is not writeable.

  • There are issues with RTFx.

The following components must be included in the image for the CTK to connect to the device:

  • SYSGEN_PM - full power management. Do not use SYSGEN_PMSTUBS.

  • SYSGEN_CORESTRA - Standard String Functions - ASCII (corestra)


  • SYSGEN_CPP_EH_AND_RTTI - C++ Runtime Support for Exception Handling and Runtime Type Information

  • SYSGEN_CORELOC or SYSGEN_LOCUSA - National Language Support (NLS) or English (US) National Language Support only

When the "File System Performance" test is run, the test must have exclusive access to the log files that it creates in the file system. Some tests require writing and reading data to a file and if those tests do not have exclusive access, they will fail. To work around this issue, stop any services that monitor the file system and affect exclusive access to the file. To stop the services or processes:

  1. Type gi proc in the Windows CE Command Prompt window.

  2. Find the process number that corresponds to the service you want to cancel.

  3. Type kp <proc#> in the command prompt window, where the <proc#> is the process number found in step 2.

CTK Test Failures

For list of known CTK test failures for specific hardware platforms, see the TechNet wiki page for Windows Embedded Compact 7: http://go.microsoft.com/fwlink/?LinkID=203130&clcid=0x409.

Drivers Known Issues

Audio Driver

Notifications in the audio driver are not handled in a timely fashion. If threads that have higher priority than NotificationThread are running when the audio driver is loaded, there will be a delay in the audio driver opening. To work around this issue, set the following registry value to change the priority of the NotificationThread: HKLM\Drivers\BuiltIn\WAPIMAN\NotificationThreadPriority.

Waveform audio (WAV format) files using the GSM, Interactive Multimedia Association (IMA) Adaptive Delta Pulse Code Modulation (ADPCM), and Microsoft ADPCM codecs do not play on the CEPC, ICOP eBox 3300, Freescale i.MX27, Freescale i.MX31 3DS, and Sigma Designs SMP865x platforms.

Backlight Driver

The backlight timeout feature is not controlled by the Display applet in the Control Panel when the driver uses the public backlight MDD. The backlight remains on indefinitely instead of turning off when the timeout period has elapsed. Platforms which use this public MDD are: Freescale i.MX27, Freescale i.MX31 3DS, and Samsung SMDK6410.

Camera Driver Development

Before you modify the camera driver source code, copy the original source code and header files to an external location before you build. The following camera driver header files are located in public\common\ddk\inc directory:

  • CameraDriver.h

  • CameraPinDriver.h

  • CameraPDD.h

  • CameraPDDProps.h

  • CameraDebug.h

  • Dstruct.h

Supported KITL Ethernet Devices

The following kernel independent transport layer (KITL) Ethernet devices are supported in this release:

  1. AMD AM79C973

  2. Crystal CS8900A

  3. DEC21140

  4. RealTek RT8139

  5. NE2000

The following Ethernet adapters are no longer supported:

  1. 3com 3C90X

  2. National Semiconductor DP83815

  3. Netchip NET2890

Platform-Dependent Driver (PDD) Interface Updates May Cause Build Break

The USB Debug (USBDBG) KITL model device drivers (MDDs) for serial and RNDIS transports have been updated, so linked platform-dependent drivers (PDDs) that already use the new implementation must be updated accordingly. The updated code is located in \platform\common\src\common\kitldrv\usbdbg.


To support MDD/PDD NAND driver architecture, you must manually set the SYSGEN_FLASHMDD variable. It does not appear in the catalog in this release.

Printer Driver Sysgen Variables

The following SYSGEN variables are not in the catalog:

  1. SYSGEN_PRINTING (The printing port and printing status report libraries)

  2. SYSGEN_PCL (A sample printer driver to support Printer Control Language (PCL)-compatible printers)

Touch Driver MDD Change Requires a PDD Change

If your touch driver uses the new Touch MDD/PDD interfaces and calls pfnReportSample, you must update it. The callback function pfnReportSample (of type PFN_TCH_MDD_REPORTSAMPLE) has been removed, and all touch drivers written to the new Touch MDD/PDD interface must be updated to use the callback function pfnReportSampleSet (of type PFN_TCH_MDD_REPORTSAMPLESET).

This change applies only to the new touch MDD/PDD interface. Touch drivers earlier than the Compact 7 touch MDD/PDD interface do not need to change.

To determine if your touch driver must change:
  • During startup of your driver, the following message appears in debug output if you need to update your driver.

    Touch: *** WARNING *** Using callback that will be removed soon! Use pfnMddReportSampleSet instead!

    This message appears the first time pfnReportSample is called in every type of build, including release builds.

To work around this issue:
  1. In your touch driver platform-dependent driver (PDD), find the statement similar to:

    pfnMddReportSample(m_mddContext, *pTipStateFlags, x, y);
  2. Replace the previous statement with:

    CETOUCHINPUT input; 
    if (ConvertTouchPanelToTouchInput(*pTipStateFlags, x, y, &input)) {
      pfnMddReportSampleSet(m_mddContext, 1, &input);

USBDBG RNDIS Driver Connectivity with Windows 7

When using USBDBG RNDIS as the device connectivity method, Windows 7 environments require some additional configuration in order to enable proper connectivity. To work around this issue, you may need to make some or all of the following configuration changes:

  • Assign a static IP on the device (via the device bootloader) in the range 169.254.XXX.XXX.

  • Set the subnet mask on the device (via the bootloader) to

  • Disable the Firewall Client Agent, Windows Firewall and IPsec Policy Agent services from services.msc on the development computer. Another way of accomplishing this is to enter "net stop bfe" from an administrator command prompt. From services.msc, ensure that the disabled services do not automatically restart.

  • Unplug the network cable on the development computer to prevent automatic settings changes performed in some workplaces. .

  • If there is a driver installation failure, use the .inf file available in the following shared source path: \platform\common\src\common\ethdrv\rne_mdd\vista\cerndis_vista.inf.

USB Function Composite Driver

If your device uses the PLX Technology NET 2280 PCI to USB 2.0 Hi-Speed Peripheral Controller, it may be unable to switch from full-speed mode to high speed mode when you use a composite USB device driver.

USB Enhanced Host Controller Drivers (EHCD)

For EHCD drivers that use the common EHCD MDD in combination with a platform specific PDD, the PDD HcdPdd_Open function must return the value returned from HcdMdd_CreateHcdObject cast to a DWORD as an Open Context Handle which will be passed into subsequent IOCTL power calls into the MDD.

USB EHCD drivers which used the common MDD without implementing this PDD update will experience a boot time Data Abort or Access Violation exception in the EHCD driver if the power capability IOCTLs are issued to the MDD during driver initialization.

USB Enhanced Host Controller Interface (EHCI) Driver

The USB EHCI driver has not been compliance tested, which can cause problems in data transfer, power management, and enumeration.

There is a limit of 76K (on EHCI) transfer buffer size supported by EHCD. However, this limit is not exposed to the client driver. To work around this issue, customize the client driver to meet this transfer buffer limit to allow chunk transfers and achieve better performance.

USB Host Driver

The new USB host driver has a pipe handle cache that is used to expedite transfers. This cache is fixed at eight entries currently and cannot be changed.

When you connect more than one USB mass storage devices to a hub, then plug the hub into a Windows Embedded Compact 7 device, not all the devices will be properly enumerated. To work around this issue, detach the unrecognized device from the hub and reattach it.

Under some circumstances, unplugging a USB CD-ROM/DVD-ROM drive and then plugging it back in before the OS has time to remove the device from Windows Explorer will prevent Windows Explorer from recognizing the drive and assigning a drive letter. To work around this issue, unplug the drive and plug it back in.

USB Host Mass Storage Driver

TexFAT requires that sector writes are durable. In other words, when IOCTL_DISK_WRITE returns, TexFAT can rely upon the fact that subsequent calls to IOCTL_DISK_READ for the same sector will return the same bytes that were written. TexFAT calls IOCTL_DISK_FLUSH_CACHE at various points to ensure that the sectors are actually written to persistent storage - that the sector writes are durable. The sample USB driver does not implement IOCTL_DISK_FLUSH_CACHE as of now and hence cannot guarantee that the sectors are actually written to persistent storage on a USB storage media.

USB Serial

USB Serial driver is synchronized by unsetting the Active Sync SYSGENS. However, test ID 20 still gets aborted with synchronization timeout issue.

To work around this issue, unset the following SYSGEN variables:






USB Audio Driver

When two USB audio devices are connected to a device and are then removed, there is an access violation error in the usbaudio.dll.

File System Known Issues

AutoLoad Device Registry Keys

In AutoLoad device registry keys, make sure the first seven characters of DeviceName values are unique. The file system manager internally limits the device name size to seven characters, truncating any remaining characters. If the first seven characters are not unique, the file system manager sees the device name as a duplicate of an already existing device and does not attempt to load it.

The registry keys are located here:


Memory Known Issues

This release has increased memory usage, so devices with less than 64 MB of memory might become unusable due to out-of-memory errors. Applications or dialog boxes might appear and disappear quickly or not display at all. When an attempt is made to exceed the available memory, the OS will close processes to free memory. Any other out-of-memory issues can likely be attributed to this general lack of available memory.

To work around this issue, in Visual Studio, in Target Control, use the kill process command (kp) to stop SmartSearch.exe from running, which frees sufficient memory to make the device usable for development. SmartSearch.exe is the primary user interface for dialing the phone. If you cannot stop it from running, there is currently no other workaround.

Microsoft ActiveSync Known Issues

Windows Mobile Device Center (WMDC) v6.1 does not sync correctly with Office 2010 64-bit (x64) version. See this TechNet article (http://go.microsoft.com/fwlink/?LinkId=201061) for more information.Appointments containing recurrences may not work correctly using desktop sync with Outlook 2010 installed (on the desktop).

MTP Responder Known Issues

Windows Logo Tests for MTP

The following Driver Test Manager (DTM) tests in the Windows Logo Kit may fail:

  1. Object Property Tests\Object File Name (test 5)

  2. OperationsTests\SendObject

  3. Miscellaneous Test: Storefull

  4. Object Property Tests - Association Type

  5. Object Property Tests – Non-consumable

If you see any failures of these tests during logo testing, verify that you have installed the most recent version of the Windows Logo Kit (http://go.microsoft.com/fwlink/?LinkId=181122) and that you have applied the latest Windows Logo Kit filter updates (http://go.microsoft.com/fwlink/?LinkId=180983). If you see failures after installing the most recent version of the Windows Logo Kit and applying the latest filter updates, you can request a logo test exception. To request a logo test exception, download the WHQL Submission Readme (http://go.microsoft.com/fwlink/?LinkId=180982) file and follow the instructions in this form.

Multiple MTP connections, or connections through multiple NICs, from a Windows Embedded Compact 7 device are not supported. Only the first connection will successfully connect.

Multimedia Known Issues

Backwards compatibility for features on Compact 7 running on a CE 6 BSP is not guaranteed.

UPnP on IPv6 is not supported. There is currently no workaround for this issue.

When implementing DLNA scenarios, we recommend that you use UPnP over WinInet.

Audio Stutter with PlaySound Function

In this release, the PlaySound function feeds a limited amount of data to the software mixer. The mixer will not fetch new data from PlaySound until the driver returns mixer buffers to it. As a result, audio drivers with buffer sizes larger than the total size of PlaySound buffers may cause data starvation in the software mixer. When the mixer starves, it refills all buffers with silence, resulting in audio stutter.

To work around this issue, configure PlaySound buffers via the registry to be large enough to completely fill the driver's buffers. PlaySound registry settings can be found in the help topic “Waveform Audio Registry Settings.”

Buffering Stream Filter

While playing back a media file in which the Buffering Stream Filter is used in the filter graph, you may encounter networking errors or media playback errors. These are caused by the Buffering Stream Filter receiving conflicting information from the IAsyncReader and IAsyncReader2 interfaces. To work around this issue, do not use the IAsyncReader and IASyncReader2 interfaces simultaneously with the Buffering Stream Filter.

To use the Buffering Stream Filter, you must add one or more of the following filters that Microsoft supplies to your OS design, even if the Buffering Stream Filter is the only Microsoft filter you plan to use.



  • Wave/AIFF/au/snd File Parser (SYSGEN_DSHOW_WAV)

  • Still Image Decoder Filter (SYSGEN_DSHOW_IMAGEDECODER)

  • MPEG-4 Demultiplexer (SYSGEN_DSHOW_MP4DEMUX)

  • MPEG-2 Demultiplexer (SYSGEN_DSHOW_MPEG2DEMUX)


To minimize your image footprint, include the smallest eligible filter.

DirectShow Known Issues

This release does not support GUID_*CMYK image formats.

Media Library

Media Library supports the following file parsers:

  1. Music: asf, wma, mp3

  2. Videos: asf, wmv, avi

  3. Photos: jpg, jpeg, png, tif, tiff, bmp, gif

To populate any other media formats in the Media Library, you must write custom parsers based on the file format.

Media Library does not support generation of song album art and video thumbnails for local media. Therefore this information will not be displayed in the Music Player and Video Player for local media.

Setting any directory that has rapid changes that are not related to media files (such as the \temp directory) will trigger an infinite loop for the media library to parse the output file from mlparser. We do not recommend setting highly dynamic folders as a watched location in MLConfig.xml.

Video Mixing Renderer

The overlay mixer mode on the video mixing renderer filter does not work for this release.

Server-Side Playlists (SSPL)

You may not be able to play more than one server-side playlist in each OCX session. To work around this issue, open a separate OCX session for each playlist.

JPEG format is not supported in a server-side playlist. To work around this issue, encode JPEG as WMV media format and then add it to the playlist.

Logging information may be missing or incorrect in a server-side playlist. There is currently no workaround.

Networking Known Issues

SIM Manager

New applications that use Subscriber Identity Module (SIM) APIs from Cellcore.lib will not function, but applications from Windows Embedded CE 6.0 that are already compiled are supported. To work around this issue, use the SIM APIs from Sim.lib instead of Cellcore.lib.

The auto dial for ICS feature does not work in this release.

Network Projector Registry Settings

Use the following registry settings to configure a network projector:

To configure the projector name and the device name, use the following registry settings, located in the key HKEY_LOCAL_MACHINE\Software\Microsoft\PictorService.

Name Type Description Default Value



The name of the projector. The maximum string value is 50 characters, including the NULL character.




The name of the device. You can use the name of the device to connect to the projector without using the projector’s IP address.


To configure the password for the Network Projector Sample UI, use the following registry settings, located in the key HKEY_LOCAL_MACHINE\Software\WirelessProjector.

Name Type Description Default Value



The length of the password.

The maximum value is 100 characters.

For the Network Projector Sample UI, this value can range from 4 to 24.




Whether the projector will use a numeric or alphanumeric password.

It can be one of the following values:

0 – numeric password

1 – alphanumeric password




Indicates password change requirements.

It can be one of the following values:

0 – No password change required.

1 – Change password according to timeout period.

2 – Change password according to policy.




The amount of time, in minutes, for the password timeout period.

This value can range from 1 to 1440 minutes.




Indicates when to require a password change when AutoPasswordChange is set to 2.

It can be one of the following values:






Number of sessions for connecting to a projector.

This value can range from 1 to 20.


Power Manager Known Issues: Power States

The SetSystemPowerState API can sometimes return success but still fail to set the requested power state. This happens when you set the system power state to On in a specific scenario while the device is already in the UserIdle state. The specific scenario is described as follows: after the system transitions to the UserIdle state, it waits for the ACuserIdle time after the transition, and then calls SetSystemPowerState to set the system to the On state. The SetSystemPowerState API then returns success, but the device is still in the UserIdle state. This problem occurs only with power transitions using SetSystemPowerState, and not with other power transitions through Wake-Up sources such as the real-time clock (RTC) or the keyboard.

Remote Desktop Protocol Known Issues

RDP 7.0 Codecs

In order to use the RDP 7.0 enhanced performance for 32bpp sessions to a Windows 7 or 2008 R2 Server, the x86-based client CPU must support the SSE2 instruction set. If the x86-based client CPU does not support SSE2, then the latest RDP 7.0 codecs will not be used when establishing a session.

Key Presses Produce Click Sounds

The default behavior of Windows Embedded Compact 7 is to produce a click sound whenever a key is pressed. To disable this audio output, set the following registry key in the Wceshellfe.reg file in the %_WINCEROOT%\public\wceshellfe\oak\files folder:


"Key"=dword:00000; disables the key clicks

RemoteFX Sessions Do Not Support Large or Color Cursors

There is limited support in Windows Embedded Compact 7 for large and color cursors. RemoteFX sessions with color cursors will always display the default pointer cursor.

Security Known Issues

Loader Verifier Module (LVMOD) Known Issues

When using certificates with chains deeper than one level for code signing, using a PFX file for code signing will result in insufficient information being appended to the signed binary by signtool.exe. In such cases, the signing should be done by adding the signing certificate chain to the development computer’s certificate store and signing using the store certificate. The environment variable BUILDSIGN_CMDLINE can be used to specify the certificate name for this. For example, set BUILDSIGN_CMDLINE=sign /n “<name_of_certificate>”.

When adding or removing an item from the Blocklist, you must use the CERT_SHA1_HASH_PROP_ID property.

Shell Known Issues

Adobe Flash Player 10.1 ActiveX Control

Adobe’s release notes for the Flash Player 10.1 ActiveX Control are at http://kb2.adobe.com/cps/838/cpsid_83808.html.

Playback of large videos (needing more than 8MB of buffer for streaming) through NetStream is not supported.

Set the following registry setting to enable high quality video playback on devices that support DirectShow hardware decoding. Select the highest available format supported by the hardware decoder.

[HKLM\Software\Adobe\Flash\H264Profile\Max supported profile]. Type: DWORD. Value: 66

The Adobe Flash Player 10.1 ActiveX Control may experience problems playing encrypted, streamed video because the security component is case sensitive and does not recognize the name of the Flash 10.1 control on the device. To work around this issue, rename “flash.ocx” to “Flash.ocx” (with a capital “F”) or set the following registry value:


default string value = "Flash.ocx"

There is no Flash Player 10.1 ActiveX Control binary for the ARMv7 architecture. To use the Flash Player 10.1 ActiveX Control on ARMv7 architecture, use the Flash Player 10.1 ActiveX Control binary for ARMv6.

Adobe Flash Player 10.1 ActiveX control uses DirectShow to render video. If your DirectShow filter also attempts to render video, your web browser may stop responding during video playback. To work around this issue, ensure that your DirectShow Filter only handles video decoding, and not video rendering.

Small Screen Input Panel

When using the small screen input panel, gestures are always enabled, even if they are disabled in the control panel. To work around this issue, change the following code in the %_WINCEROOT%\public\common\sdk\samples\msim\im.cpp file:

    DWORD dwRet = 0;
    UINT uKB = IM_ReadRegistry();
    if ( uKB == ASCIIKB || uKB == ASCIIKB_SMALL)
        return dwRet;
    if( nKeyUpX - nKeyDownX > SWIPE_LENGTH )

Compositor Known Issues

The version of Compositor in this release is functional but exhibits performance issues. Silverlight-based applications may have display or performance problems with certain graphics drivers. Remote Desktop Protocol (RDP) UI and session performance is severely degraded when the host OS is built with the new compositor and the display driver on the system does not support OpenGL ES 2.0 extensions. To work around this issue, either omit the new compositor from your system or use a display driver that supports these extensions.

The compositor does not support platforms configured for more than one monitor.

Layered Windows API

The Layered Windows APIs are not supported in this release. Do not use the following API members:

  • SetLayeredWindowAttributes

  • GetLayeredWindowAttributes

  • UpdateLayeredWindow

  • UpdateLayeredWindowIndirect



WM_USER and WM_APP messages are blocked when you post or send messages to HWND_BROADCAST, but the messages return success. To work around this issue, for custom message broadcasting, use messages created by the RegisterWindowMessage API instead.

OpenX DepTree Moved to \public\common

Header and library files for OpenGL ES 1.1 (Common Profile), OpenGL ES 2.0, OpenVG, and EGL 1.4 have been moved from \public\openx to \public\common, as shown in the following table.

File name Moved to






















Tooltip on CustomUserControl

ToolTip and ToolTipService do not invoke PlacementMode on CustomUserControl. Tooltips will not show for these cases and Opened and Closed events will not be triggered.

Silverlight Known Issues

Animation Does Not Execute Properly across Threads

Common controls with a render core-based user interface may not paint themselves immediately when their state changes if the thread that created the control does not have a message pump. You can call UpdateWindow() to force a paint operation; however, animations, such as those of the progress bar control, might not occur unless a message pump is running for the thread. There is currently no workaround for this issue.

ARM Debug Builds

Silverlight for Windows Embedded allocates large amounts of stack space when run on debug ARM builds. If the visual tree for your application is moderately deep or very deep, you may find that the default stack size of 64K is insufficient. To work around this issue, increase the stack size by using the /Stack parameter on the EditBin tool.

Binary XAML Format in Silverlight for Windows Embedded

Extensibility objects created using the RegisterXamlObject API are not converted to Binary XAML (BAML) format, so they will not have the performance benefit of the BAML format. The XAML scenes containing such objects will remain in XAML format.

XAML containing custom effects cannot be converted into binary XAML, so XAML using these effects will remain in XAML format.

Click Locations on UI Elements Do Not Take Into Account Changes Due to Custom Effects

Silverlight for Windows Embedded includes built-in support for BlurEffect and DropShadowEffect. These can be applied to compound UI elements containing interactive elements like Buttons or TextBoxes. While the two built-in effects do not change the positioning of elements in a compound UI element, it is possible to create Effects that do (like a swirl or wave effect). In this case, mouse clicks will not work as an end-user expects, because the hit-testing will be based on the locations of the UI elements before the effect is applied.

Click Events in Silverlight for Windows Embedded

When using an UI based on Silverlight for Windows Embedded and the Software Input Panel (SIP), mouse click events are not generated when a button is pressed if the button is configured to generate the event on "Button Up." To work around this issue, configure the button to generate the event on “button down” and configure the button's "ClickMode" property to "Press" in the XAML file of the application's UI.

Custom User Controls and Custom Dependency Properties

When you register a custom dependency property for a custom user control, you must do one of the following:

  • Set the default value in the MetaData.

  • Set the value in the XAML.

  • Call SetPropertyValue before GetPropertyValue.

Otherwise, the returned value of GetPropertyValue is of type VTYPE_NONE instead of the type that the property was registered with.

Design Template

Building and deploying an image using the 'Embedded device with Silverlight XAML' design template will generate the following error when you try to navigate thru the UI:

23584 PID:38a001e TID:38d001e [XRShell] CXRShell::LaunchApplication - Unable to launch: [\Windows\ctlpnl2.exe] file not found

To work around this issue:

  1. Set the following User Interface control panel SYSGENS in your OS Design:

    • SYSGEN_DATETIMECPL (Date Time Setting)

    • SYSGEN_DISPLAYCPL (Display Settings)

    • SYSGEN_ETHERNETCPL (Network Connection Setting)

    • SYSGEN_INPUTCPL (Input Setting)

    • SYSGEN_REGIONALCPL (Regional Setting)

    • SYSGEN_SNDSCHEMECPL (Sound Setting)

    • SYSGEN_WIFICPL (Wi-Fi Setting)

    • SYSGEN_CURSOR (Mouse)

  2. On the Build menu, point to Advanced Build Commands, and then select Clean Sysgen (blddemo clean -q).

  3. When the image finishes building, download the image to the device.

Event Handling Differences between Silverlight and Silverlight for Windows Embedded

In Silverlight for Windows Embedded, for event handling on all objects, your custom event handlers are always invoked first. If your custom event handler sets the event data to Handled, then the event is not routed to other handlers. This design enables your application to define custom behavior for internally implemented event handlers.

For example, on a button object, if the MouseLeftButtonDown custom event handler sets Handled to true, the Click event will not be generated.

UIElement::Add and UIElement::RemoveHandler APIs are not supported in Silverlight for Windows Embedded. If you need an event on a control to bubble up to its parent, do not set Handled=true in the EventArgs structure.

In Silverlight 3 for Windows, control event handlers are always invoked first for event handling. If the control event handler sets the event data to Handled, then the event is not routed to other objects or custom event handlers. If a user wanted to override the default behavior, the user would need to create a subclass of the control and override the control event handler. Given the flexibility of this approach, we do not support the AddHandler method on UIElement. AddHandler provides a way to attach handlers that are invoked even if another handler in the delegate chain has marked the event as handled.

Note that control events contain all events defined in and inherited from the control object’s interface.

Event Routing with Buttons Differs from Other UI Controls in Silverlight for Windows Embedded

The ButtonBase::OnMouseLeftButtonDown method does not set the Handled property of the event data to true, regardless of the ClickMode of the Button object.

There is currently no workaround.

Expression Blend 3 with the Silverlight 2 Template

When using a "Silverlight 2 for Windows Embedded Application" project in Expression Blend 3, you must change to XAML view and manually add the ClassName property to the Win32Control element to set the ClassName property.

IXRVisualHost object

When an edit control has focus, the Software-based Input Panel (SIP) will pop up, allowing the user to enter text into the edit control. If the application terminates without switching the focus away from the edit control, the SIP will remain visible until the IXRVisualHost object is released.

MouseLeave Event Handler When Silverlight for Windows Embedded is not Full-Screen

If a UIElement object overlaps the edge of a window that is displaying Silverlight for Windows Embedded content, the MouseLeave event handler will not be called if the mouse leaves the window through the area of overlap.

To work around this issue, in your application, catch the mouse state of the window that Silverlight for Windows Embedded is running in, and then inform UIElements of the change.

Nested Projections in Silverlight

Silverlight for Windows Embedded does not support nested projections (for example, applying a three-dimensional projection transform to a UIElement that has a child UIElement that also has a 3-D projection transform). To work around this issue, restructure the XAML to eliminate the nested projections.


On the SMDK platform, the BSP_NOOES flag will be automatically set. If the OpenGL API rendering is enabled in Silverlight for Windows Embedded, you must unset the BSP_NOOES flag to prevent security issues.

SDK Naming Convention

SDKs with parenthesis in the name will not display in Windows Embedded Silverlight Tools. To work around this issue, remove the parenthesis from the SDK name.

Style Element BasedOn Attribute in Silverlight for Windows Embedded

Silverlight for Windows Embedded does not support the BasedOn attribute for Style elements. In Silverlight 3 this attribute allows one Style to inherit properties from another Style. For instance, a designer could create a Style that includes the default text formatting for an application and then use it as a basis to format Button and TextBox Styles.

To work around this issue in Silverlight for Windows Embedded, copy all of the default formatting into each Style that it is relevant to. This procedure has the side effect of increasing the size of the XAML for an application.

Three-Dimensional (3-D) Projection Transform

The 3-D Projection Transform functionality in Silverlight for Windows Embedded is different from the functionality in the desktop version of Silverlight. For example, on platforms supporting OpenGL API the projections appear to be more extreme than on the desktop. Also, on the SMDK 6410 platform with DDraw, UI elements with projections that rotate on the z-axis do not appear on the screen. To work around these issues, use different combinations of projection values.

Tooltips in Silverlight for Windows Embedded

Tooltips are added to UI elements as attached properties, which can be given names. To access the tooltip programmatically, you must first find the parent UI element and then use its ToolTipService.ToolTip attached property.

Virtualization Win32 controls sometimes don't scroll

Sometimes a virtualized list box where the list items contain embedded Win32 controls will not scroll properly. To work around this issue, turn off virtualization for list boxes that will not contain a large number of elements.

Windows Embedded Silverlight Tools

FieldModifier is unsupported in Windows Embedded Silverlight Tools. Adding this property to a named object causes the named object to have the modifier specified.

For example, <TextBlock x:Name="myTextBlock" x:FieldModifier="public" … results in the following code being generated in MainControl.g.cs:

public System.Windows.Controls.TextBlock myTextBlock;

Without the x:FieldModifier, the following code is generated:

internal System.Windows.Controls.TextBlock myTextBlock;

The project runs without parsing errors at runtime when testing from Expression Blend 3.

When you import an Expression Blend project using Windows Embedded Silverlight Tools, if you try to open MainPage.xaml in Design View in Visual Studio, you may see the following error in the error output window:

Items added to a dictionary must have a key

There is no workaround for this issue and it should not affect the project.

Avoid making manual changes to the Expression Blend XAML files. If you change the XAML by hand, a subsequent designer change to the XAML will overwrite your changes.
Using Windows Embedded Silverlight Tools with ARMV7

Windows Embedded Silverlight Tools will work with the ARMV7 processor, however, the paths of the installed SDK may continue to reflect ARMv4I.

  • C:\Program Files (x86)\Windows CE Tools\SDKs\Silverlight for Windows Embedded SDK\Lib\ARMv4I

  • C:\Program Files (x86)\Windows CE Tools\SDKs\Silverlight for Windows Embedded SDK\Include\Armv4i

Windows Embedded Silverlight Tools displays error messages about duplicate user control names

When you use Windows Embedded Silverlight Tools to import an Expression Blend project that includes user controls, each user control must have a unique class name even if your user controls are defined in different namespaces. If you have any duplicate user control names, you must rename them to eliminate duplicates.

Adding the subproject results in an “illegal characters in path” error

If your Expression Blend project has one or more file names that contain double-byte characters, Windows Embedded Silverlight Tools will be unable to use your project to create a valid Platform Builder subproject or SDK project. To remedy this problem, convert these file names to Unicode format.

Building the subproject results in an “undeclared identifier” error

If you rename the App.xaml file in your Expression Blend project before importing this project into a Platform Builder subproject or SDK project, the import will succeed but the resulting subproject will not build. Renaming this file after import but before update will also cause build errors. Do not rename this file.

Some XAML objects do not show up in the Event Handler View

Event Handler View may not display an object that you have defined in your XAML. To work around this issue, do one of the following:

  • Name all XAML objects that you will attach to event handlers before importing the Expression Blend project into a Platform Builder subproject or SDK project.

  • Do not modify XAML files in Visual Studio; instead, make all of your XAML changes in Expression Blend.

  • Include all XRPack IDs in your Expression Blend project before you import that project into a Platform Builder subproject or SDK project.

  • Before importing your Expression Blend project, finalize the names of all namespaces. To change a namespace name after creating your subproject, you can manually edit the resource IDs of your Expression Blend project to match those in the generated project header file (for example, MyClockGenerated.h.

Duplicate user control after update

If you rename the folder that contains one or more user control in the source Expression Blend project and subsequently use the import tool to update your subproject, Windows Embedded Silverlight Tools will create duplicate files for the user controls that reside in the renamed folder. To work around this issue, do not rename Expression Blend project folders that contain user controls.

WriteableBitmap Render

Objects with transforms rendered in WriteableBitmap using the method Render will result in the object to be rendered without its transform. To work around this issue, include the transform as an optional second parameter to IXRWriteableBitmap::Render.

XAML Resource Packager (XRPack) in Silverlight for Windows Embedded

When you use XRPack with one of the image compression options, a generic resource compiler error message will be reported if image compression fails.

XRPack XAML Markup Requires Additional Namespace Declarations

To use XRPack XAML markup in an Expression Blend project, you must declare the xrpack namespace, as follows:


Typically you add the namespace declaration to the root UserControl element.If the mc prefix is already defined, then you need to change the mc:Ignorable attribute value to add the xrpack namespace prefix instead of replacing it, as follows:

  mc:Ignorable="d xrpack"

Other namespaces that might be required for using XRPack XAML Markup:

Running XRPack.exe Manually Requires Rc.exe and Rcdll.dll in the same directory

To run XRPack.exe manually by using a command line build prompt window (instead of running it automatically when you create or update a subproject by using Windows Embedded Silverlight Tools), Rc.exe and Rcdll.dll must be in the same directory. To work around this issue, copy the following files from %_WINCEROOT%\Sdk\Bin\i386\ to %_WINCEROOT%\Public\Common\Oak\Bin\i386\:

  • Rc.exe

  • Rcdll.dll

XRValue Class

The ShouldFreeValuePointer property does not correctly transfer ownership of XRValue contents when the XRPtr is used for the following types: IXRDependencyObject, IXRPropertyBag, or IXREnumerable and FreeXRValue() when called on the first object of XRValue. To work around this issue, use standard pointers rather than XRPtr and explicitly calling AddRef to increment its reference count.

Using IXRValueCollection as the base class for an enumerable collection of XRValue objects will cause a compiler error. To work around this issue, use XRValue* objects for the collection.

When using GetDataContext from the template, only the XRValue primitive VALUE_TYPE is supported. To work around this issue, for all other types, implement the virtual version of GetDataContext.

GetDataContext is not a reliable means to determine whether or not a data context is set for an object. If the data context has been set to NULL, GetDataContext will return E_INVALIDARG, instead of the expected NULL and you cannot determine whether the data context has been set improperly or the data context has been set to NULL. To work around this issue, keep track of the state of data bindings in the application, rather than querying Silverlight for Windows Embedded.

Tools Known Issues

Programmatic Control of Remote Profiler

There is currently no API for programmatic control of the Remote Profiler because the following APIs are not supported in this release:

  • NameProfile

  • ResumeProfile

  • StartProfile

  • StopProfile

  • SuspendProfile

To work around this issue, control the profiler by using the user interface.

Remote Tools

In the Remote Tools Framework Managed API documentation, some syntax blocks include extra strings containing metadata formatting that are displayed before the actual syntax being documented. This is a typographical mistake that you can ignore.

The remote tools need a writeable release directory on the device where the client files may be copied. If there is no writeable directory, CTK and other remote tools will be unable to connect. To work around this issue, ensure that there is a writeable directory available before the image is downloaded to the device.

The Remote Tools Shell (on desktop) will not close if the device is first disconnected from Platform Builder. To work around this issue, close the Remote Tools Shell before detaching the device.

Kernel Tracker

The CELOG may sometimes output two or more line logs per interrupt. When this occurs, one or more of the logs may end up with an invalid time stamp, which makes the analytical result invalid. In these situations, the kernel tracker may display an invalid time stamp such as “00.000 000s.”