9/7/2006

The Windows Embedded CE 6.0 Operating System (OS) features a complete update to the Windows Embedded CE virtual memory architecture. In previous releases, each process received a 32 MB "slot" within a shared 2 GB user–mode address space. As application software increased in complexity, the 32 MB limit became increasingly restrictive. In addition, the overhead of making system calls that involved multiple handlers could be significant. For example, an application might make a graphics call, which in turn made a device driver call, which then updated the registry; this transaction required three kernel traps for a single application operation.

In Windows Embedded CE 6.0, each process gets its own unique 2 GB user–mode address space. This alleviates many of the space concerns for individual processes. The separation of virtual address spaces makes processes more isolated from one another, increasing system robustness and security.

The new virtual memory architecture has significant implications for device drivers. Previous versions of the OS used special processes to add functionality to the base kernel. For example, one process managed loadable device drivers, another managed registry and file systems, another managed the windowing system, another managed system services, and so forth. In Windows Embedded CE 6.0, many system services execute in the context of the kernel. This improves the performance of intra-kernel calls that, in previous releases, required multiple traps into the kernel.

In Windows Embedded CE 6.0, device drivers need to be aware of any process that passes them pointers to memory buffers. In previous versions, each process had a unique virtual address space, so this was not a significant consideration. In Windows Embedded CE 6.0, a particular user-mode address might be valid in multiple processes. Changes to drivers are documented in detail in the Help. In many cases, drivers from previous releases are relatively easy to port to Windows Embedded CE 6.0.

Despite the changes to the kernel, applications are generally unaffected. Certain API calls have been removed from the kernel as a result of the changes to the virtual memory architecture, but most API functions are still supported, including Win32 APIs. The specific APIs that have been removed or modified are documented in the Help.

Finally, Windows Embedded CE 6.0 includes the new Platform Builder for Windows Embedded CE 6.0 tools hosted in the Visual Studio 2005 shell. The functionality included in previous releases of Platform Builder is available, along with many of the great features of the Visual Studio environment. For more information about getting started with the new Tools in Visual Studio 2005, refer to the Platform Builder User's Guide.

This document contains important information about Windows Embedded CE 6.0 with the latest fixes and improvements.

Windows Embedded CE 6.0 has been updated from previous versions in three major areas:

Contents

System Requirements

To use Windows Embedded CE 6.0, you need:

  • 600-MHz Pentium III or later processor; 1-GHz processor recommended.

  • Microsoft Windows 2000 Professional with Service Pack 4 or later, or Windows XP Professional with Service Pack 2 or later.

  • 512 MB of RAM; 1 GB of RAM recommended.

  • 4 GB of available hard-disk space for a single microprocessor installation with tools; 1.7 GB of available hard–disk space per additional microprocessor installation; approximately 18 GB for installation of the entire product.

  • Video - 1024 x 768 with 256 colors.

  • Microsoft Mouse or similar pointing device, and keyboard.

  • Serial port or Ethernet card for debugging support; a LAN hub is recommended.

  • DVD-ROM drive.

Installing Windows Embedded CE 6.0

Before installing Windows Embedded CE 6.0, complete the following tasks:

  • Verify that you have administrative privileges.

  • Uninstall any pre–release builds of Windows Embedded CE 6.0. Also, please manually remove the OS directory from your previous install (typically C:\WinCE600). Note that side-by-side installation is supported, so you can choose to install Windows Embedded CE 6.0 with any prior releases of Windows Embedded CE such as version Windows CE 5.0 or Windows CE .NET 4.2.

  • There are 3 major groups of features which will be enabled or disabled based on the status of their prerequisites:

    Shared Source - will always be available

    CPU Support - requires .NET Framework 2.0

    Tools - requires Smart Device Programmability for C++ in Microsoft Visual Studio 2005 

Please note that Windows Embedded CE 6.0 is distributed on a DVD. The setup application, Setup.exe, copies the files from the DVD to the development workstation.

Note:
If you do not have a Windows Embedded CE 6.0 compatible version of Microsoft Visual Studio 2005 already installed on your development workstation, the Windows Embedded CE 6.0 box contains media with Microsoft Visual Studio 2005 Professional that you can install.

To install Windows Embedded CE 6.0

  1. Log on to the development workstation with Windows administrator privileges.

    Note:
    You do not need to be logged on with Windows administrator privileges to run the tools after installation is complete.

  2. Install Microsoft Visual Studio 2005, including the Smart Device Programmability for Visual C++ feature if not currently installed. Standard, Professional, Team Editions, and Team Suite platforms of Visual Studio are all supported.

    Ensure that the pre-requisites of the features you are trying to install are met. For the features and their pre-requisites, refer to Installing Windows Embedded CE 6.0.

  3. Run Setup.exe from the root directory of the Windows Embedded CE 6.0 DVD.

    If autorun is enabled, Setup.exe runs when you insert the DVD.

  4. When the Welcome dialog box appears, choose Install and follow the on-screen instructions.

Note:
To reduce the installation size of Platform Builder, in the Custom Setup dialog box, select only the microprocessors you need.

Note:
If you want to change the Tools install location, you need to first select the "CE 6.0 Tools" feature to enable the Browse button. Similarly, if you wish to change the OS install directory, you need to select the "CE 6.0 Operating System" feature to enable the Browse button.

During installation, the progress bar is not always accurate, especially for larger installations with more than one CPU.

Installation times can vary according to installation type:

  • Tools-only installation: 15 – 20 minutes

  • Default installation (Tools, Test Kit, ARMV4I, and Emulator): 20 – 30 minutes

  • Full installation: 2 or more hours

Windows Embedded CE 6.0 Installation Issues

Enable feature in MMC to install Windows Embedded CE 6.0 over RDP or Terminal Services

System administrators cannot install programs over a Remote Desktop Protocol (RDP) or Terminal Services session.

However, you can enable this feature in the Microsoft Management Console (MMC) Group Policy setting by following the following procedure:

To enable Windows Embedded CE 6.0 installation over RDP by changing MMC policy setting
  1. Choose Start and then choose Run.

  2. Type gpedit.msc and then choose OK.

    The Group Policy window opens.

  3. Expand the Computer Configuration, Administrative Templates, and Windows Components nodes.

  4. Select Windows Installer.

  5. In the right pane, double-click Allow admin to install from Terminal Services session.

    The Properties dialog box opens.

  6. Choose the Setting tab and select Enabled.

  7. Choose OK.

Using this computer, you can now log on through Terminal Services and install such programs as Windows Embedded CE 6.0.

Visual Studio Help may not be functional during Platform Builder installation

Platform Builder shares Help components with Visual Studio; therefore, during Platform Builder setup, Visual Studio Help may not be functional. Do not use Visual Studio Help during a Platform Builder installation.

Setup dialog box may appear when Help is launched under a different account

Help 2.0 Setup dialog box may appear when installing Platform Builder under one account and using Platform Builder under a different account.

Preparing to Install dialog box may appear when opening other applications

After installing Platform Builder, the Preparing to install dialog box may appear when you open Microsoft Visual Studio 2005, Visual Studio Help documentation viewer, or any Microsoft Office application. This dialog box is the result of an install-on-demand feature. You must allow the installer to complete.

If this dialog box continues to appear on subsequent uses of these applications, perform the following steps:

Editing Registry Settings to Complete Installation
  1. Create a text file that has the .reg extension.

  2. Add the following text to the file:

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.2]
    @="Microsoft Office 10.0 Object Library"
    "PrimaryInteropAssemblyName"="Office, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    [HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.2\0]
    [HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.2\0\win32]
    @="C:\\Program Files\\Common Files\\Microsoft Shared\\office10\\mso.dll"
    [HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.2\FLAGS]
    @="0"
    [HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.2\HELPDIR]
    @=""
  3. Save the file, and then close it.

  4. Double-click the file. When prompted to add the information to the registry, choose Yes.

Performing a clean Windows Embedded CE 6.0 installation

Before installing Windows Embedded CE 6.0 on your development workstation, make sure that any previous versions of Windows Embedded CE 6.0 have been uninstalled. Also, make sure that you delete any and all OS files located under the global WINCEROOT, which is typically C:\WINCE600. This can help avoid versioning issues when installing a newer version of Windows Embedded CE.

Cannot launch Connectivity Options dialog after a Windows Embedded CE 6.0 uninstall

If you install Windows Embedded CE 6.0 on top of Windows CE 5.0 and then uninstall Windows Embedded CE 6.0, the Windows CE 5.0 install will not be able to launch the connectivity options dialog.

To repair Windows CE 5.0, the user will need to perform the following steps:

If you installed to the default location, run the following commands from a command window.

cd /d "%ProgramFiles%\Windows CE Platform Builder\5.00\CORECON\SCRIPTS"
register "%ProgramFiles%\Windows CE Platform Builder\5.00"
Uninstall removes the .pbxml file association for other versions of Platform Builder

If Windows Embedded CE 6.0 is installed on a machine with Windows CE 5.0 or Windows Mobile 5.0, uninstalling either version will remove the Platform Builder .pbxml file association in Windows. In that case, .pbxml files can be opened directly through Platform Builder.

Uninstallation of Windows CE 5.0 can delete registry keys required for Windows Embedded CE 6.0 in a side by side installation

When your developer workstation contains a side by side installation of Windows CE 5.0 and Windows Embedded CE 6.0, uninstallation of Windows CE 5.0 deletes the registry keys under HKLM\Software\CoreCon\1\1\InstallDir. This is an issue because Windows Embedded CE 6.0 requires these registry keys in order to function.

To resolve this issue, from the Setup Wizard, perform a repair of your Windows Embedded CE 6.0 installation.

What's New for Windows Embedded CE 6.0

Windows Embedded CE 6.0 provides new functionality and features in the following areas:

BSPs and Drivers
  • BSP Porting documentation

  • Drivers Porting documentation

  • X86 - Merged CEPC and the AMD LX800 Development Board

  • ARM v4 - Intel Mainstone C5-Stepping

  • MIPS – NEC Solution Gear 2-Vr5500 Development Kit (Rockhopper 5500)

    • The Windows CE 5.0 version of the Rockhopper 5500 BSP has been ported into Windows Embedded CE 6.0. All previous features are supported.

  • SH – Renesas US7750R HARP (Aspen) SDB

  • ARM v6 - Texas Instruments SDP2420 Development Board

    This BSP has been ported into the framework of Windows Embedded CE 6.0.

    The OMAP2420 processor is an ARM11. This BSP was used to validate ARMv6 support in the kernel and compilers for Windows Embedded CE 6.0.

    • The benefits of using this BSP are:

      This chip supports high-performance multimedia and gaming scenarios.

      It can be used in Windows Embedded CE 6.0.

  • ArubaBoard - Texas Instruments OMAP5912

    • Support for loading NK.bin images from SD storage card.

    • Support for Remote Display via the Remote NDIS (RNDIS) based on USB Function Driver 1.1.

  • Device Emulator

    • The Device Emulator now supports KITL via Direct Memory Access (DMA). This offers a significant performance improvement during image download and startup, and while using the debugger. DMA KITL is now enabled by default. For build and configuration instructions, please see the topic “Device Emulator” in documentation.

    • The Device Emulator BSP now supports IMGFLASH=1, which moves the OS from RAM to NOR flash. It frees up quite a bit of RAM and enables much larger OS images. Previously, RAM-based images could not be larger than 30MB. Now the OS can grow to as much as 96MB, which is enough for Full Debug Enterprise_Web_Pad builds.

  • Added support for the /SafeSEH linker option for the Windows Embedded CE x86 platforms

    • This addresses the security vulnerability in exception handlers on x86 platforms.

    • Other Windows Embedded CE RISC CPUs do not have this vulnerability.

  • User-mode Driver Framework

  • DMA Abstraction

  • USB Function Composite Driver

  • USB Function Multi-Configuration and Alternate Interfaces Support

  • USB OTG

  • Simplified class library for USB Host clients

  • USB Function Printer Client Driver

  • Device Information IOCTL Unification

    The following IOCTLs are changed:

    IOCTL_HAL_GET_DEVICE_INFO

    IOCTL_HAL_GET_DEVICEID

    IOCTL_HAL_GET_UUID

    DEVICE_INFO has been extended and DEVICEID and UUID have been deprecated.

    Benefits: Previously, the mechanisms for retrieving device information were spread counterintuitively across multiple IOCTLs. These IOCTLs had to be conditionally compiled based on whether the device was configured for Windows Mobile (Smartphone, Pocket PC) or as general embedded.

  • The following drivers were added that required changes to Catalog entries:

    • USB OTG - uses existing SYSGEN_USB catalog entry.

    • USB Host ActiveSync Modem Driver - requires a new entry associated with SYSGEN_USB_SER.

    • USB Function Composite Driver - requires a new entry associated with SYSGEN_USBFN_COMPOSITE.

    • USB Function ActiveSync Modem Driver - employs existing entry associated with SYSGEN_USBFN_SERIAL.

    • USB Function Printer Client Driver - requires a new entry associated with SYSGEN_USBFN_PRINTER.

    • DMA Abstraction - no catalog entry required.

Enhanced Security
  • 1-tier security model for general embedded customers

  • Strict separation between user and kernel mode

  • Secure Kernel stack and Safe Remote Heap

  • Secure C-Runtime and Safe SEH support

Graphics and Multimedia
  • Windows Media DRM 10, which provides support for Windows Media Digital Rights Management for Network Devices (WMDRM-ND) and Windows Media Digital Rights Management for Portable Devices (WMDRM-PD).

    Although Digital Rights Management (DRM) for Windows Embedded CE appears in the Platform Builder Catalog, the software components that fully enable DRM do not ship with Platform Builder. OEMs that want to include DRM in their operating system design must register with Microsoft to obtain the necessary DRM components. To request licensing instructions for DRM version 10 in Windows Embedded CE 6.0, send e-mail to wmdrmce@microsoft.com.

    The above process should be used to acquire the necessary assets for either WMDRM-ND or WMDRM-PD technology. Until those assets are obtained and integrated into the target design you will not have a compliant and functional WMDRM solution.

  • uPnP Content Aggregator

  • Networked Media Device client UI compliant with WMC v2

    Client side application (including a sample UI) for Network Media Devices that can interact and play back content from a WMCv2 (Windows Media Connect) server on the PC

  • PlaysForSure compliant client

    PlaysForSure is a certification/logo program for home media devices that ensures a certain level of interoperability/experience with the PC. It is only achievable with an appropriate platform/BSP mix. Platform validation for a PlaysForSure device can be achieved with the PlaysForSure compliance suite.

  • DVR (MPEG-2 only) Engine

    MPEG-2 Program Streams or Transport Streams

    Provides low-level interfaces to record & playback TV broadcasts

  • New DDraw architecture

    Benefits include consolidated interface definitions and a unified software fallback path with GDI.

  • Video/Audio capture pipeline

    DirectShow-based camera capture pipeline supporting the recording of still image and video clips with audio

  • New MDD/PDD camera driver model

    In the MDD (Model Device Driver), PDD (Platform Dependent Driver) model, we separate any Dshow–related components from platform–specific components. MDD includes all necessary functions with DShow and defines an interface which interacts with a PDD layer, taking into account the extensibility of PDD in different platforms. This will speed up the effort to develop camera drivers.

  • Updated font engine

  • TIFF imaging support

    Decode and encode TIFF image files through the imaging API. TIFF is a common imaging format used in digital cameras and for digital transmission of faxes.

  • HTTP 1.1 streamer

    When connecting to a server that also supports HTTP1.1, it allows the client play back a file starting from any position, pause and resume playback, seek to any position and reconnect from the current position if the connection is temporarily lost. For non-ASF file formats such as AVI and MPEG, the new streamer in the NMD feature pack supports true streaming play back from the server, instead of the previous behavior where the entire file has to be downloaded locally and played from the cache.

  • Interlaced and Vertical Blanking Interval (VBI) support

    Improved support for playing back interlaced content and displaying VBI (Vertical Blanking Interval), used to display data such as closed captioning information.

  • Multi-channel audio via S/PDIF

  • Virtual Surround Sound (WMA Pro only)

    Virtual surround sound, also known as LtRt is a special encoding system where multi-channel audio is folded down to two channels. These two channels are sent to a receiver that has surround decoders (such as Dolby Pro Logic) that are capable of decoding the encoded signal to multi-channel speakers.

  • Video codec VC-1 playback support

    VC-1 is a new standardized video codec from MS (standardized by SMPTE). It is based off of WMV 9 advanced profile.

  • Windows Media Connect Client

    Enables a Windows Embedded CE-based networked device to consume digital media (photos, music, videos) that is stored on a PC. The media is streamed over an IP network (wired or wireless). The music can be protected by Windows Mobile Digital Rights Management.

    The benefit is that end-user can experience and share media without moving the PC.

  • Direct3D Mobile Multiple Instance Support

    Enabled multiple instances of the Direct3D Mobile runtime to exist concurrently on a device. Previously this was limited to a single instance only. Note that this will require driver changes, particularly to remotely hooked drivers. This feature also includes modifications to SwapChains (allowing multiple of them as opposed to only a single one) and better integration with FullScreenExclusive mode.

  • Windows Media Audio Codec Low Bitrate mode

    DirectShow multimedia now supports Windows Media Audio Codec Low Bitrate (WMAPro LBR) mode. It's a special mode for the WMAPro audio codec which enables the user to enjoy improved audio quality.

  • Windows Media Video Encoder for DShow capture has been optimized and verified on CEPC (X86) and ARM platforms.

IDE Tools and Compiler
  • Platform Builder tools (IDE and Debugger) integrated into Visual Studio 2005 

  • New compilers based on Visual Studio 2005 

    • Improved C++ language conformance

    • Improved CRT/ATL/MFC Libraries

    • Improved runtime security checks (GS)

    • New floating point model to improve consistency and user control

  • Device Emulator integrated into Platform Builder 

New Visual Studio 2005 Integration
  • Wrap the current connectivity and debugger in a VSIP package that will plug into the Visual Studio 2005 shell

  • Leverage Visual Studio IDE features

  • Familiar user interface

  • IntelliSense editor support

Cellcore

Cellular support has been added to Windows Embedded CE allowing embedded designs to take advantage of the cellular network, for voice, data, text messaging (SMS) and other cellular scenarios.

This includes the following technologies:

  • Radio Interface Layer (RIL)

    • Abstracts the underlying cellular networks and hardware using one common API.

    • Hardware partners implement the RIL driver that contains all the radio and network specific code.

  • WWAN driver for Cellular Data

    • Supports high-speed GPRS/EDGE/UMTS data connections on cellular networks.

  • Cell Telephony Service Provider (CellTSP)

    • Enables cellular voice telephony – exposed through TAPI and Extended TAPI (ExTAPI).

    • Also provides support for circuit switched data (CSD) connections, CDMA 1x data connections and PPP based GPRS/EDGE/UMTS connections.

  • Short Messaging Service (SMS)

    • Enables text messaging.

  • SIM Management

  • SIM Toolkit

    • Conforms to Release ’99 SIM Toolkit specification.

  • Wireless Application Protocol (WAP)

    • Supports WTP/WDP/WTLS.

Networking
  • Location framework v1.0

  • RTC 1.5 support including:

    • Audio healer.

    • SUBSCRIBE/Notify event handling.

    • SIP Privacy Headers.

  • Bluetooth A2DP and HFP

  • 802.11 WLAN - support for WPA2 (TKIP and AES) using Pre-Shared Key and 802.1X

    • New WLAN driver source code (Atheros AR6000 supports WPA2).

  • 802.11 WLAN - support for WMM (QoS) via DSCP and ToS

    • New suite of test tools for WLAN: Auth Matrix, Roaming Automation, rsstresq (for marking QoS packets).

  • QoS

    • Provides differentiated services for networking applications running over IPv4, by tagging the layer 3 and layer 2 protocol layer bit fields. This is to enable applications which need to have preference over other traffic on the network to work with minimal interference from other traffic running at lower network priority.

    • Applications which require differential QoS services should be able to set their required differentiation on a per socket basis. A setsockopt call is provided so that a Winsock network application can differentiate the packets that are sent from that socket from other traffic. Accordingly, the underlying network layers set the appropriate flags in the protocol layer 2 and layer 3 to indicate the priority level of the packets.

New Kernel
  • Up to 32K simultaneous processes.

  • 2GB of virtual memory per process.

  • New OS layout moves critical services into kernel space to enhance system call performance.

  • Cache Manager to improve memory and file performance.

  • Continues to be hard real time.

  • Full kernel debugger support.

  • OAL separated from NK, easy to update the kernel.

  • Added new CPU arch - ARM v6 support.

Storage and Filesystems
  • exFAT: next generation FAT

    • Supports large files/disks.

    • Handles Media > 32GB volume size.

    • Efficiently handles more than 1000 files.

    • Storage allocation speedup.

    • Large file size support >4GB.

    • Desktop Interoperability.

  • UDFS v2.5 with Read support

    UDF is the standardized File System used on optical media such as CDs and DVDs. Revision 2.5 adds HDDVD support.

  • Data encryption

VoIP
  • VoIP over Wired and WiFi

  • Rich device provisioning

  • Customizable UI

  • IP Phone

    Windows Embedded CE 6.0 IP phone adds new features that enhance end user experience and make the phone easier to deploy.

    • Application enhancements

      On-hook dial.

      Caller-ID blocking.

      Input using Software-based Input Panel (SIP).

    • VoIP deployment improvements

      Receive voicemail notifications using SIP Subscribe/Notify.

      Backup SIP server support.

      Dial plan for automatically formatting numbers for a particular IP PBX.

    • Application restructuring

      Resource-based screen layout to support different form factors and button layouts.

CETK
  • Dual mode for both host and client in a single connector.

  • The device can be a USB host or USB device.

Windows Network Projector
  • Functionality to enable development of a display device, such as a conference room projector, using Remote Desktop Protocol (RDP) over an IP network to display the desktop of a Microsoft Windows Vista PC

Remote Desktop Protocol (RDP)
  • Added support for ChangeDisplaySettingsEX to dynamically change the display resolution of the Windows Embedded CE device without requiring a reboot. This particularly benefits devices with a screen that you can rotate.

  • Added Smart Sizing support to scale the client image to match the image on the host.

  • Removed DCOM dependencies.

Other deliverables
  • .NET Compact Framework v2.0 SP1

  • EDB

    EDB is a lightweight and efficient database engine that is suitable for embedded applications not requiring a full-fledged SQL solution.

    • More efficient and featured than CEDB

    • Lighter than SQL Server Everywhere Edition

  • FIPS Certification

    • Crypto libraries will be FIPS 140-1 certified.

    • FIPS certification is a requirement for deployments in government and financial sectors.

  • Data Security

    • Support for protecting information using AES 128 in the context of DPAPI.

    • AES provides for enhanced levels of data security.

  • SAPI 5.2

    • Speech Recognition Grammar Specification (SRGS) support - This is a W3C standard recommendation that describes a specific syntax for grammar representation. This allows developers to create grammars that follow an agreed upon industry standard. The syntax of the grammar format is presented in two forms, an Augmented BNF (ABNF) Form and an XML Form. The specification ensures that the two representations are semantically mappable to allow automatic transformations between the two forms.

      SRGS allows developers to learn a Grammar syntax that follows a standard supported by the industry; this makes the knowledge and the actual produced grammars transferable across solutions and platforms. Also enables a market of tools for authoring and management of grammars.

    • Speech Synthesis Markup Language (SSML) support - This is a W3C standard recommendation whose purpose is to provide a rich, XML-based markup language for assisting the creation of synthetic speech in Web and other applications. The essential role of the markup language is to give authors of synthesizable content a standard way to control aspects of speech output such as pronunciation, volume, pitch, rate, etc. across different synthesis-capable platforms.

      SSML allows developers to learn a language for representing synthesizable text following a standard supported by the industry; this makes the knowledge and the actual produced content transferable across solutions and platforms. Also enables a market of tools for authoring and management of such content.

    • New APIs in SAPI 5.2

      ISpXMLRecoResult - This interface is new in SAPI 5.2 and is used to acquire the semantic results of speech recognition.

      ISpRecoGrammar2 - This interface is new in SAPI 5.2 and extends the ISpRecoGrammar interface.

      ISpRecoContext2 - This interface is new in SAPI 5.2 and extends the ISpRecoContext interface.

      ISpSerializeState - This interface is new in SAPI 5.2 and allows an application to get the recognizer's internal state.

      ISpRecognizer2 - This interface is new in SAPI 5.2 and extends the ISpRecognizer interface.

  • Post-mortem Debug

    • Provide a rich debugging environment for crash dump files captured by the Windows Embedded CE Error Reporting.

    • Create on-the-fly dump files for any of the dump formats we support including all of physical memory.

    • Familiar source level debugging experience.

    • Faster problem resolution.

  • USB Download Service

    • New download service support has been added to the Platform Builder Target Connectivity Options dialog

    • USB connection on the device can be used to download images from Platform Builder.

  • Bib and Reg files have improved editors

    • Intellisense.

    • Syntax Coloring.

    • Outlining.

    • “RegEdit” view for Reg files.

  • Supporting safer alternatives to dangerous C library functions

    • Developers can use a safer string copy function strcpy_s.

    • Enhanced security.

    • Improved portability for desktop code developed in Visual Studio.

Copyright Information for Windows Embedded CE 6.0

Information in this document, including URL and other Internet Web site references, is subject to change without notice. Unless otherwise noted, the example companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted herein are fictitious, and no association with any real company, organization, product, domain name, e-mail address, logo, person, place, or event is intended or should be inferred. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation.

Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.

© 2006 Microsoft Corporation. All rights reserved.

Microsoft, MS-DOS, Windows, Windows NT, Windows Server, Windows Vista, Active Desktop, Active Directory, ActiveSync, ActiveX, ClearType, Direct3D, DirectDraw, DirectInput, DirectShow, DirectSound, DirectX, IntelliMouse, IntelliSense, JScript, MSDN, MSN, Outlook, the PlaysForSure logo, PowerPoint, Tahoma, Visual Basic, Visual C#, Visual C++, Visual InterDev, Visual Studio, Win32, and Windows Media are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

Portions of this software are based on NCSA Mosaic. NCSA Mosaic was developed by the National Center for Supercomputing Applications at the University of Illinois at Urbana-Champaign. Distributed under a licensing agreement with Spyglass, Inc.

Contains security software licensed from RSA Data Security, Inc.

All other trademarks are property of their respective owners.

License Terms

The License Terms for Windows Embedded CE 6.0 and Shared Sources can be accessed from the directory C:\Program Files\Microsoft Platform Builder\6.00.

Technical Support and Community

To learn more about available support and community options for this release, see Windows Embedded Community.

Windows CE 5.0 Functionality Not Included in Windows Embedded CE 6.0

Please refer to the topic "Windows CE 5.0 Functionality Not Included in Windows Embedded CE 6.0" in the OEM documentation to view functionality in Windows CE 5.0 that was not included in Windows Embedded CE 6.0.

Known Issues for Windows Embedded CE 6.0

Documentation

Combined Help Collection Manager

If you have multiple Help collections installed, use the Combined Help Collection Manager to change the collections that are included in the Visual Studio 2005 Combined Help Collection. For information about the Combined Help Collection Manager see the Visual Studio documentation.

"How to Develop a Boot Loader“ and “How to Develop an OEM Adaptation Layer" topics will be updated in a future documentation release

The procedures outlined in the topics "How to Develop a Boot Loader" and "How to Develop an OEM Adaptation Layer" are valid. However, these procedures have undergone changes. The updated procedures will be documented in a future release of the OEM documentation.

Tux command-line syntax was documented incorrectly

The Tux command-line parameters page, "Windows Embedded CE Test Kit > Running the CETK > CETK Reference > CETK Test Harness and Logging Mechanisms > Tux Test Harness > Tux Architecture", does not show the command–line syntax correctly. The correct syntax should read:

tux [-b] [-e] [-s file_name | -d test_dll] [-c parameters] [-r seed] [-x test_case] [-l | -lv] [-t address] [-h] [-k address] [-m] [-o] [-f file_name] [-a] [-z timeout]
CETK Test Module topics should not have been included in the documentation

The following topics were included in the Windows Embedded CE 6.0 documentation, but are not relevant to the release. Both are found in "Windows Embedded CE Test Kit > CETK Tests and Test Tools > Tools for Testing from the CETK > Windows Embedded CE Stress Tool > Test Modules for the Windows Embedded CE Stress Tool".

  • Direct3D Mobile Test Module

  • Real-time Communications Test Module

Some CETK tests are not documented

The following tests are included in the CETK, but have not been documented.

  • Database CEDB Build Verification Test

  • Database CEDB Performance Test

  • Database EDB Build Verification Test

  • File System Performance Test

  • OAL Cache Tests

  • OAL IOCTL Tests

  • OAL KITL Test

  • OAL Interrupt Tests

  • OAL Timer Tests

  • Registry Performance Test

The links in Catalog item notifications do not work as expected

In Windows Embedded CE 6.0, links in Catalog item notifications do not work as expected. To ensure that this does not occur, make sure that Microsoft Visual Studio 2005 is set to search local Help content first.

  1. From the Tools menu, select Options.

  2. In the Options dialog box, in the left pane, expand the Help node, and then select Online.

  3. In the When loading Help content box, if your development workstation is connected to the Internet, select Try local first, then online. Otherwise, select Try local only, not online.

  4. To apply the changes and then close the dialog box, click OK.

BSPs

BSPs not supported in Windows Embedded CE 6.0

The following BSPs are no longer supported in Windows Embedded CE 6.0:

  • MIPS

    • NEC Solution Gear 2-Vr4131 Development Kit (Rockhopper 4131)

    • Alchemy BSPs (1000, 1100, 1500)

      AMD DBAu1000 Development Board

      AMD DBAu1100 Development Board

      AMD DBAu1500 Development Board

    • Broadcom 91101- VoIP Screen Phone

    • NEC DDB-Vr4122 (Eagle) SDB

  • x86

    • Advantech PCM-5822 and PCM-5823 Biscuit PC

    • Lanner EM-350 and EM-351 Embedded Single Board Computers

    • National Geode SP4SC30 Development Platform

  • ARM

    • Samsung SMDK2410

Intel Mainstone BSP support

The Windows Embedded CE 6.0 release now contains a BSP for Mainstone with C5-Stepping silicon. Earlier Mainstone reference platforms can be supported by setting "set SDRAM_SIZE_64_MB=1".

You can now use the BSP for the Intel PXA27x Mainstone Development Platform to quickly evaluate the features in Windows Embedded CE 6.0.

The Mainstone BSP includes support for all hardware updates to the platform, such as 128MB SDRAM and C5 stepping support. Other added features are USB RNDIS KITL, GPIO interrupt handling, SDIO optimizations, Flash images and power management support. The new MDD/PDD camera model, and support for Platform Builder USB Serial run-time image downloads can also be found on Mainstone. The BSP now supports variable tick timing, additional devices states, and a suspend/resume feature that is controlled through switch 21.

X86 BSP support

The general embedded CEPC and the Windows Mobile MDDCEPC were merged into one CEPC. As part of this effort the "Identification IOCTLs" section was modified. The old IOCTLs are still supported.

SH4 BSP support

The Renesas US7750R HARP (Aspen) SDB SH4 BSP is replaced with a version based on the Production-Quality OAL model. Parallel and IrDA drivers are not ported to the production-quality driver model. PCMCIA does work for Windows Embedded CE 6.0.

Display driver change in SH4 BSP
  • MediaQ MQ200 display driver replaced with a HALFLAT display driver for MQ200 display hardware on an Renesas US7750R HARP (Aspen) SDB board. This driver supports only 640x480, 16bpp and 800x600, 16 bpp modes. 640x480, 16bpp is the default mode.

Windows Embedded CE 6.0 requires a floating point processor to support RTC 1.5 on non-ARM platforms

If RTC 1.5 is running on a non-ARM platform, then that platform must include hardware floating point support. If the platform is ARM, then hardware floating point is not needed since ARMv4 assembly level optimizations have been made.

Differences between the x86 Emulator and the Device Emulator

The Device Emulator replaces the x86 Emulator in Windows Embedded CE 6.0. The Device Emulator emulates a touch panel, whereas the legacy x86 emulator emulates a PS/2 mouse. As a result, right click, scroll, and similar commands no longer work correctly when moving from the x86 Emulator to the Device Emulator.

Libraries for PXA255 CPU have been migrated to PXA27X

PXA250 CPU support has been removed from the \public\common\oak\csp\arm\intel\pxa25x\* and \platform\common\src\arm\intel\pxa250\* directories. Microsoft no longer ships these libraries. The code that the PXA27X chip support package inherited, specifically pxa255_drvlib.lib, has been copied into the corresponding PXA27X directory and renamed. In addition, the millisecond wait function, msWait, has been removed and any calls were replaced with XllpOstDelayMilliSeconds.

If you are porting to Windows Embedded CE 6.0 from a previous release, and are using the \public\common\oak\csp\arm\intel\pxa27x\* or \platform\common\src\arm\intel\pxa27x\* directories, please ensure that you update any deprecated references from pxa255_drvlib.lib to pxa27x_drvlib.lib.

The NEC Solution Gear 2-Vr5500 system tick and real-time clock (RTC) timers drift

The SG2-Vr5500 system tick can drift due to skew and jitter issues with the clock’s phase-locked loop (PLL). A loss of 3 seconds occurs on the device over the course of 15 minutes. The timer drift can vary from one board to another. The drift affects the OS timer, which can handle this variance. RTC timer is based on the Dallas Semiconductor RTC on the main board. The RTC timer is accurate and has no such drift.

The NEC Solution Gear 2-Vr5500 profiler slows system performance in some situations

When enabling the profiler on NEC Solution Gear 2-Vr5500 (Rockhopper), the system will slow down proportionately to the sample interval. To avoid seeing performance problems, the interval value should be at least 200 milliseconds.

{,,kernel}KData cannot be resolved directly by kernel debugger on SH4

In Windows Embedded CE 6.0, {,,kernel}KData cannot be resolved directly by kernel debugger on SH4.

Enterprise Web Pad will not fit in default CEPC

The default memory size for CEPC is 28MB. A debug image of Enterprise Web Pad is larger than that. If you want to load a debug image of Enterprise Web Pad on CEPC and you have at least 64MB of memory, set IMGRAM64=1.

Connectivity options have changed for Device Emulator

New KITL settings have been introduced for Device Emulator. The new DMA KITL type provides near-instant image download and faster startup time when using Device Emulator. Debugger performance (single-stepping) is also improved. Choose "Device Emulator" as the target device, which is preconfigured to use "Device Emulator (DMA)" as both download and transport.

To switch back to KITL-over-ethernet as the transport mechanism:

Edit Deviceemulator.bat as shown below:

set BSP_KITL_ETHERNET=1
set BSP_KITL_DMA=

After making these changes, perform the following steps:

  1. Save DeviceEmulator.bat in the same location

  2. From the Platform Builder Build menu, select Make a Run-Time Image.

Note:
Please see “Windows Embedded CE Diagnostics and Debugging > Tools for Debugging > Device Emulator” for more information.

You will need to launch the Device Emulator manually on the command line:

cd /d %programfiles%\Microsoft Device Emulator\1.0
DeviceEmulator.exe %_FLATRELEASEDIR%\eboot.nb0 /c /n

Then configure Platform Builder's connectivity options to use Ethernet as download and transport. In essence, treat the Device Emulator as an Ethernet-connected device. Power it on then use Platform Builder to download the OS image.

Note that the Virtual Switch driver is no longer installed by Windows Embedded CE 6.0. Instead, users who wish to have direct Ethernet connectivity from the Device Emulator may download the driver from Virtual Machine Network Driver for Microsoft Device Emulator. However, this VMNet Driver is available for install "as-is" and is not a supported service.

ActiveSync is unsupported when using Device Emulator DMA KITL

Device Emulator’s DMA KITL is incompatible with ActiveSync.

To use ActiveSync with Device Emulator, you must use Ethernet for both Download and Transport in the Connectivity Settings.

You will need to launch the Device Emulator manually on the command line:

cd /d %programfiles%\Microsoft Device Emulator\1.0
DeviceEmulator.exe %_FLATRELEASEDIR%\eboot.nb0 /c /n

Then configure Platform Builder's connectivity options to use Ethernet as download and transport. In essence, treat the Device Emulator as an ethernet-connected device. Power it on then use Platform Builder to download the OS image.

Please see “Windows Embedded CE Diagnostics and Debugging > Tools for Debugging > Device Emulator” for more information.

Some CETK tests fail for Device Emulator

The following CETK tests fail when using Device Emulator:

  • Notification LED Driver test #2102: Set NLED_INFO Invalid Blink Setting. Please see "Windows Embedded CE Test Kit > CETK Tests and Test Tools > CETK Tests > Notification LED Driver Test" for more information.

  • The following Touch Panel tests also fail. Please see "Windows Embedded CE Test Kit > CETK Tests and Test Tools > CETK Tests > Modifying the Touch Panel Test" for more information.

    • 8004: Read Calibration Point Test

    • 8006: Calibration Test

    • 8007: Initialize Cursor Test

    • 8008: Calibrate A Point Test

    • 8009: Pen Up/Down Test

    • 8010: Point Test

    • 8011: Drawing Test

The CS8900 network interface and VMINI driver are unsupported when using Device Emulator DMA KITL

DMA KITL is not compatible with the VMINI driver (vmini.dll). Therefore, Device Emulator’s CS8900 ethernet adaptor is not available to Windows Embedded CE when using DMA KITL.

If you require a network connection from within Device Emulator, you may enable emulation of the PCMCIA NE2000 ethernet adaptor:

Enabling the PCMCIA NE2000 Ethernet Adaptor
  1. From Visual Studio, select Target > Connectivity Options.

  2. Click the Settings button next to Download: Device Emulator (DMA) to display Device Emulator preferences.

  3. Click the Network tab.

  4. Select Enable NE2000 PCMCIA network adaptor and bind to:

  5. Choose the network adaptor to share with Device Emulator.

Issues with Texas Instruments SDP2420 Development Board BSP
  • CETK failures in OAL timers tests (drift and backward checks).

  • There are issues regarding frequent reads of the RTC, which is accessed via I2C, that infrequently cause crashes especially if the frequency of RTC accesses is high.

  • The on-chip RTC in the Texas Instruments SDP2420 Development Board BSP does not treat year 2000 as a leap year. The RTC in OMAP2402's TWL92230 uses only two digits for the year value with the implied range being between 2000 and 2099 (see Texas Instruments's TWL92230–OMAP24xx Application Note (version 0.3), section 11.2). Despite that implied range, the RTC does not treat year=00 as a leap year. This affects CETK OAL test 1280: "Rollover of RTC".

Security risk of building third party code

If a user installs a BSP, driver, or other third party code, that code could execute arbitrary commands on the user’s machine when it is built.

Issue with x86 AMD LX800 Development Board using 32-bit PCMCIA

32-bit PCMCIA card is not supported. Tests for this configuration are known to fail.

Interrupt-mode KITL and RTC Alarm Interrupt don't work on the AMD LX800 Development Board

The interrupt-mode Kernel independent transport layer (KITL) and RTC Alarm Interrupt don't work on the AMD LX800 Development Board.

The Ethernet and USB ports on the AMD LX800 board are not supported by the CEPC BSP

The Ethernet and USB ports onboard the AMD LX800 are not supported by the CEPC BSP. To obtain drivers for these ports, contact AMD.

At the time we shipped Windows Embedded CE 6.0, we were not able to run all of the CETK tests for PCCARD, Wireless Ethernet and USB host. We would normally test these features with PCI adapter cards. The LX800 only has 1 PCI slot. That slot is required for the Ethernet card.

We were not able to use a riser because of the following BIOS issue: The AMD LX800 BIOS allocates memory for the external PCI bus but may not place certain devices on that bus (particularly PCCard devices). Since the memory it allocates is quite small, the PCI bus driver may not be able to place all devices on that bus and some devices may fail to activate because they can't obtain a valid memory window.

One potential workaround is to reduce the amount of memory that the devices need in their window.

For example, in Public\Common\Oak\Drivers\Pccard\Tippcard\pcc_tipccard.reg, you can reduce the "MemWindowSize" value from 0x400000 to 0x100000 and the devices will work.

BSP directory changes

Several CSP and SoC code directories have been moved from public\common\oak\CSP and various platform\common locations to platform\common\src\soc. Information about these changes will be included in a future release of the documentation.

In run-time images built for the Intel PXA27x MainstoneIII Development Platform, certain ActiveSync configurations can cause error messages on resume

Intel PXA27x MainstoneIII Development Platform run-time images built with certain combinations of ActiveSync and USB can cause an on-screen error message to appear when the device resumes from the suspend state. This error message is related to the ActiveSync-over-RS232 Serial support that was added to the MainstoneIII platform. Specifically, false notifications are sent from the serial driver on resume as part of a hardware workaround for automatic detection of a serial cable. In turn, ActiveSync is attempting to launch over USB by default even though no USB cable is present.

Simply clicking 'OK' will clear any messages. However, if you do not want these messages to appear, you should add the following lines of code to the beginning and the end of \platform\mainstoneiii\files\platform.dat.

IF SYSGEN_USBFN_SERIAL
...
ENDIF; SYSGEN_USBFN_SERIAL

Adding these IF/ENDIF statements forces the CreateRASBookActiveSync application to run, and set USB as the default transport, only when both ActiveSync (SYSGEN_AS_BASE) and USB Serial (SYSGEN_USBFN_SERIAL) are actually present.

Reverting to a normal bootloader after flashing a secure bootloader

After you have flashed the secure bootloader, SECURE_EBOOT.bin, onto the target device, if you need to revert back to the normal bootloader, you can use one of the following two methods to revert.

  • Flash a signed version of the normal bootloader (signed eboot.bin) onto the device.

- or -

  • Use JTAG to flash the normal bootloader (eboot.nb0) onto the device.

Deprecated OAL IOCTLs in Windows Embedded CE 6.0

In Windows Embedded CE 6.0, the OAL IOCTLS IOCTL_HAL_GET_DEVICEID and IOCTL_HAL_GET_UUID are being deprecated. They have been functionally replaced by new SPI_* codes in IOCTL_HAL_GET_DEVICE_INFO. Information about these codes will be included in a future release of the documentation.

Drivers and Hardware

Some drivers not supported in Windows Embedded CE 6.0
  • The following network drivers are not available in Windows Embedded CE 6.0:

    • Intel Pro E100BEX Ethernet adapter driver.

    • National Semiconductor DP83815 (MacPhyter) Ethernet adapter driver.

    • PCMCIA MDD - Cardserv.lib.

A SDIO client driver might not function when plugged into some host controllers

A SDIO client driver might fail to initialize when plugged into some SDIO host controllers. These client drivers may work when they are reverted to 1-bit mode.

By default the Enfora radio RIL driver is only available as part of the CEPC and Device Emulator BSPs

The Enfora radio RIL driver is only available by default as part of the CEPC and Device Emulator BSPs. If you want to enable the driver for a different BSP, perform the following steps, which you only need to perform once.

  1. Copy the contents of \Platform\CEPC\src\drivers\rilpdd\enfora to the directory tree associated with the BSP for which you want to enable the driver. For example, copy these contents to \Platform\MyDirectory\src\drivers\rilpdd\enfora, and make sure this directory is part of the OS tree that you will build by modifying sources and dirs files as needed.

  2. Navigate to \Platform\CEPC\Files and then copy the contents of Platform.reg and Platform.bib under the IMGENFORA environment variable to the Platform.reg and Platform.bib files for your BSP.

  3. Inspect the entries that you have now added to the Platform.reg and Platform.bib files for your BSP. Make sure that you perform any necessary modifications to ensure compatibility with your BSP.

    Typically, the only things that might need changing are the COM ports used or exposed by the 710 mux driver in the Platform.reg file.

  4. When you build a run-time image for your BSP, make sure that the IMG environment variable IMGENFORA is set to 1.

Setting up USB RNDIS KITL

The Intel PXA27x development platform and Arubaboard platforms support USB RNDIS KITL. To use this functionality, you will need to install the USB RNDIS host drivers on your development workstation. To accomplish this, follow the instructions in %_WINCEROOT%\public\common\oak\drivers\ethdbg\rndismini\host\howto.txt.

Core OS

Issues with Time APIs
  • The StandardBias member of structure TIME_ZONE_INFORMATION is added to the Bias member of the structure during local time translations even if the StandardDate member is not supplied.

  • If DST is not used in the current time zone, GetTimeZoneInformation() returns TIME_ZONE_ID_STANDARD. The expected return value is TIME_ZONE_ID_UNKNOWN.

IsAPIReady has been deprecated and replaced with WaitForAPIReady

The IsAPIReady() function is a documented portion of the PSL interface. This API has been deprecated, although it is still implemented. The WaitForAPIReady() API has been added to the PSL interface. This API is a blocking version of IsAPIReady.

CEPtrs are not interchangeable with regular C pointers

CePtrs are no longer the size of a regular C pointer and can not be passed across processes as regular C pointers. This change conflicts with the comments in ceptr.h

Process resources not freed until all outstanding handles are closed.

Process resources, including use of virtual and physical memory may not be freed until all outstanding handles to the process have been closed. This is a change in behavior from previous releases where process memory would be freed when the process terminated.

Developing an Operating System

Linking to FULLLIBC requires that you add NOLIBC=1 to the Sources file

In previous versions of Windows Embedded CE, it was possible for an item to link to FULLLIBC without specifying NOLIBC=1, and this did not result in any significant issues or problems. Due to changes in Windows Embedded CE 6.0, you must specify NOLIBC=1 to avoid dependency errors that might not be obvious until runtime. In order to avoid potential backward compatibility problems, changes have been made to makefile.def that will force NOLIBC=1 if FULLLIBC.LIB is found in TARGETLIBS, and a message to that effect will be displayed. While this workaround should prevent errors, it is highly recommended that NOLIBC=1 be added explicitly to the Sources file for any item that links to FULLLIBC.

The .NET Compact Framework 1.1 is not supported

Windows Embedded CE 6.0 does not support .NET Compact Framework version 1.1. The following Sysgens are dependent on .NETCF 1.1 and are not supported:

  • SYSGEN_DOTNET

  • SYSGEN_DOTNET_SMARTFON

  • SYSGEN_DOTNET_SUPPORT

SYSGEN_DOTNETv2 is replacing these Sysgens. SYSGEN_DOTNETv2 can run applications built using the .NET Framework version 1.1.

Developing an Application

C Run-time Libraries

To use most C Run-time (CRT) functions in previous releases of Windows Embedded CE, it was sufficient to link to coredll.lib. In Windows Embedded CE 6.0, you must link to corelibc.lib to use the CRT. Most applications already linked to corelibc.lib in previous releases, so a change is probably not required. For more information about CRT, please refer to the Compilers for Microprocessors topic in the OEM documentation.

In order to provide a more safe, secure, and consistent programming experience, the behavior of some CRT functions has been modified. However, the majority of changes only affect behavior on invalid input, or are fixes to conform to documented behavior.

Backward compatibility for the printf family of functions in the C Run-time Libraries

In order to provide a more safe, secure, and consistent programming experience, the behavior of some CRT functions has been modified. However, the majority of changes only affect behavior on invalid input or are fixes to conform to documented behavior. One change to the printf family of functions is called out specifically because it has been observed to affect the behavior of existing applications.

The behavior of the ANSI printf functions (printf, fprintf, sprintf, _snprintf, vprintf, vfprintf, vsprintf, and _vsnprintf) on certain invalid input has changed. This difference is specifically called out because in some rare circumstances, it has been observed to affect the behavior of existing applications.

If, through the %S or %C format specifiers, a printf function is passed a wide character (wchar_t) that cannot be represented in the current code page, the printf call will fail and return -1. Previously, the call would truncate the output at the unsupported character and return the number of characters successfully printed.

The new behavior is consistent with that of the Microsoft Visual Studio 2005 C Run-time Library.

API Compatibility

In Windows Embedded CE 6.0 release, one important goal is to keep maximum backward compatibility with existing applications. Most applications using Win32 APIs will be unaffected, as all coredll exports from previous release of Windows Embedded CE are still exported in the current release of coredll/kcoredll. The functionality of these APIs remains unchanged. However, due to changes in the memory model and process security, some APIs had to be either deprecated or moved to kernel mode only set.

The API changes are categorized into the following categories:

  • Deprecated APIs: These APIs are still exported from coredll but they are stubbed out as no-ops and return to the caller with no meaningful values. If existing code is using these APIs, then either the calls should be removed or should be changed to use alternate APIs.

  • Usage discouraged: These APIs function similar to the APIs in previous releases but new code should use alternate APIs. With the new memory model, there are APIs which provide similar or better functionality.

  • Un-implemented: These APIs are not implemented in Windows Embedded CE 6.0 release, and are planned for the final release.

  • Kernel mode only APIs: These APIs can only be called from kernel threads (threads whose process owner is kernel - nk.exe). Migration path for existing modules using these APIs would be to either remove the API calls, if they are not needed; use alternate non-kernel mode APIs to get the same functionality, or make the modules kernel mode drivers. It is highly discouraged to move all modules to kernel unless it absolutely requires access to these APIs.

To find out application compatibility for your applications, please review the Migration document for more details.

CETK

Device detection for Ethernet or WiFi adapters might not function correctly

In the Windows Embedded CE Test Kit, device detection for Ethernet or WiFi adapters may not work correctly. The Ethernet test node might show the yellow exclamation point (!) symbol, which indicates that no device was detected, even if a device is actually present. The WiFi test node will not show the yellow exclamation point even when a device is not present.

Assuming that a supported device is available, the tests that those nodes contain function correctly.

Potential for GWES exception when running CETK tests

When running tests through the CETK UI, a test which repeatedly opens and closes windows may cause ClientSide to trigger an exception in GWES. The exception will be due to the ListBox string insertion by the ClientSide application. To work around this issue minimize the ClientSide window prior to running tests which encounter this problem. The camera CETK test "Camera and DirectShow integration test" is likely to encounter this issue.

Shell

Callback methods for EnumWindows and DialogBoxIndirectParam must reside within the user address space

Changes in the new Windows Embedded CE 6.0 kernel restrict the callbacks to the user address space. The EnumWindows API now enforces the requirement that the EnumWindowsProc callback method resides within the user address space. DialogBoxIndirectParam API now enforces the requirement that the DialogProc callback method resides within the user address space.

Sub-classing a window that belongs to a different process is not allowed

Sub-classing a window that belongs to a different process is not allowed. The Graphics, Windowing and Events Subsystem APIs must enforce this behavior because the Windows Embedded CE 6.0 kernel disallows callbacks between different user processes. During an attempt to subclass a window, the SetWindowLong API will only accept either a function pointer from the caller's user address space or, if the function pointer is from the kernel address space, it must match the window process registered when the specific window class was registered. The same issue also applies to the address of the window process for the CallWindowProc API.

Undocumented SIP Device IO control code SIPDEV_ENUMERATE has been deprecated

SIP APIs talk to device.exe using Device IO control codes. Although the SIP Coredll API interface remains intact, the SIPDEV_ENUMERATE code has been deprecated because the Windows Embedded CE 6.0 kernel does not support callbacks between user processes. New Device IO control codes, SIPDEV_GETIM_COUNT and SIPDEV_GETIM_ENUMINFO_LIST, have been added to replace the functionality previously provided by SIPDEV_ENUMERATE. For more information about these control codes, see public\common\oak\inc\sipdev.h.

Signature changes to GWES entry point APIs

Signature changes for the Graphics, Windowing, and Events Subsystem (GWES) entry points have been made to remove unused parameters and to support parameter marshalling in Windows Embedded CE 6.0. These changes can only affect OEMs that replace GWES components. Signature changes to the following APIs have occurred:

  • APIs that allowed string parameters to bring in ATOMs have been changed to support parameter marshalling in Windows Embedded CE 6.0.

  • APIs that allowed string parameters to bring in Resource IDs have been changed to support parameter marshalling in Windows Embedded CE 6.0.

  • Entry points that expected HPROCESS parameters to obtain the caller context have been changed.

  • UnregisterClass API has an unused HINSTANCE parameter that has been removed.

  • RegisterClass API has a redundant parameter, lpszClassName, that has been removed.

  • DialogBoxIndirectParam, CallWindowsProc, CreateDialogIndirectParam and EnumWindows no longer take window processes in the form of CePtr_t, but will be expecting the window processes in their native forms of WNDPROC, DLGPROC, and WNDENUMPROC, respectively.

Note:
These signature changes only apply to the GWES entry points. The signatures for the Coredll entry point APIs remain unchanged.

SHDOCVW requires CESHELL for PIDL creation

If a browser application on the device loads shdocvw.dll, and ceshell is not included, web navigation will not be successful. To work around this issue, add the following commands in the \public\cebase\oak\misc\shell.bat file and rebuild the image:

@REM --- SHDOCVW requires CESHELL for PIDL creation.
if not "%SYSGEN_SHDOCVW%"=="1" goto noShDocVw
   set __SYSGEN_CESHELL=1
   set __SYSGEN_SHELL_MODULES=1
   set __SYSGEN_SHVW=1
   :noShDocVw
Control Panel application does not support context menu via keypress

The context menu is not supported by default in Windows Embedded CE 6.0.

In order for the context menu to be supported, code changes need to be made at line: 736 - Function: LRESULT CPLView_Notify(LPCPLVIEW lpcv, UINT uMessage, WPARAM wparam, LPARAM lparam) in file \wince500\public\wceshellfe\oak\ctlpnl\control\control.cpp. The necessary changes are documented below:

Change the following existing code

case LVN_KEYDOWN:
        {
            LV_KEYDOWN *lvkd = (LV_KEYDOWN *)lparam;
            // Listview passes SYSKEYDOWNS as LVN_KEYDOWN
            if ( ( ( lvkd->wVKey == TEXT('H') ) ||
   ( lvkd->wVKey == TEXT('h') ) ) &&
 ( lvkd->flags & KF_ALTDOWN ) ) {
                SendMessage(lpcv->hwndMain, WM_HELP, 0, NULL);
                break;
            }
            else if ( lvkd->wVKey != VK_RETURN)
                break;
        }

to

case LVN_KEYDOWN:
        {
            LV_KEYDOWN *lvkd = (LV_KEYDOWN *)lparam;

            // Listview passes SYSKEYDOWNS as LVN_KEYDOWN
            if ( ( ( lvkd->wVKey == TEXT('H') ) ||
   ( lvkd->wVKey == TEXT('h') ) ) &&
 ( lvkd->flags & KF_ALTDOWN ) ) {
                SendMessage(lpcv->hwndMain, WM_HELP, 0, NULL);
                break;
            }
            else if ( (lvkd->wVKey == VK_APPS) && (lvkd->flags == 0x12f) )
{
SendMessage(lpcv->hwndMain, WM_COMMAND, IDM_CONTEXT, 0);
break;
}
else if ( lvkd->wVKey != VK_RETURN)
                break;
        }
GWES functionality changes

Prior to Windows Embedded CE 6.0, the GWES functionality was contained within gwes.exe. In Windows Embedded CE 6.0, GWES has been moved to gwes.dll, which is loaded by the kernel.

IMEs will not work in StartUI

In Windows Embedded CE 6.0, Input Method Editors (IMEs) are not accessible in StartUI, OomUI, and Calibrui. StartUI, OomUI, and Calibrui run as Kernel mode process and IMEs can only be used with applications running as user mode processes.

As an example, due to this limitation, users are no longer able to enter East Asian characters for passwords in StartUI. Passwords must be created and entered in Western European characters.

SystemParametersInfo(SPI_SETWORKAREA) does not change the shell work area dynamically

SystemParametersInfo(SPI_SETWORKAREA) does not change the shell work area dynamically. The work around is to modify the function CDesktopView::HandleSettingChange in %_WINCEROOT%\public\shell\oak\hpc\ceshell\ui\desktopview.cpp.

else if (SPI_SETWORKAREA == flag)
{
    …
   GetClientRect(m_pShellListView, &rcPrimary); SystemParametersInfo(SPI_GETWORKAREA, &rcPrimary);
   …
}

Applications and Services

COM is unsafe to use early in the boot up process

Previously, when you built a run-time image with the version of DCOM included with Windows CE 5.0 and earlier, two services (LPC and DCOMSSD) were included in device.exe. For Windows Embedded CE 6.0, these services have been moved out of the kernel and into servicesd.exe. This introduces a race condition in which some processes, such as explorer.exe, wait for device.exe to get started, but they do not wait for servicesd.exe. If you try to use CoCreateInstance on DCOM builds, CoCreateInstance attempts to call into these services which may not yet be running already. This can occur even when an in-process DLL is used.

If you own components that use COM, this issue applies to you if both of the following conditions are true:

  • You use COM early in the boot process.

    Note:
    If you use COM in servicesd.exe, including XXX_init, this change does not affect you. Servicesd.exe will shield you from it.

  • Your code runs on Windows Embedded CE images that have DCOM on them. Pocket PC and Smartphone only include base COM but not DCOM, so these platforms will not experience the issue.

If you do experience the issue and need to block until COM is ready, you can instruct your process to wait on servicesd.exe. This is accomplished by specifying the Depend registry settings in HKLM\Init. For some processes, such as explorer.exe, it is not acceptable to wait for servicesd.exe to be running. In this case, you can use the following code to block until COM is ready. This must be called before your first call to CoInitialize/CoInitializeEx.

void WaitForCOMToBeReady() {
    HANDLE hCOMReadyEvent =
        OpenEvent(EVENT_ALL_ACCESS,FALSE,DCOM_EVENTNAME_API_SET_READY);
    if (!hCOMReadyEvent) {
        // If you were unable to open the event, DCOM is not
        // present on the system and there is no need to wait.
        return;
    }
    DEBUGMSG(1,(L"APP: Blocking for DCOM services to become available before proceeding\r\n"));
    WaitForSingleObject(hCOMReadyEvent,INFINITE);
    DEBUGMSG(1,(L"APP: DCOM services available\r\n"));
    CloseHandle(hCOMReadyEvent);
}
Interpretation of a Broken MsgQueue has changed in Windows Embedded CE 6.0

In Windows Embedded CE 6.0, the interpretation of when a queue is broken has changed from the previous releases.

In Windows Embedded CE 6.0, a MsgQueue is considered broken only if both Read and Write ends of the queue existed, and one of the ends (either Read or Write) is being closed by the CloseMsgQueue method call.

Transcriber

The Transcriber input method will not function correctly if SYSGEN_PPC is also included in the device image.

Required Sysgens for SAPI 5.2

Several Sysgens must be included in the image in order to use the new Speech API (SAPI) 5.2 that is included with Windows Embedded CE 6.0. Speech uses the following Sysgens.

  • SYSGEN_SPEECH

  • SYSGEN_SAPIWAVSTR

  • SYSGEN_SPCOMMON

SYSGEN_SAPIWAVSTR is required for the following COM classes.

  • CLSID_SpStream

  • CLSID_SpStreamFormatConverter

  • CLSID_SpRecPlayAudio

SYSGEN_SPCOMMON is required for the CLSID_SpLTSLexicon COM class.

Communication Services and Networking

Implementation of the deprecated APIs, GetServiceHandle and ServiceIoControl, has been changed

GetServiceHandle and ServiceIoControl were deprecated in Windows CE 5.0. All references to these APIs in your code should be removed. GetServiceHandle should be replaced with CreateFile and ServiceIoControl should be replaced with DeviceIoControl. Previously, GetServiceHandle returned only a pseudo-handle that was not reference-counted. Unlike GetServiceHandle, CreateFile returns a real handle, so it is necessary to free the resources using CloseHandle.

In Windows Embedded CE 6.0, the underlying behavior for GetServiceHandle and ServiceIoControl has been changed. GetServiceHandle will now call into CreateFile, and ServiceIoControl will call DeviceIoControl. As a result, the handle returned will be a true handle and must be closed with CloseHandle. When CreateFile is called on a service, the underlying service will be opened using its XXX_Open call. Previously, GetServiceHandle did not cause the service to be notified with XXX_Open.

Device will timeout when DNS server cannot resolve SIP server name

A client application may experience long delays when using QueryDns_W to query DNS_TYPE_SRV records. Certain DNS server implementations attempt to resolve the name stored in their SRV record before returning the result. When the name cannot be resolved from the DNS server, this will cause a long delay in the server's response to the SRV record query. This may cause the device to timeout. When dealing with SRV records, the DNS timeout registry settings can be set accordingly to overcome timeout issues.

VoIP/RTC Features/APIs unsupported in Windows Embedded CE 6.0

The following VoIP/RTC features/APIs will not be tested or supported for Windows Embedded CE 6.0. These features/APIs were supported in Windows CE 5.0.

  • User Search

  • UPnP-based NAT Traversal

Ringtones for Speed Dial entries only work if the phone number is formatted correctly

The phone uses the Dial Plan to display a phone number. For each incoming call, the phone compares the displayed phone number against the phone numbers in Speed Dial to determine whether the user has specified a ringtone to play for that caller. If the user enters a Speed Dial number manually and does not format it the same way that the phone displays it, the phone will not match the phone number against incoming calls and the standard ringtone will be played.

Incoming VoIP calls will not take screen out of power-save mode

If screen power-save mode is enabled on a device and the device shuts off the screen after a period of inactivity, an incoming call will not return the screen to the normal state. The phone will ring, but no UI will be visible. Tapping on the screen will wake up the screen, allowing the user to see available caller ID information and interact with the UI.

servicesd.exe and udevice.exe

In previous releases of Windows Embedded CE, if a secondary thread crashed from within services.exe or device.exe, the host process would continue to run. In Windows Embedded CE 6.0, this behavior has changed. Now if a secondary thread causes an unhandled exception, it will result in the servicesd.exe or udevice.exe host process being terminated.

IP_MULTICAST_LOOP is not supported

The socket option IP_MULTICAST_LOOP is not supported on Windows Embedded CE 6.0. Any sockets that are listening for multicast traffic on an interface will not receive multicast traffic sent from that interface.

Services.exe has been renamed

Services.exe previously was the host process for service DLLs, in addition to being a command line interface to services (such as "services start HTP0:"). In Windows Embedded CE 6.0 the host process for services has been renamed servicesd.exe. The command line interface to configure services is still named services.exe.

Remoteui.exe for RemoteAdmin is no longer shipped

In previous versions of Windows Embedded CE, a desktop tool named Remoteui.exe was shipped in the directory \public\servers\oak\samples\RemoteAdmin\testApp\RemoteUITestApp. Microsoft no longer ships this tool as an executable. If the executable is required, you can create it by opening the project \public\servers\oak\samples\RemoteAdmin\testApp\RemoteUITestApp\RemoteUI.csproj and then rebuilding it.

Do not use k.ws2.dll from kernel mode

Modules running in nk.exe should not use k.ws2.dll and should instead use ws2k.dll. The APIs are the same, but k.ws2.dll will not be supported in a future version. A future architectural revision will become necessary to avoid requiring layered service providers (LSPs) to be loaded in kernel mode. While all LSPs need to load and run in kernel mode at present, LSPs should avoid the use of any kernel mode–specific code as they will eventually only be used in the context of user mode processes.

Ws2k proxies the calls up to user mode by using ws2serv.exe and then back down the winsock stack, so kernel mode components that link to k.ws2k.dll will still have the benefit of LSP–supplied functionality. Ws2k does not support overlapped I/O. The following functions are also not supported.

  • WSAAsyncSelect

  • WSAGetOverlappedResult

  • WSAJoinLeaf

  • WSANSPIoctl

  • WSASetService

Registry key required before booting a celltsp debug image

To build a CellTSP debug image, follow the additional steps below:

  1. After creating a CellTSP debug image, select "Build" in the menus and click "Open Release Directory in Build Window".

  2. Open the Platform.reg file and add the following registry key

    [HKEY_LOCAL_MACHINE\Drivers\Builtin\TAPI]

    “Order”=dword:5

  3. Type "makeimg" in that build window.

RIL Proxy Logging does not pull any dependencies when selected

RIL Proxy Logging requires RIL Proxy to be enabled, so if RIL Proxy Logging is selected in the catalog, RIL Proxy also needs to be selected. RIL Proxy Logging and RIL Proxy are located next to each other in the catalog, so please ensure that you do not select RIL Proxy Logging by mistake if you are intending to select RIL Proxy.

The function RasHangUp() does not return when used in conjunction with Enfora radios

Calls to RasHangUp() do not return when applications try to close a GPRS connection over an Enfora radio. This is caused by the radio not providing a needed notification. The radio manufacturer is aware of the issue and is working on resolving this issue in their firmware.

Dial plan automatic alteration of phone numbers might prevent calls to those numbers

On occasion, an user's dial plan alters the displayed phone number into a number that cannot be programmatically dialed. An example of an automatic alteration would be that of the internal extension 12345 to "INTERNAL: 12345". In cases like these, the customer cannot then navigate to the outgoing call logs, select the automatically altered number, press Dial, and then have the call successfully connect.

This occurs because the logic contained in the VoIP code attempts to dial the displayed number, which is an invalid number, such as "INTERNAL: 12345".

To work around this issue, perform one of the following steps.

  • Do not alter the displayed number into anything that cannot be dialed.

- or -

  • Create a second dial rule that takes into account the alteration of the displayed number so that the call can still be placed by the user.

Graphics and Multimedia

Premature termination of ASF streamer playback issue at rates higher than 16x

When using the Windows Media Advanced Systems Format (ASF) streamer for playback at rates greater than 16x, it is possible that an application may receive an End of Stream (EOS) message before the last few media samples have exited the source streamer. Therefore, your application code should be written to handle this scenario.

VC-1 video codec support in Windows Embedded CE 6.0

OEMs must obtain a license to use VC-1 video codec from MPEG LA (once the license is finalized). More information on licensing can be found at the MPEG LA web site.

FillRect method may fail on secondary displays that use the RageXL display driver

When using the RageXL display driver on a secondary display, FillRect may fail when using a brush with a bit depth of 8bpp.

Windows Media Audio and Windows Media Speech now share a single DMO

SYSGEN_DSHOW_WMA_VOICE and SYSGEN_DSHOW_WMA now both generate wmadmod.dll, which combines Windows Media Audio and Windows Media Speech. Previously, there were two separate DirectX media objects (DMOs): the Windows Media Audio Voice (Speech) Decoder DMO, wmsdmod.dll, and the Windows Media Audio Decoder DMO, wmadmod.dll.

EnumDisplayMonitors() will incorrectly return a positive value when the lpfnEnum parameter is set to NULL

According to MSDN documentation, calling EnumDisplayMonitors() should return FALSE and throw an ERROR_INVALID_PARAMETER error if the lpfnEnum parameter, which represents the callback function, is NULL. The call to the API actually returns a nonzero value in this case.

Virtual Surround Sound Support

Virtual surround sound (LtRt) is disabled by default on all platforms. You can enable the virtual surround component by using the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectX\DirectShow\WMADecoder\LtRt.

Windows Media Video encoder issue in DShow Capture pipeline

Windows Media Video Encoder for DShow Capture does not work on CEPC with SSE2 capability. You can solve this problem by setting the registry key HKEY_CURRENT_USER\SOFTWARE\Microsoft\Scrunch\CPU Downgrade Level to 0xffffff0f to disable SSE2 routines.

Default registry entries for the g711 acm and gsm610 acm codecs must be adjusted

In order for the g711 acm and gsm610 acm codecs to coexist, you must change the default registry entries for these codecs. To enable both codecs to be loaded, in the registry, remove the registry key HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CODEC_GSM610\Index.

File Systems and Storage Management

Known issue with SetFilePointer in BinFS

Passing a negative value to SetFilePointer() in BinFS when using the FILE_END option will increase the FilePointer by that amount instead of decreasing it. The workaround is to not use the FILE_END option, or to use GetFileSize() and seek from the beginning of the file instead of backtracking from the end.

Platform Builder IDE and Tools

Changes in the IDE have been made for Windows Embedded CE 6.0

The following changes have been made to the IDE:

  • Integration with the VS 2005 Shell

    Platform Builder OS designs now exist as projects within a Visual Studio solution. Developers can include multiple OS designs within a solution or within other Visual Studio projects.

  • Intellisense

    Intellisense is now available when working within an OS Design. To use Intellisense, you must add a sources or directory node to your Favorites folder by right-clicking the sources project or directory node in the Solution Explorer, and then selecting "Show in Favorites".

  • New Catalog

    • The "OS Design" and "Catalog" views from Windows CE 5.0 have merged into a single view. This can be found by selecting View, then Other Windows, and then Catalog Items.

    • Toolbar buttons in the Catalog View allow you to display user selected features only, all features in the image, or all features in the Catalog.

  • Build commands

    • The Build menus from Windows CE 5.0 have been combined into Visual Studio's "Build" menu.

    • The "clean before building" flag has been removed. Instead, choose the appropriate "Rebuild" or "Clean sysgen" command.

    • You now perform targeted builds by right-clicking the appropriate node in the Solution Explorer and then selecting a build command.

Platform Builder becomes unresponsive when first loading modules for a large image

When the debugger loads modules for the first time on a large image, Platform Builder becomes unresponsive. The debugger waits until all of the symbols are loaded before allowing interaction with the Platform Builder UI.

Breaking Changes in the Windows Embedded CE 6.0 Compilers

The Windows Embedded CE 6.0 compilers are compatible with the Visual C++ 2005 compiler, except for a few differences that primarily arise from differences in the supported microprocessors. For more information, see the topic "Compilers for Microprocessors" in the OEM documentation.

Debugger Known Issues

The following are known debugger issues:

  • Known issues with the old and new shell.

    • No hardware debugging support.

  • Advanced debugger command flex does not work with parameter ap. Users can use parameter ac to enter exception code.

  • Advanced debugger command .nml off causes shell.exe to crash on the device.

Functionality Changes in Build system

WINCETARGETFILES is no longer triggered after any passes that occur before the COMPILE pass. For example, it will not run directly after the PCH, MC and MIDL passes.

A new sources macro got added for cases where this behavior is required. Replace WINCETARGETFILES with TARGETFILES_<PASSNAME>, where <PASSNAME> can be PCH, MC or MIDL.

  • TARGETFILES_PCH runs after the PCH pass.

  • TARGETFILES_MC runs after the MC pass.

  • TARGETFILES_MIDL runs after the MIDL pass.

No other <PASSNAME> values are currently supported.

For all subsequent passes, including the COMPILE pass itself, WINCETARGETFILES will function the same way that it did in previous Windows Embedded CE releases.

Message indicating Invalid Character in the OS Design Project Path

When creating a new OS Design project, the user may get the message:

"The name or path you have entered contains the invalid character ' '. To continue, remove the invalid character(s)."

This is caused if the user changes the default location or if the default location is set incorrectly. If this happens, simply change the project location to a path without any spaces.

Miscellaneous IDE Issues
  • Changes to the Catalog, CEC Files, and the Catalog Editor

    The Catalog View and OS Design view in the previous versions of Platform Builder have been merged into a single Catalog Items View. You can change the filter on this view to show all catalog items, only the items you specifically chose for this OS Design, or all catalog items in your OS Design either explicitly added or brought in by dependency.

    The CEC files have been replaced with an XML-based version of these files. A command-line tool "CecImport.exe" is provided to convert old CEC files to the new PBCXML file format. In addition to the file format change, there is also a change in how the catalog works: There is no longer a need to import CEC files into the catalog. The existence of a catalog file in the appropriate Catalog directory will be enough to load the catalog data by simply refreshing the catalog. This means that the “manage catalog items” command and associated dialog is no longer needed.

    Rather than launching the Catalog Editor, you can create a new catalog file or editing an existing file by opening it in Visual Studio as you would any file. The new Catalog File Editor will open the catalog file with a custom editor that allows you to view the file visually as its elements would appear in the Catalog Item View, or as XML source.

  • The Platform Builder OS Design projects are not integrated into the Visual Studio source code control mechanism.

  • Platform Builder for Windows Embedded CE 6.0 enables you to create multiple SDKs based on a single OS design. However, Microsoft Visual Studio 2005 only allows a single SDK to be installed on each development workstation.

"Platform Builder-specific" SDK in the Visual C++ "Smart Devices" wizard should not be included in the project

In Visual Studio 2005, after selecting any one of the Visual C++ Smart Device project templates in the New Project Dialog, the Platforms page of the Smart Device project wizard shows “Platform Builder-specific” SDK as an option. This SDK should not be added to the current project, as it is not valid.

Installing Windows Embedded CE 6.0 over Windows CE 5.0 breaks the x86 Windows CE 5.0 emulator

Installing Windows Embedded CE 6.0 over Windows CE 5.0 breaks the x86 Windows CE 5.0 emulator. Users can download the ARMV4I-based Device Emulator for Windows CE 5.0 at this Microsoft Web site if they need an emulator for Windows CE 5.0 OS.

Platform Builder for CE 6.0 cannot connect High Level API's to a device based on an earlier version of Windows Embedded CE

When Windows Embedded CE 6.0 is installed, the desktop components are updated to Windows Embedded CE 6.0. After this upgrade, there is no way to provide a high level connection to a pre–Windows Embedded CE 6.0 device.

Platform Builder for CE 6.0 installed on a system with Platform Builder 4.x already installed may modify debugger connectivity settings and the debugger may not connect

When you install Windows Embedded CE 6.0 on a machine that already has Windows CE .NET 4.0, Windows CE .NET 4.1, or Windows CE .NET 4.2 installed, you may experience some issues in remote tools connectivity:

  • Remote tools for Platform Builder for Windows Embedded CE 6.0 will install an additional startup service (KITL Bootstrap Service) and this may be setup as the default startup server for Windows Embedded CE Platform Manager Connectivity Options. Make sure you use a startup server other than "KITL Bootstrap Server". To check your current Platform Manager connectivity options, first start any remote tool from the Platform Builder Tools menu or Visual Studio 2005/Platform Builder for CE 6.0 Target > Remote Tools menu, choose Connection > Configure Windows CE Platform Manager, select the Default Device, and then click on Properties.

  • Due to conformance to binary distribution requirements, the Remote Performance Monitor and Remote Call Profiler remote tools accessible from Platform Builder 4.x and 5.0 will be removed during the installation of Windows Embedded CE 6.0. As a result, you will not be able to run these two remote tools. The workaround is to run the repair for your older Windows Embedded CE installation (in chronological order, e.g. 4.0, then 5.0) and backup the contents of the C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\bin and C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\bin\wce420 folders on your computer, install (or repair) Windows Embedded CE 6.0, and then copy back CePerfMon.exe and msic.exe into the respective subfolder under C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\bin and C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\bin\wce420

Opening .csi file in SysInfo remote tool does not refresh UI

When you run the System Information remote tool and open a .csi file while some previously captured system information is already displayed, the UI will not reflect the contents of the .csi file that you just opened. This is a known issue and will be addressed in a future release.

The workaround is to close the System Information remote tool and rerun it. (You don't necessarily need to connect to a device at this point.) Then open the .csi file from the File > Open menu.

Zoom may display error when run under OOM conditions

The Zoom-in remote tool may report error due to out of memory conditions when run on a large device image. When you use the Zoom-in remote tool on a large device image, it may display the error message "Connection to the device was lost".

If you are running Zoom-in from Platform Builder, you may also see a message like the following one on the debug output window:

Unable to create dib section...errorcode = 8

This specific error comes while attempting to allocate a memory buffer to hold the bitmap DIB bit values. However, this may not be the only out-of-memory condition you will run into. This type of error indicates that the device side code for Zoom-in (cezcli.exe) ran out of memory.

The workarounds are:

  • Terminate other programs running on the device to free up memory.

  • If you can modify the OS design, free up memory so that your device has enough free memory to allocate necessary buffers for the bitmap data.

Kernel tracker memory usage may rise

When you run the remote tool Kernel Tracker for a prolonged period of time, the amount of memory it uses on the desktop computer may rise to a very large amount. Instead of running Kernel Tracker for a prolonged period of time, you may choose to run it in Limited Buffer Mode, or simply terminate and restart Kernel Tracker to show events only as needed.

Registry Editor remote tool may not refresh completely when programmatically modifying the registry from another program

When using the Registry Editor remote tool while programmatically modifying registry keys from another program running on your device, refreshing the view (F5) on Registry Editor may not show the modifications made by the other program if the currently selected node is not a top level node (e.g. HKEY_LOCAL_MACHINE). Instead, before you refresh the view, select one of the top level nodes - the view should refresh with the latest state of the registry.

Several Platform Manager SDK samples require updating the projects and several codePBt17

The following list of the Platform Manager sample SDK projects will not build successfully as installed, however, with a few simple steps, you can fix them in Visual Studio 2005.

  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\Hello\Hello.vcw

  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\KTSubSample\KTSubSample.dsp

  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Publisher\hellopublisher.vcp

  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Subscriber\hellosubscriber.dsp

  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Test\PubSubTest.vcproj

  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\timeviewer\desktop\timeviewer.dsp

  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\timeviewer\device\timeviewerce.vcp

Follow these steps to build the samples in Visual Studio 2005:

[Hello.vcw]

  • Open C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\Hello\Hello.vcw in VS2005, and let Visual Studio 2005 convert the project. Save the Hello.sln to the same path as the vcw file. As a result of the conversion, you will see two new files - CallCap\CallCap.vcproj, and FastCap\FastCap.vcproj.

  • Open c:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\Hello\Fastcap\Fastcap.cpp, and move the "int i" declaration out of the first forloop in DoMultiThread() and put it on the line before.

  • Open c:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\Hello\Callcap\Callcap.cpp, and move the "int i" declaration out of the first forloop in DoMultiThread() and put it on the line before.

  • Build Hello.sln - both debug and release configurations should build without errors.

[KTSubSample.dsp]

  • Open C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\KTSubSample\KTSubSample.dsp, and let Visual Studio 2005 convert the project. Save the KTSubSample.sln to the same path as the DSP file.

  • Open a command prompt and "cd" to C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\include. Assuming that Visual Studio 2005 folders are in your %PATH% environmental variable, run

    MIDL CEPUBSUB.IDL
    followed by

    MIDL KTSUB.IDL
  • Open KTSubSample.cpp, and comment out the following line:

    Enable3dControlsStatic();// Call this when linking to MFC statically
    like this:

    // Enable3dControlsStatic();// Call this when linking to MFC statically
  • Build KTSubSample.sln - both debug and release configurations should build without errors.

[hellopublisher.vcp]

  • Open C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Publisher\hellopublisher.vcp, and let Visual Studio 2005 convert the project. Save the hellopublisher.sln to the same path as the vcp file.

  • Open the Project > Properties menu, then select the Configuration Properties > Linker > Input property page, and change the specific item in Additional Dependencies from RComHelperCE.lib to .\lib\target\armv4i\RComHelper.lib. (Remember to do this step for both Debug and Release configurations). Please also note that this library was compiled with updated Visual Studio for Devices compilers/linkers. You will need an upcoming Visual Studio 2005 service pack in order to obtain these compilers/linkers. Please go to the Microsoft Download Center for the latest service packs for Visual Studio 2005. If you are using Visual Studio 2005 (original release), you will get the following linker error:error LNK2001: unresolved external symbol __GSHandlerCheck

  • Build hellopublisher.sln - both debug and release configurations should build (with a service pack of Visual Studio 2005) without errors.

[hellosubscriber.dsp]

  • Open C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Subscriber\hellosubscriber.dsp, and let Visual Studio 2005 convert the project. Save the hellosubscriber.sln to the same path as the dsp file.

  • Open HellpSub.cpp. In CHelloSub::Open, modify this line:

    m_file = ::CreateFile(OLE2T(const_cast<unsigned short *>(filename)),GENERIC_WRITE,0,NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    to:

    #ifdef UNICODE
    m_file = ::CreateFile(T2CW_EX_DEF(OLE2CT(filename)),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);
    #else
    m_file = ::CreateFile(OLE2T(filename),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);
    #endif
  • Open stdafx.cpp, and comment out #include <statreg.cpp> and #include <atlimpl.cpp>

  • If you are building one of the release configurations (e.g. Release MinDependency, Release MinSize, Unicode Release MinDependency, Unicode Release MinSize), you will need to setup a linker option to ignore atlmincrt.lib. Do the following:

    • In Solution Explorer, select the HelloSubscriber (project) node and right-click. Then select Properties.

    • Make sure the Configuration is set to one of the Release configurations.

    • In the Configuration Properties >> Linker >> Input property page, set Ignore Specific Library to "atlmincrt.lib"

    Please note that you do not need to do this for any of the debug configurations.

  • Open a command prompt and go to C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\include. Assuming that Visual Studio 2005 folders are in your %PATH% environmental variable, run

    MIDL CEPUBSUB.IDL
  • Build hellosubscriber.sln - both debug and release configurations should build without errors.

[PubSubTest.vcproj]

  • Open C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Test\PubSubTest.vcproj, and let Visual Studio 2005 convert the project. Save the PubSubTest.sln to the same path as the vcproj file.

  • Open the Project > Properties menu, then select the Configuration Properties > C/C++ > General property page and change the Additional Include Directories from ..\..\..\platman\include to ..\..\..\include. Also, in the Configuration Properties > Linker > Input property page, change Additional Dependencies from rts.lib to ..\..\..\lib\dsktop\rts.lib. Remember to do this step for both Debug and Release configurations.

  • If you have not done so already, open a command prompt and go to C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\include and run

    MIDL CEMGR.IDL
    followed by

    MIDL CEMGRUI.IDL
  • Build PubSubTest.sln - both debug and release configurations should build without errors.

[timeviewer.dsp]

  • Open C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\timeviewer\desktop\timeviewer.dsp, and let Visual Studio 2005 convert the project. Save the timeviewer.sln to the same path as the dsp file.

  • Open TimeViewer.cpp. Modify some of the string functions called from ConnectToDevice to use the safer versions (with an _s in the function name):

       stRet = wcstombs(szDeviceName, pszName, sizeof szDeviceName); 
    should be:

       size_t _PtNumOfCharConverted;
       stRet = wcstombs_s(&_PtNumOfCharConverted, szDeviceName, pszName, sizeof szDeviceName);


       strcpy(szTitle, "TimeViewer : ");
    should be:

       strcpy_s(szTitle, "TimeViewer : ");


       strcat(szTitle, szDeviceName);
    should be:

       strcat_s(szTitle, szDeviceName);


       wcscpy(wszDeviceExe, L"\\Windows\\TimeViewerCE.exe");
    should be:

       wcscpy_s(wszDeviceExe, L"\\Windows\\TimeViewerCE.exe");
        
  • Build timeviewer.sln - both debug and release configurations should build without errors.

[timeviewerce.vcp]

  • Open C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\timeviewer\device\timeviewerce.vcp, and let Visual Studio 2005 convert the project. Save the timeviewerce.sln to the same path as the vcp file.

  • Build timeviewerce.sln - both debug and release configurations should build without errors.

Known issues with the new shell

Visual Studio 2005 remote tools do not function well with Windows Embedded CE 6.0 run-time images. After a clean boot, you can connect a remote tool to the target device, but after closing that instance, you will not be able to run any other Visual Studio remote tool until you reboot the target device.

Remote Spy window message viewing capability has been disabled

In the Spy remote tool, the ability to spy on window messages has been disabled in Windows Embedded CE 6.0 due to OS security policies. If you start Spy then try to capture messages on any child window of the desktop window (handle != 0x00000000), the messages window does open in the client but the following message is displayed in the Visual Studio 2005/Platform Builder Debug Output Window:

119985 PID:5b2002e TID:5b4002e ######### CeSpy - Message intercept and display not supported in this OS #########

Configuring Visual Studio development environment for Platform Builder Development Environment

If your Visual Studio development environment is not configured for Platform Builder development, you can use the Import and Export Settings Wizard to reconfigure the development environment using the following instructions:

From the tools menu, choose Import and Export Settings.

  1. Choose Reset all settings.

  2. Choose Next.

  3. Choose Yes, save my current settings or No, just reset settings, overwriting my current settings.

  4. Choose Next.

  5. Choose Platform Builder Development Settings.

  6. Choose Finish.

Kernel Tracker displays events that are off by 10ms after an event that has no timestamp

If a log file that you are viewing with Kernel Tracker contains an event without a timestamp (e.g. WaitForMultipleObjects), subsequent events will appear shifted by 10 ms. This is an arbitrary delay that gets added to a non–timestamped event, so that it doesn't appear at the same time as the previous timestamped event. Please be aware of this arbitrary delay.

Build menu experience in Platform Builder for CE 6.0

In Windows Embedded CE 6.0, installation of Platform Builder modifies the default Visual Studio build menu behavior. For information about the changes, see "Build Menu Options" in the Platform Builder documentation.

SDKs require Microsoft Visual Studio 2005 SP1

Microsoft Visual Studio 2005 Service Pack 1 or later is required to use SDKs generated using Platform Builder for Windows Embedded CE 6.0. Installing a Windows Embedded CE 6.0 SDK without Microsoft Visual Studio 2005 Service Pack 1 may result in unexpected behavior and you may not be able to use the SDK. For information about obtaining Microsoft Visual Studio 2005 SP1, see this Microsoft Web site.

Debugging and Testing

Creating a New Platform Builder OS Design

Platform Builder tools are now integrated into the Visual Studio 2005 environment. The following steps summarize how to create a new Windows Embedded CE OS run-time image using Platform Builder.

To create a new Platform Builder OS Design:

  1. Launch Visual Studio.

  2. Choose File menu.

  3. Choose New, and then choose Project.

  4. Under Platform Builder for CE 6.0, select a new OS design.

  5. Choose a project name and click OK.

KITL thread priority cannot be set using the Target command window

Windows Embedded CE 6.0 does not support setting the KITL thread priority through the Target command window.

Remote tools
  • The Remote Tools will not connect if using a kernel-level transport while the Flat Release Directory is read-protected.

  • Only one remote tool can be connected to a device at a time.

Hardware assisted debugging support limited to the bootloader and OAL

After attaching to the target, for hardware assisted debugging to function correctly, you might have to perform a hardware reset of the target.

eXDI1 hardware assisted debugging drivers are not supported

Windows Embedded CE 6.0 requires eXDI2 hardware assisted debugging drivers.

Bluetooth

When the Bluetooth stack is shutting down, some Bluetooth PCMCIA cards with drivers based on the 16950 serial interface may cause the Bluetooth stack to hang in an environment with heavy wireless traffic.

International Development

Yomi field is not supported by OWA

The Yomi field, which enables users to input Japanese phonetically, is not supported in Outlook Web Access (OWA). Instead, the word or name will have to be input using Kanji. Any features that make use of the OWA contact functionality, such as VoIP, will also not support the Yomi field.

VoIP predictive contact searching only supports English

The predictive searching used to find contacts in VoIP is only available for English (en-US). The search modes First Name and Last Name will work for all locales.

CreateMUI.bat creates additional entries in MUI run-time images

When you are creating MUI run-time images, the CreateMUI.bat file generates unnecessary entries in the file Multiui.bib, which might result in Makeimg failures. To work around this issue, before copying to Ce.bib, in Multiui.bib, remove all occurrences of the following code.

k.coredll.dll.DLL.mui          $(_FLATRELEASEDIR)\k.coredll.dll.DLL.mui               NK  SH

Change List for Windows Embedded CE 6.0

BSPs

  • OST tools can be obtained from board manufacturer

    The OST tools differ from board to board. If customers buy the hardware from a board manufacturer but not the OMAP, they should obtain the OST tools from the board manufacturer or directly from Texas Instruments. The tools are not available from OMAP’s website.

  • IRQ reference counting no longer handled in the Windows Embedded CE 6.0 kernel

    In the earlier Windows Embedded CE releases, the kernel implemented IRQ reference counting for InterruptEnable, InterruptDisable, and InterruptMask. When multiple devices shared the IRQ and called these functions, the kernel would keep track of when the corresponding OEMInterruptEnable/Disable/Mask functions needed to be called.

    In Windows Embedded CE 6.0, this reference counting has been moved out of the kernel and into the OEMInterruptEnable/Disable/Mask functions. It is now available in platform\common\src\common\intr\base_refcount as oal_intr_refcount.lib. You only need to use this library if your device shares IRQs with multiple devices. If your device does not share IRQs, you can continue link with oal_intr.lib, where the OEMInterruptEnable/etc. functions do not reference count.

Networking and Communications

Change in TCP/UDP port allocations

As per the Internet Assigned Numbers Authority (IANA) port assignment, the Dynamic and/or Private ports are those from 49152 through 65535 (http://www.iana.org/assignments/port-numbers). There are changes to the Windows Embedded CE networking stack. When a socket is bound to port 0, Winsock will now assign it a port in the 49152-65535 range. Previously, the assigned port was in the 1024 to 5000 range.

Distributed COM (DCOM) Remoting is not included in Windows Embedded CE 6.0

Distributed COM (DCOM) Remoting, sometimes also referred to as "COM Remoting", is not included in Windows Embedded CE 6.0 (some previous versions did). If you are interested in this functionality, please go to this Microsoft web site for more information or contact Microsoft support or an authorized distributor to inquire about possible alternatives.

AR6000 WLAN driver

The AR6000 WLAN miniport driver was tested with the "Kamet 9" version of the AR6000 firmware dated July 2006. Any variation of the driver or firmware may be incompatible with the results validated as part of the Windows Embedded CE 6.0 release.

Core OS

Added GetCurrentThreadMessageQueue API, which is now used to obtain the message queue pointer of the caller thread

In previous OS releases, Coredll could acquire the message queue pointer of the caller thread by simply reading the thread local storage (TLS) value of TLSSLOT_MSGQUEUE. In Windows Embedded CE 6.0, this no longer possible because there is now a separate user-side TLS and kernel-side TLS. A new API, GetCurrentThreadMessageQueue, has been added to allow Coredll to obtain a message queue pointer.

Debugging and Testing

  • Additional Target Control shell window commands

    The following commands are available in the Target Control shell window.

    hd executable

    Dumps the process heap for executable.

    options

    Sets the options for the Target Control shell window.

    timestamp

    Toggles the timestamp on all commands. This can be useful for logging purposes.

    priority n

    Changes the priority of the shell thread to the value specified by n.

    kernfault

    Suspends checking of TLSKERN_NOFAULT, which results in the passing of all exceptions to the debugger even if NOFAULT has been specified.

    kernnofault

    Sets checking of TLSKERN_NOFAULT, which results in the debugger not reporting exceptions to the user.

    This is the default setting.

    suspend

    Suspends the target device. This requires GWES.exe and the proper OAL support.

    loadext [[-u] DLLName]

    Loads the specified extension dll DLLName into Shell.exe. The parameter -u unloads the currently loaded extension dll.

    tp tid prio

    Sets or queries the thread priority where tid is the specified thread ID and prio is the specified thread priority.

    • If prio is a value of -1, or is omitted, this queries the current thread priority specified with tid.

    • If prio is a value between 0 to 255, this sets the thread priority as specified.

File Systems

The behavior of CreateFileMapping and MapViewOfFile has changed in Windows Embedded CE 6.0.

In Windows CE 5.0, you could create a read/write mapping with PAGE_READWRITE, specify a read-only view with FILE_MAP_READ view, and then write to the view. This was because the file view protection settings were specified by the flProtect parameter of the CreateFileMapping function, instead of the dwDesiredAccess parameter of the MapViewOfFile function. If you created a read-write mapping, then all views were read-write, even if you specified that the view was supposed to be read-only when calling MapViewOfFile.

If you created a read-only mapping, then all views were read-only, because MapViewOfFile would fail if you specified a read-write view of a read-only mapping.

In Windows Embedded CE 6.0, you cannot create a read/write mapping, specify a read-only view, and then write to it. Read-only views are read-only.

International

  • The following Sysgens, which were part of earlier Windows Embedded CE releases, were not included in Windows Embedded CE 6.0:

    • SYSGEN_FONTS_MSMING – When this variable is set, the MS Ming font is included in the OS design.

    • SYSGEN_FONTS_SUNFON – When this variable is set, the SC_Song font is included in the OS design.

Platform Builder IDE and Tools

  • Advanced page removed from Subproject Wizard

    The "Advanced" page has been removed from the Subproject Wizard to make the process simpler for novice users. If you are an advanced user and want to change the Release Type for a subproject, in the Solution Explorer, select the subproject that you want to modify and then, from the context menu, select Properties. This opens the subproject file in the Sources File Editor.

    If you want to specify that the subproject be built during the Pre-Sysgen phase, add the variable PBP_PRESYSGEN=1 to the sources file.

  • Platform Builder displays subprojects with forward slashes

    The Solution Explorer displays subproject paths using forward slashes instead of backward slashes. This is because Visual Studio macros use backward slashes to delimit items in the Solution Explorer.

  • The Visual Studio 2005 resource editor adds boilerplate information to resource or header files

    The Microsoft Visual Studio 2005 resource editor will add boilerplate information for desktop Visual C++ projects to your RC file or header files. This can result in a situation where, after these files are saved in the editor, the files do not successfully build with the Windows Embedded CE 6.0 tools.

    To work around this issue, you should first create a backup copy of your work by saving the original file with a different name, and then comparing changes. If the changes include boilerplate code for desktop Visual C++, remove the boilerplate code to ensure that the file only contains the actual resource changes that you have made.

Changes to data transfer between processes using messages with pointer to a buffer as a parameter

Processes that used explicitly or implicitly managed pointers to buffers to send data across processes using windows messages in the earlier releases would no longer succeed in transferring data. In Windows Embedded CE 6.0, data marshalling support by GWES is required to facilitate data transfer for such a scenario. This support exists only for a specific set of messages.

The workaround is to use Remote Process Heaps.