Windows CE 6.0 (June 27, 2007)

Christian (Moderator):
Welcome to today’s public chat. Our chat today covers the topic of Windows Embedded CE 6.0!

Christian (Moderator):
We are pleased to welcome our Experts for today's chat. I will have them introduce themselves now.

*Introductions

russellk_MSFT (Expert):
Hi, I'm Russ Keldorph. I work on the native C++ compilers for Windows Mobile and Windows Embedded CE.

mikehall_ms (Moderator):
Hi, I'm Mike Hall, Software Architect for the Windows Embedded group at Microsoft.

Michael_MSFT (Expert):
Hello, I am Michael Malueg, lead PM in the Windows CE group

Don Weber [MS} (Expert):
Hi I'm Don Weber. I am a BSP Program Manager.

KenSadah[MSFT] (Expert):
Hello, I'm Ken Sadahiro, the Program Manager for Remote Tools.

Ryan Ward [MSFT] (Expert):
Hello, I'm Ryan Ward and I'm a SDET on the Platform Builder IDE test team.

GLanger_MS (Expert):
Hi, I'm Glen Langer and I'm a program manager for BSPs for Windows Embedded CE.

Neil [MS] (Expert):
Hi - I'm Neil Coles, a developer on the Device Management & Security team in Windows Mobile.

Travis Hobrla [MS] (Expert):
Hi, I'm Travis Hobrla, a BSP developer on the Windows Embedded CE team.

ramanis_MSFT (Expert):
Hi, I am Ramani Siruvrui. I am an SDET in WDC Multimedia

Christian (Moderator):
Let’s begin the chat!

Christian (Moderator):
Just a reminder that to post a question for our experts, please remember to check the “Ask the Experts” box.

*Start of Chat

Don Weber [MS} (Expert):
**Q:**Do you know if the 2420 BSP for CE6 supports Windows Media Player playing WMV Main profile out of the box? (i.e., codecs, etc.?)
A: It does not. The 2420 BSP that shipped in CE6 was very limited.

Don Weber [MS} (Expert):
**Q:**Don, thanks for the answer. Are you planning WMV Main profile support for the DaVinci BSP that you and TI are working on?
A: Sorry but it is Microsoft policy not to discuss contents of future releases.

mikehall_ms (Moderator):
**Q:**When I remove or the back and battery fall out of my device, the time/date resets to the date of the rom which is 6/7/2006 for the T-Mobile MDA and it doesn't update until I switch from one services tower to another. Why is that?
A: unfortunately this is a CE 6.0 "Embedded" development chat, not a Windows Mobile device chat - can I suggest you ask this question on the Windows Mobile forums ? - https://msdn2.microsoft.com/en-us/windowsmobile/bb264325.aspx

Sue Loh [MS] (Moderator):
**Q:**When I remove or the back and battery fall out of my device, the time/date resets to the date of the rom which is 6/7/2006 for the T-Mobile MDA and it doesn't update until I switch from one services tower to another. Why is that?
A: I would guess either that this device does not have a battery-backed clock (I don’t know), or that your clock battery is dead.

mikehall_ms (Moderator):
**Q:**Had a question about WM5, it seems there are times when it randomly switches to Jan 2nd or some date in 2008, and all calendar reminders come up between now and then. I've heard it may be happening when switching towers or from network types (non 3G to 3G
A: unfortunately this is a CE 6.0 "Embedded" development chat, not a Windows Mobile device chat - can I suggest you ask this question on the Windows Mobile forums ? - https://msdn2.microsoft.com/en-us/windowsmobile/bb264325.aspx

Sue Loh [MS] (Moderator):
Hmm, I don’t really mind answering Windows Mobile device questions when we can, but I don’t have an answer for that one…

MikeThom [MS] (Expert):
**Q:**Asked this several times in here but never got an answer.... Debugging through ethernet in CE 6.0 (even with SP1) is a lot slower than in 5.0 with the same host & target. So slow that CETK times out while running some display tests. Suggestions?
A: I would suggest you filing a bug report to Customer Support services. I suspect that this would take more time to dive into than we have time in the chat.

mikehall_ms (Moderator):
**Q:**how do I send a request to customer service? Link?
A: you can contact Microsoft Developer Support using the "Assisted Support" link on the following page - https://msdn2.microsoft.com/en-us/embedded/bb545054.aspx

KenSadah[MSFT] (Expert):
**Q:**Since the remote profiling tools are not ported to CoreCon yet, what options do I have on a CE 6.0 device for profiling performance issues? What is the ETA on porting the rest of the remote tools?
A: While I can't talk about future plans of the remote tools in public, one thing I can introduce is the NEW Remote Tools Framework, which is a framework for quickly developing remote tools. Read more about it at: https://blogs.msdn.com/ce_base/archive/2007/06/05/remote-tools-framework-1-0-is-for-real.aspxAs for your question - Remote Performance Monitor (based on Platform Manager) still does work with CE 6.0 devices. Furthermore, you can configure them to work with Windows Mobile devices as well. Read Sue Loh's blog: https://blogs.msdn.com/ce_base/archive/2007/04/02/using-platform-builder-remote-tools-over-activesync.aspx

KenSadah[MSFT] (Expert):
**Q:**Followup to [12], I have tried out the old PlatMan version of Kernel Tracker with Startup/Transport set to ActiveSync and I get "Unable to load device side components". CoreCon tools work, what's different about the PlatMan tool connection?
A: Platman is a completely different connectivity layer. (Assuming you are using PB 6.0) Have you tried installing the Platform Builder 6.0 Service Pack 1?

https://www.microsoft.com/downloads/details.aspx?FamilyId=BF0DC0E3-8575-4860-A8E3-290ADF242678&displaylang=en

KenSadah[MSFT] (Expert):
**Q:**Yep, this is PB6.0 with SP1 trying to connect to a CE 6.0 device.
A: Let me ask you a few more questions:
(1) did you install Platform Builder versions in this order:
- pre-6.0 versions of Platform Builder (e.g. 5.0)
- Visual Studio 2005
- Visual Studio 2005 SP1
- Windows Embedded CE 6.0 (including Platform Builder 6.0)
- Platform Builder 6.0 SP1
It is important that you install in this order. (
2) did you happen to install any Windows CE 6.0 updates after installing Platform Builder 6.0 SP1?
(3) You do have ActiveSync running on your CE 6.0 device, I presume?

Sue Loh [MS] (Moderator):
**Q:**Yep, this is PB6.0 with SP1 trying to connect to a CE 6.0 device.
A: I myself am still learning the ins and outs of PlatMan, but most of the connection problems I’ve seen are related to some confusion in PlatMan over the CPU architecture. Without going into too much detail, if you’re trying to connect to an ARM device then search your PC for the platman “ARMV4I” target directory and copy it to an “ARMV4” directory. And check what your architecture/processor are set to in the OAL. I’m trying to gather information about this and post it on our blog soon – check for it on https://blogs.msdn.com/ce_base/.

mikehall_ms (Moderator):
**Q:**Hello, I have a question regarding BSP clone. If one developer has cloned a BSP and if another developer wants to use the cloned BSP, how to do this?
A: With CE 6.0 you can copy the new/cloned BSP into the \Wince600\Platform\ folder - if the new BSP has a PBCXML file (catalog file) then the BSP will appear in the CE 6.0 catalog and can be used to build o/s images.

mikehall_ms (Moderator):
**Q:**If the cloned BSP has a PBCXML file (catalog file), then will it just work or do I need to add the PBCXML file into the catalog items list in the PB tool?
A: With CE 6.0 there isn't a central database for components - your BSP would have its catalog file in a location similar to... \wince600\platform\YourBSP\Catalog\yourBSP.pbcxml - When VS 2005/CE 6.0 is started it will scan for catalog files and dynamically build the catalog - if CE 6.0 is already open you can refresh the catalog to pick up any new items/BSPs.

mikehall_ms (Moderator):
**Q:**How can I create documentation of which catalog items or features are part of OS image automatically - this is helpful for application debugging to know which components are part of OS image and to know what is not included?
A: you can use the Runtime Assesment Tool (RAT) that ships with CE 6.0 - take a look at the "Tools | Platform Builder CE 6.0 | Runtime Assesment Tool" menu item.

mikehall_ms (Moderator):
**Q:**Mike, thanks, it works
A: Great! :O)

MikeThom [MS] (Expert):
**Q:**WINCE 6.0 RE 2: will it support DSHOW architecture?
A: The DSHow architecture is not going away.

John Spaith [MS] (Expert):
**Q:**In Internet Connection Sharing based OS image, we can not ping the public interface from public side is this a security feature or something we did not config correctly.?
A: This is a security thing. The ICS NAT includes a simple firewall which is flipped on by default - check out the EnablePacketFiltering registry value (https://msdn2.microsoft.com/en-US/library/aa454032.aspx). Note that this is the "simple" firewall that is part of NAT and is mainly to block out packets, if you have the more heavy-duty firewall (fw6.dll, which allows you to specify more complicated rules) then the NAT will set EnablePacketFiltering=0 so that fw6.dll can get at the packets (though I believe but am not sure it's default rule is to reject anything incoming where a connection from inside->out wasn't established already).

Soemin_MSFT (Expert):
**Q:**Thanks john. For a quick experiment if we do not pull ICS config meaning without pull in IGD UPNP etc, if we just enable IP forwarding by changing the registry will this be enough to make IP forwarding work between the two interfaces?
A: Yes, IP forwarding should work. However note that addressing (DHCP) will need to be addressed separately in that network.

Avram [MS] (Expert):
**Q:**what is the purpose of rapiclnt thread on WM6.0 ?
A: I don't know if this is a good enough answer for you but all I know is that it's a part of Activesync.

Travis Hobrla [MS] (Expert):
**Q:**If we use platform builder tools & CE6.0 OS source code in a version control system for multiple developers, then how can I integrate the CE tools/source code into Visual Studio IDE particularly when CE tools/source code is not installed on local box?
A: As far as the source code is concerned, I don't think Visual Studio distinguishes local shares from network shares. However, you won't be able to integrate the CE tools without installing them locally. It's a plugin to Visual Studio and I don't believe VS supports loading plugins from a remote source.

KenSadah[MSFT] (Expert):
**Q:**Hello everyone. I had a question regarding persistent registry; Is it still possible to use a file based persistent registry in CE 6.0 - using a .reg file rather than hive file?
A: Sorry to respond with a question, but do you want to be able to import .reg files on a running OS design (either with a hive-based or RAM-based registry - see https://msdn2.microsoft.com/en-us/library/aa910532.aspxfor definitions)? Or do you want to specify the registry settings at design time in Platform Builder?

Remote Registry Editor only allows exporting of .reg files (REGEDIT4 format), but not importing. If the importing capability is what you are referring to, how high is it on your priority list?

mikehall_ms (Moderator):
**Q:**Hello everyone. I had a question regarding persistent registry; Is it still possible to use a file based persistent registry in CE 6.0 - using a .reg file rather than hive file?
A: You can use the ReadRegistryFromOEM and WriteRegistryToOEM functions (which you will need to implement) to read/write the registry data to your own storage format.

mikehall_ms (Moderator):
**Q:**Thanks for the response Ken. I would like to pre-define a .reg file using RAM based registry and be able to update this registry after the design stage when in use.
A: You can use the ReadRegistryFromOEM and WriteRegistryToOEM functions (which you will need to implement) to read/write the registry data to your own storage format.

Sue Loh [MS] (Moderator):
**Q:**Thanks for the response Ken. I would like to pre-define a .reg file using RAM based registry and be able to update this registry after the design stage when in use.
A: The RAM-based registry is still supported in CE 6.0. But even the RAM-based registry doesn’t store the registry data in .reg format. The .fdf file format is a binary version of the registry, and WriteRegistryToOEM/ReadRegistryFromOEM are similar. I suppose you could figure out how to hack the data to change the contents if you really wanted, but the data format is not documented. Nobody expects you to do that sort of thing. Why not just write to the registry at run time? You could always build an update program to read from storage, or implement IOCTL_HAL_INITREGISTRY to write data into the persistent registry at an early stage in boot.

mikehall_ms (Moderator):
**Q:**Can loadcepc be used to automatically load a .reg file with the needed registry setting for the build? If not, is there a recommended bootloader to accomplish this?
A: The bootloader isn't involved in this process - the purpose of the bootloader is to load an operating system and hand off to the o/s image to run - the operating system does have functions for loading registry information, such as ReadRegistryFromOEM - https://msdn2.microsoft.com/en-us/library/aa917041.aspx

Sue Loh [MS] (Moderator):
**Q:**Can loadcepc be used to automatically load a .reg file with the needed registry setting for the build? If not, is there a recommended bootloader to accomplish this?
A: I think the normal way to pass data from the bootloader into the registry is to have a small region of RAM – driver globals – shared between the bootloader and OAL. The bootloader writes data into the RAM, the OAL reads it out, and in IOCTL_HAL_INITREGISTRY the OAL can move the data into the persistent registry.

KenSadah[MSFT] (Expert):
**Q:**why is RAM HIVE necessary, why not just go with RAM based persistent registry
A: You can choose - see this MSDN article.https://msdn2.microsoft.com/en-us/library/aa914913.aspxYou can also call RegFlushKey after each registry modification API call so that your app's changes to the registry persist.

Sue Loh [MS] (Moderator):
**Q:**why is RAM HIVE necessary, why not just go with RAM based persistent registry
A: If by “RAM HIVE” you mean the “hive RAM regions” and by “RAM based persistent registry” you mean keeping registry data ONLY in the object store (RAM), then you’re right, they’re almost exactly the same. But your use of the word “persistent” confuses me. If you are storing ANY data in a persistent store like flash, the hive-based registry has better performance than the RAM-based registry.

Soemin_MSFT (Expert):
**Q:**Does the Connection Manager in CE6 support "seamless" switching to and from connections (adaptors?) at will e.g. from WiFi to GPRS and vice versa?
A: Connection Manager decides on the best interface for the application and it does not automatically switch application in the middle of connection to another (when it becomes available).

Soemin_MSFT (Expert):
**Q:**We need to switch (either automatically or under app control) from GPRS to Wifi when Wifi is within range and back to GPRS when not. We are trying to use ICS under CE5 with difficulty. Will CM ease this?
A: I'm assuming this is Windows Mobile 5.0 (?) because connection manager is only available on WM platform. The application can listen to the notification ConnMgrRegisterForStatusChangeNotification() to get notified when a new connection becomes available and then use the ConnMgrQueryDetailedStatus( ) to find out the details. The application needs to then decide to close the current connection request and request for a new one. What is your difficulty in using ICS?

Soemin_MSFT (Expert):
**Q:**It appears to be difficult to get ICS to change the public interface when we want it to.
A: On WM the Internet Sharing application only allows GPRS type network to be assigned as public interface. Is this Windows Mobile platform you are addressing?

David_Liao_MS (Expert):
**Q:**Is it possible in such a way to avoid the SD Bus to use the WRITE_BLOCK cmd 24? I verified that the file transfer using the CE explorer has a bad performance probably due to the fact that a lot of CMD 24 are used to write on SD blocks?
A: If you are using Microsoft SDMemory Driver, this is caused by either registry entry "SingleBlockWrites" or request for signle block read. If you remove the registry entry, for mulitple block write (from Filesys), it shouldn't use Signle Block Write .

Travis Hobrla [MS] (Expert):
Q: My question is about the data layout of the bin files in the NAND. I have created 4 bin files: nk.bin apps.bin shell.bin chain.bin each bin file has a 7 character Header "cookie" ("BOOF something") I have created a binfs partition using bootpart.c in the bootloader. Should i put the bin files as is (means, like they would appear in my c:\workspace\myproject\realease\*.bin)) with RAM addresses inside and with the 7 character header + image start/length?
A: You're loading from NAND into RAM, yes? If so, then yes, that's fine. Your bootloader will read the headers and act appropriately.

BorMing_MS (Expert):
Q: My question is about the data layout of the bin files in the NAND. I have created 4 bin files: nk.bin apps.bin shell.bin chain.bin each bin file has a 7 character Header "cookie" ("BOOF something") I have created a binfs partition using bootpart.c in the bootloader. Should i put the bin files as is (means, like they would appear in my c:\workspace\myproject\realease\*.bin)) with RAM addresses inside and with the 7 character header + image start/length?
A: If you're writing .BIN files to flash, then you need to flatten them first (the same way you'd put them in RAM). You can flatten them using the cvrtbin.exe tool, or in the bootloader while flashing.

BorMing_MS (Expert):
**Q:**Travis: my bootloader only loads the nk.bin. and yes it parses it as it would download it from PB and exclude the header. the rest should automatically be read by BinFs on demand for dlls. so. should I leave as they are? (ram address + header
A: There should be a "chain.lst" file generated when you use BINFS, use it to download from Platform Builder. It'll download all the bin files for you.

BorMing_MS (Expert):
**Q:**BorMing: i am writing them to flash, so it would be read on demand by binfs. Doesn't binFS know how to read bin files without flattening them? How it will know which dlls resides in the binfs partition to load the correct dll when needed?
A: BINFS doesn't know how to flatten a bin file, it knows how to deal with a flattened BIN file. If you use bootloader to download all the bin files, the bootloader should've already write them to flash in flattened format.

BorMing_MS (Expert):
**Q:**BorMing: Maybe i don't understand what is flattened. suppose i download all bin files with bootloader from PB. put each chunk of memory in ram. lets say 10mg nk.bin 5mg apps. 5kchain. should i than burn the ram image (15mg in total) to nand?
A: Yeah, I think my answer isn't clear enough. (1) If you want to write all the binfiles to a nand flash without bootloader, then you need to flatten the bin file. (2) If you want to download all the BIN files from PB, you should download "chain.lst" where Platform Builder will combine all the bin files into one and your bootloader should work just fine. (3) I believe there should also be a "xip.bin" which is generated automatically that is the "super bin file". Downloading xip.bin is equivalent to downloading with chain.lst.

BorMing_MS (Expert):
**Q:**so in total i will have a mirror of the ram in nand, but load only the nk.bin part to ram, and binfs will extract the minimum it needs from nand?
A: It's bootloader's responsibility to loading nk.bin part to RAM. kernel needs to run before BINFS driver is loaded, and this is the reason why all the DLLs that are need to load BINFS must be in nk.bin. BINFS knows about everything other than nk.bin. Once BINFS is loaded, it's just another file system where we can read from.

BorMing_MS (Expert):
**Q:**How will the Binfs know when each dll resides in my NAND flash to load on demand?
A: It's magic :) BINFS knows the format of BIN file and it'll read the "chain information" from nand. Of course you need to have a NAND driver in the image such that we BINFS can read from NAND.

BorMing_MS (Expert):
**Q:**So BinFS is just a file system that read bin files from nand?.(raw chunks of memory + headers). how can it extract the dlls from there?
A: It knows the format of a bin file and it knows where the "chain information" is. So it knows where to find all the dlls.

renato_ms (Expert):
**Q:**Hi, I am using persistent storage configuration with flash drive mounted as root. I tried to move the recycle bin DB to the flash folder but for some reason it corrupts my FS. Why?
A: At what poiunt does your FS gets corrupted? Is it immediately?

renato_ms (Expert):
**Q:**It's corrupted after a reboot
A: I see it seems like the system is cutting power as it is trying to write to the FS. Are you using TFAT?

renato_ms (Expert):
**Q:**I am using the "RecycleBinEnableDBFile"=dword:1 to create the DB file. After the reboot the OS fails to start.
A: Yeah, but is your file system TFAT? (transaction safe)

renato_ms (Expert):
**Q:**We are using FAT
A: I see. I am checking on this right now.

renato_ms (Expert):
**Q:**We are using FAT
A: I am trying to talk to you in pvt so I can follow up with this. Are you not getting my pvt messages?

renato_ms (Expert):
**Q:**Try again. I lost ethernet for a while
A: I just did.

jlyons_msft (Expert):
**Q:**In CE 5.0 / 6.0 how to specify number of CPUs for the MP build?
A: That depends. If you're asking how to tell the build system to take advantage of all the processors on your desktop, you can set the BUILD_MULTIPROCESSOR environment variable. We recommend that you set it to the number of processors on your system + 1. Alternatively, you can set it to "0" and let the build system make an intelligent guess. If you are looking to build an OS image that takes advantage of multiple processors on a device, that is not supported in CE 5.0 or CE 6.0.

jlyons_msft (Expert):
**Q:**thanks jlyons for the mp build answer. As for CE multicore kernel support, we are guessing it is on the way? :D
A: Guess away

Neil [MS] (Expert):
**Q:**Can anyone point me in the right direction for validating a signed executable without using a trusted model in the OAL? I've looked at the CertUI example but I'm looking for an example that reads and validates a signed exe against a stored cert.
A: The certmod module (https://msdn2.microsoft.com/en-us/library/Aa909421.aspx) performs this validation.

Neil [MS] (Expert):
**Q:**Neil, thanks. Was that true in CE5 as well? (If not, what do you recommend?)
A: Certmod wasn't available in CE5. Appendix A in the PE format Specification (https://www.microsoft.com/whdc/system/platform/firmware/pecoff.mspx) discusses Authenticode image hashes and has some references to the certificate functions you'd need. I don't know of any sample code that demonstrates how to do this, though.

Soemin_MSFT (Expert):
**Q:**Is there a way to prevent the device from accessing network through activesync while debugging?
A: I believe WM 6.0 allows multihoming support in Active Sync setting. With that and by making the application connection manager unaware the packets should be routed on best interface as decided by the IP layer instead of connection manager.

Soemin_MSFT (Expert):
**Q:**I am developing on CE5. The device is connected to R&D network and my PC is connected to the office one. When I try to debug networking activity on the R&D network , The device tries to access the Office network through activesync
A: There is no connection manager on CE5. The IP layer makes decision on which interface to use. One way I can think of is to modify the routing table to allow packets through the R&D network. You can use sample utility from public\common\oak\drivers\netsamp\route.

mikehall_ms (Moderator):
**Q:**On XP, I can use the same name for both DLL and EXE applications, however, I am not able to use this on CE. Does CE support same names for application DLL and EXE?
A: having Foo.EXE and Foo.DLL should work - what is the error you are seeing when trying to load the DLL ?

mikehall_ms (Moderator):
**Q:**sorry Mike, I do not have the error for loading the DLL right now. I will investigate further as you indicated that it should work on CE
A: ok.

mikehall_ms (Moderator):
**Q:**Does anyone know what the schedule is for sending MEDC attendees the conference content on DVD?
A: we're going through media verification at the moment - I would assume that DVD duplication should be complete in a couple of weeks...

Christian (Moderator):
We’ve got about 5 minutes left in today’s chat concerning Windows CE. Our experts will be working on the last few questions.

jlyons_msft (Expert):
**Q:**Despite some of the posting stating that Platform builder 5.0 and Platform Builder 6.0 can coexist on the same development machine, are there any issues with running these both on the same machine? Should these be kept on different development machines?
A: There are some issues with installing both versions on the same development machine. If you choose to do so, you should read the Release Notes first and make sure to install PB 5.0 before installing PB 6.0.

Soemin_MSFT (Expert):
**Q:**USB question - I'm having trouble creating a composite device that loads the ActiveSync driver. When I set the device class code to 0xef, RNDIS works with ActiveSync but my mass storage device seems to get sucked into the ActveSync on the windows side. when I set the device class code to 0, I see the RNDIS device but it doesn't connect to ActiveSync.
A: Windows Mobile or Windows CE?

Christian (Moderator):
Hello everyone, we are just about out of time.

Christian (Moderator):
Thank you for joining us today for our Windows Embedded CE 6.0 chat!

Christian (Moderator):
A special thank you to the product group members for coming out.

The transcript of today’s chat will be posted online soon, to https://msdn2.microsoft.com/en-us/chats/default.aspx/transcripts/default.aspxM. We’ll see you again for another chat next month. Please checkhttps://msdn2.microsoft.com/en-us/chats/default.aspxfor the list of upcoming chats.

Christian (Moderator):
If you still have unanswered questions, let me suggest that you post them on one of our newsgroups, such as Microsoft.public.windowsce.platbuilder.

Top of pageTop of page