Windows CE 5.0 Live Chat! (May 25, 2005)

Posted: May 25, 2005

Please note: Portions of this transcript have been edited for clarity

Introduction

mikefos_msft (Moderator):
Welcome to today’s chat with the Windows CE team!
We are pleased to welcome our Experts for today’s chat. I will have them introduce themselves now.

mikehall_ms (Moderator):
Hi, I'm Mike Hall, a Technical Product Manager in the Mobile and Embedded Devices group.

Sue Loh [MS] (Expert):
Hi, I'm Sue Loh, a developer on the Microsoft Windows CE team. I primarily work on system performance and perf tools. I also dabble in the kernel and file system. I hope we can answer some of your questions today.

Mikecal_MSFT (Expert):
Hi everyone. I'm Mike Calligaro, and I'm a developer in the Windows Mobile Joint Developers Program (JDP) team.

JohnMarc_MSFT (Expert):
Good morning. I'm John Marcantonio, a Program Manager on the Windows CE Multimedia and Graphics team. My areas of ownership include the CE graphics stack (driver models, GDI, DirectX) as well as a number of multimedia components (codecs, WMP, OCX).

russellk_MSFT (Expert):
Hi, I'm Russ Keldorph. I work on the native C++ compilers for ARM, MIPS, and SH-4.

chetl_MSFT (Expert):
Hi, I'm Chet Laughlin I work as a developer in test on the International, Shell & GWES teams.

danjav_MSFT (Expert):
Hello, I'm Dan Javnozon. I'm the Windows CE product manager.

SaadLP_MSFT (Expert):
Hi I am Saad Puri, one of the Windows CE Multimedia Devs.

Michael_MSFT (Expert):
Hello, I am Michael Malueg and I am a Program Manager in Windows CE focusing on VoIP technologies

John Spaith [MS] (Expert):
Hi I'm John Spaith, a dev in the networking and services team.

gregsco_MSFT (Expert):
Hi, I'm Greg Scott and I work on the Windows CE Networking team.

benedetto_MSFT (Expert):
Hi this is Benedetto, I am a developer in the C++ compiler for Windows CE

LindaKim_MSFT (Expert):
Hi, I am Linda Kim, a OEM Program Manager in IP-STB technologies.

mikefos_msft (Moderator):
Let’s begin the chat. We welcome you to begin submitting your questions for our Experts!

Start of Chat

mikehall_ms (Moderator):
Q: why I'm not able to start the image in the flash version? But we can start the same flash image when connected to platform builder?
A: It could be that you have KITL enabled in the image - if you disable KITL the "release" image should boot ok.

Sue Loh [MS] (Expert):
Q: Hello! What are you going to do with 32 MB virtual address space? Are any IPC modifications being planned, so we are able to workaround this limit?
A: Hi! There is nothing in CE 5.0 or Windows Mobile 5.0 to really get rid of the 32MB limit -- and we cannot comment on what may or may not be in future releases. You can use IPC mechanisms like the point-to-point message queue to help call between processes, or I believe Mike Hall is getting ready to post you a link to a paper one of our MVPs, Doug Boling, wrote about escaping the 32MB limit. (If not I'll post it shortly)

mikehall_ms (Moderator):
Q: why I'm not able to start the image in the flash version? But we can start the same flash image when connected to platform builder?
A: You probably have KITL enabled in your image - remove KITL from the image and then download/boot the image.

mikehall_ms (Moderator):
Q: We don’t have KITL enabled in our flash image
A: what about kernel debugger?

Sue Loh [MS] (Expert):
Q: Hello! What are you going to do with 32 MB virtual address space? Are any IPC modifications being planned, so we are able to workaround this limit?
A: Here is the link to the whitepaper: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncenet/html/advmemmgmt.asp

Sue Loh [MS] (Expert):
Q: Another question concerning virtual memory. Is it possible to have different reserved (maximum) stack size for different threads in a process (to save virtual memory)?
A: I believe you should be able to set this on a per-thread basis. The CreateThread API takes a parameter for the stack size, that you can use along with the STACK_SIZE_PARAM_IS_A_RESERVATION flag.

mikehall_ms (Moderator):
Q: is the RDP client in v5 RDP 5.1 or 5.2 or is it just compatible?
A: Windows XP Professional Edition uses RDP 5.1. Microsoft Windows CE 5.0 uses RDP 5.5

Michael_MSFT (Expert):
Q: is the RDP client in v5 RDP 5.1 or 5.2 or is it just compatible?
A: It is equivalent in functionality to the RDP 5.2 specification

Mikecal_MSFT (Expert):
Q: Is Internet Explorer more compatible then the version in Pocket 2003? That is more websites see it as IE v5.5 or above?
A: The pIE team improved DOM support, so more scripting will work than has in the past, but they still report the User Agent string as IE 4.1. So no websites will see it as 5.5.

Sue Loh [MS] (Expert):
Q: Another question concerning virtual memory. Is it possible to have different reserved (maximum) stack size for different threads in a process (to save virtual memory)?
A: One other thing I should mention. The stack reservations are always in 64KB increments, so if you specify a size that's not a multiple of 64KB, it'll be rounded up to the nearest 64KB boundary. So if you were trying to save virtual memory by creating stacks smaller than that, it's not going to work. :-(

Mikecal_MSFT (Expert):
Q: I wanted to ask if it is possible in CE5 to gain phone access to the device while its locked using the mainpassword.cpl or a custom cpl file?
A: Emergency calls (911 in the US, 112 in other locations, etc) can be made from a locked device. Other calls should not be possible without unlocking the device first.

gregsco_MSFT (Expert):
Q: PPC allows only 1 Bluetooth connection. Will it be possible to have several simultaneous Bluetooth connections? It can be done with SDKs from Bluetooth vendors, but I want to be able to open several virtual com ports at the same time in a standard way.
A: Actually, PPC can allow more than one Bluetooth connection. It really depends on the BT hardware and if it supports something called "scatternet".
Regarding virtual COM ports, this answer will depend on the Bluetooth stack you are using. Most Pocket PCs use a third-party BT stack and I'm not sure if it has this limitation. The Microsoft BT stack (which will ship with many more devices in Windows Mobile 5.0) will allow you to create multiple virtual COM ports and use them at the same time.

mikehall_ms (Moderator):
Q: will there be better support for kiosk mode in CE5? SHFullScreen(hwnd, SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON); is too easy to hack through
A: Are you talking about Windows CE 5.0 or Windows Mobile ? - on Windows CE you can boot your device directly into your application without needing the Windows CE shell

JohnMarc_MSFT (Expert):
Q: I guess Im talking about the mobile version, since my app is for off the shelf devices
A: For Windows Mobile based devices that method is one of the current best approaches (without going to a GAPI-like full screen solution). It should be pointed out that for Windows Mobile devices (in particular PPC and PPC/PE devices) that the OEM will usually include a break out based on key input to recalibrate the touch screen. While this escape is device specific, if you're creating an application that is designed solely for Windows Mobile this is a consideration you should keep in mind.

Mikecal_MSFT (Expert):
Q: What changes / configuration additions need to be made on the device-side to enable ActiveSync over USB RNDIS? (Other than changing the device class to USB_DEVICE_CLASS_ACTIVESYNC). (With ActiveSync 4)
A: The changes are in your USB driver. We've changed the MDD/PDD model in CE5/WM5. If you update to that model, you'll get RNDIS for free. The new MDD handles RNDIS, USB (serial) Active Sync, and mass storage inherently.

stjong_MSFT (Expert):
Q: I understand that Wireless (802.11) synch has been disabled becuase of security, is this feature going to be address for the next release?
A: Not only wireless, but also wired / Ethernet sync has been disabled due to security. Enabling this feature again is still in the discussion process. Today it will only allow DTPT through RNDIS.

mikehall_ms (Moderator):
Q: Has CF2.0 been released yet ? if so how do you reference it in PB5 to build into the image
A: No, CF 2.0 is not released yet - this will be released as part of Visual Studio 2005

mikehall_ms (Moderator):
Q: Can anyone comment on the state of the x86 emulator for the VS2005 release? I've heard rumors it will be ARM-only.
A: Yes, VS 2005 ships with an ARM based emulator - but, remember that you can still build an x86 Emulator image from PB and then have VS 2005 target that image - VS 2005 would treat the x86 emulator the same as a 'physical' device

Mikecal_MSFT (Expert):
Q: Do you think Platform Builder is providing the missing Dll and EXE when connected to PB?
A: That's certainly possible. Do you have any way at all to get any debug data out of the device when not connected to PB? Maybe a serial connection, or outputting stuff to the screen? It would be very helpful to know how far you go before it stops booting. The typical issue here, though, is that the image is a debug image and is waiting for the kernel debugger. For your flash version, are you sure you disabled debugging? Did you set IMGNOKITL=1 and IMGNODEBUGGER=1?

stjong_MSFT (Expert):
Q: But does it handle ActiveSync over USB RNDIS inherently?
A: Only RNDIS and only when DTPT is enabled which is what you get out of the box.

Sue Loh [MS] (Expert):
Q: I am writing a data acquisition application (porting from Linux). I have just come across a major issue - hard drive throughput. I am getting about 3MB/s throughput. On a quick test on XP I can get about 85MB/s throughput. Should I expect better on CE? How?
A: With that sort of shortfall, something important must be configured wrong. You're using the ATAPI or ATADISK block driver, right? I'd check its settings. Check whether it's set up to use DMA (There are some transfer mode settings for different kinds of DMA). You may also find that if you're doing a large sequential read or write, the cache may get in the way, so if you need to do a lot of this then you might want to disable the disk cache too. Sorry, I've been looking for more concrete information to give you but can't seem to find any right now.

Sue Loh [MS] (Expert):
Q: Does setting our embedded device to run in full kernel mode mean that we won't take as much of a performance hit by calling KernelIoControl? (i.e., going in/out of kernel mode)
A: KernelIoControl will get a little cheaper, but not as dramatically as some of the other APIs, because kernel APIs are cheaper to start with.

Mikecal_MSFT (Expert):
Q: Hello, I'm working on a ppc with Pocket PC 2003 2nd edition. Is it possible to sample the incoming stream of a phone call and pass it through a filter before passing it to the speaker? and same question reversing the order (mic>filter>out)?
A: Are you the OEM or an ISV? It really depends on what the hardware is capable of. For Bluetooth headsets to work, the data needs to be passed through the CPU. And an OEM could conceivably filter that data in their drivers. If the device doesn't support Bluetooth headsets, it's likely it doesn't have the right hardware paths for this to work at all.

stjong_MSFT (Expert):
Q: I'm not sure what you mean "only RNDIS" and "only when DTPT is enabled" .... because the PowerPoint slides I have say the device class must be changed ....
A: As MikeCal has mentioned, if you use the new RNDIS driver model in WM5 then the RNDIS USB function class driver will handle this for you. You need to provide the PDD portion of the USBFN driver which is class neutral (i.e. doesn't care what class driver is running on top of you, be it RNDIS, Mass Storage, Serial,...)

[MS] Travis Hobrla (Expert):
Q: Can we use EdbgOutputDebugString() method to print data from custom application? If not how can we print data over serial port ?
A: Yes, you can, but you will need to link the application with the libraries that contain the definition for this function and its helpers.

chetl_MSFT (Expert):
Q: will there be better support for kiosk mode in CE5? SHFullScreen(hwnd, SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON); is too easy to hack through
A: SHFullScreen has a few caveats when your trying to lock a device so your application is always on top (kiosk style). By itself it is not designed to create a 'kiosk' mode. Most of these limitations are described and the author discusses a few options to work around on https://www.pocketpcdn.com/articles/fullscreen.html which may be helpful to you. There are several other full screen libraries and application articles on the same website which may help you implement a kiosk mode. I'm just trying to help, I can't vouch for everything said on that website :) To my knowledge there are no changes to SHFullScreen in Mobile 5.0

Mikecal_MSFT (Expert):
Q: Yes I have set IMGNOKITL=1 and IMGNODEBUGGER=1
A: What else is different between the version that works and the one that doesn't? Is it just that one is connected to PB and the other isn't? They're both stored in flash, correct?

mikehall_ms (Moderator):
Q: Mikehall: (1/2) I'm not sure if I follow you where you said "have VS 2005 target that image." Do you mean that VS could target the 5.0 image built w/ PB and launch the old x86 emulator instead?
A: no, you would build your o/s image in PB, launch the x86 emulator from PB and then target the running emulator image from VS 2005

mikehall_ms (Moderator):
Q: Mikehall: (2/2) (The reason that I'm asking is because I'm testing VS2005 beta 2 but we're still using CE 4.2 and haven't upgraded to PB 5 yet, so I'm not sure what I should expect when we eventually upgrade.)
A: ah, ok, the experience **should** be pretty painless

Mikecal_MSFT (Expert):
Q: yes both images are stored in flash.
A: So the ONLY difference between the image that boots and the image that doesn't is IMGNODEBUGGER and IMGNOKTIL?

stjong_MSFT (Expert):
Q: I'm not sure what you mean "only RNDIS" and "only when DTPT is enabled" .... because the PowerPoint slides I have say the device class must be changed ....
A: To follow up on this, if you have WM5 installment, check out the code in public\common\oak\drivers\UsbFn\class\rndis\rndisfn.cpp around line 2087 where it reads the "UseActiveSyncIds" and if set the code sets USB device descriptor and interface descriptor accordingly. You will need to do this if you continue to use Windows CE 4.2 monolithic RNDIS function driver model.

Sue Loh [MS] (Expert):
Q: I would like to share data between 2 console applications (no gui interface). What is the best mechanism for this? Syncing seems quite easy (using named objects) but what about data? (Just a quick pointer to correct routines would be great - thanks :) )
A: The point-to-point message queue is pretty handy for that: CreateMsgQueue should get you started.

Mikecal_MSFT (Expert):
Q: Mikecal_MSFT: on the (mic>filter>out) direction I was hoping to mute (tapi) the mic, record the voice and inject it (somehow) on my own, does this seem feasible to you?
A: Again, are you an OEM or an ISV? An OEM in control of his drivers can do almost anything. An ISV is beholden to what the OEM enabled in this case.

Mikecal_MSFT (Expert):
Q: ja ONLY difference between the image that boots and the image that doesn't . But we cann't boot the flash image.
A: Then your idea that it may be loading a necessary DLL over PB is a reasonable one. Try removing all of the DLLs and EXEs from your release directory and booting under PB. If it's loading one of them, it's getting it from the release directory. If you temporarily remove all of the DLLs and EXEs from that directory and the system stops booting, then you'll know that you're missing one of the files you removed.

Sue Loh [MS] (Expert):
Q: The Storage Manager CPL does not currently allow third party file systems to easily integrate. Code changes are needed to load utility DLLs for filesystems other than FAT. Does Microsoft plan to enable third party filesystems to integrate in the future?
A: I don't know what our plans are, but I'll make sure to suggest this.

Mikecal_MSFT (Expert):
Q: Does Plat form Builder help to provide missing dll and exe when KITL and Kernel debbuger is enabled?
A: Yes, if the system tries to load a file and it can't find it, it goes to the release directory PB loaded the image from and searches there. If it finds the file there, it will load it over the wire. This is intended for development of drivers and things. You can remove the driver from the image, flash the image, and then make changes to the code without needing to flash each time.

Sue Loh [MS] (Expert):
Q: Independent H/W vendors implement startup procedure after hard reset for _user_ applications through some .ini file placed near nk*.bin file. What about standardizing this, because among a dozen supported brands only one implemented such feature?
A: I'm trying to understand what you're asking for here. You want some persistent way to specify startup applications without storage that persists across a cold boot?

mikehall_ms (Moderator):
Q: Are there new Win32/MFC API calls in WCE5.0?
A: MFC isn't updated for eMbedded Visual C++ 4.0 SP4 - expect to see a new drop of the .NET Compact Framework (v 2.0), MFC, ATL, STL with Visual Studio 2005

stjong_MSFT (Expert):
Q: stjong: Thanks .... I found what you described ... I've got CE5 and WM5 installed - so I had grepped in the CE5 tree and didn't see that in its rndisfn.cpp - but I do see it in the WM5 rndisfn.cpp.
A: Yes the change is to accommodate AS requirement hence it's in WM5 only.

mikefos_msft (Moderator):
Q: Final question -- Is it possible to ask questions after the chat to the experts? If yes to whom I can send my question
A: I'd recommend that the newsgroups would be the best place to post further questions. Your peers, Microsoft folks and Embedded MVPs hang out there and are willing to assist. microsoft.public.windowsce.platbuilder would be one place to start.

JohnMarc_MSFT (Expert):
Q: Is the CE5 animation control suitable for building AVI's on the fly out of bitmaps (for showing some high-speed machinery) or is it better suited to just showing pre-animated AVI's (like the standard file flying from folder to folder).
A: The animation control in CE is restrictive in scope and generally suited for only creating pre-animated sequences (much like the one you're referring to in the OS). While these can be compressed or uncompressed AVI files they do carry a number of restrictions, such as not being able to include a sound channel.

Sue Loh [MS] (Expert):
Q: Yes, I want some kind of autoexec.bat ;) for Windows CE after COLD BOOT. So user could see our application icon after COLD BOOT (even if RAM Backup is disabled).
A: Are you an application writer or an OEM? Cold boot is cold boot, there's no persistence. If an OEM has persistent storage to save things like this into, then they should mount that in a way that your data persists, rather than making up some non-standard startup mechanism. Then you could just put your data into the registry or into the right folder, and have it persists.

Sue Loh [MS] (Expert):
Q: Is the Windows CE-"part" different in Pocket PC and Smartphone, or are they exactly the same in both platforms?
A: There are OS differences between PPC and Smartphone. For example PPC has a touch screen while Smartphone does not.

Mikecal_MSFT (Expert):
Q: Is the Windows CE-"part" different in Pocket PC and Smartphone, or are they exactly the same in both platforms?
A: The base OS is the same version in both PocketPC and Smartphone, but the OS is componetized and the two devices use some different components. For instance, smartphone doesn't have the touch screen components, etc.

LindaKim_MSFT (Expert):
Q: What about increasing RapiSrv.exe reserved stack size by 64K? We had stack overflows with CeRapiInvoke...
A: You need to investigate the stack overflow OR increasing stack size might not help...do you have a stack trace?

Mikecal_MSFT (Expert):
Q: Will GAPI be developed any further?
A: GAPI is end of life. Our game story moving forward is DirectDraw and D3DMobile.

JohnMarc_MSFT (Expert):
Q: Can you tell me something about Direct 3D mobile? Is it COM-based?
A: Yes - D3DM is a COM based model based on the DX 8 API signatures from the desktop. As the chat is winding down, I would refer you to the MSDN documentation for more information at: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcemultimedia5/html/wce50oridirect3dmobile.asp

Mike Thomson [MS] (Expert):
Q: What about non-client (NC) area messages support as in desktop??
A: NC messages are still not available. What do you need to be able to do? Is this for a PPC or embedded device?

Dac_MSFT (Expert):
Q: Regarding interoperability of PB4.2 PB5.0 and eVC4.0 and VS2005 : Could someone precisely outline all posible interoperbility scenarious for both native and managed code ?
A: PB 4.2: EVC4 SP2, EVC4 SP3 (native); VS.NET 2003 (managed); PB 5.0: EVC 4 SP4 (native), VS.NET 2003 (managed); VS 2005 (managed + native)

Mikecal_MSFT (Expert):
Q: Mikecal_MSFT: sorry, took me a while to understand, I am an independent developer... that's why I'm hoping for the solution (in one direction at least) as I mentioned... I think muting and recording should work on the device while in conversation, sh
A: Unfortunately, there is no standard devolper interface for doing this. It's going to be difficult for you to do what you want to do without help from the OEM whose device you're working on.

Sue Loh [MS] (Expert):
Q: Starting an app after cold boot: The autorun facility will do this. But sometimes autorun works with CF and storage cards, and sometimes with persistent memory. The lack of consistency is frustrating.
A: Autorun? Are you talking about the Windows Mobile code that auto-runs an app when you insert a storage card?

Mikecal_MSFT (Expert):
Q: The Dell Axim x50v has a very good graphics processor.. does WCE5.0 have good support for taking advantage of new graphic processors for handhelds?
A: CE5/WM5 has DirectDraw and D3DMobile. So long as the OEM develops the appropriate drivers, you should be able to use those mechanisms to take advantage of improved graphics hardware.

LindaKim_MSFT (Expert):
Q: Ohh! I have a qustion about CeRapiInvoke! Why it can load dlls only from \Windows folder?? I want to specify full path to the internal flash card and it does not work :(
A: That might be by design. There might be a workaround like "mounting your internal flash card" as root.

Michael_MSFT (Expert):
Q: None of the earlier versions of CE have included a full sync feature with Outlook/Activesync when it comes to notificaton of Tasks and All-day Event. Is this changed in CE5?
A: ActiveSync did not change from 4.2 to 5.0, so whatever is available in 4.2 remains.

Sue Loh [MS] (Expert):
Q: Yes, some standard for OEM vendors in Autorun facility after Cold Boot would be great!
A: I still really don't understand your needs. We provide support for persistent storage, so that "cold" boots still have all your data. Anything else is a hack. What am I misunderstanding? Are you asking about Windows Mobile specifically (PocketPC and Smartphone)?

Mike Thomson [MS] (Expert):
Q: We support both PPC and .Net devices (along with desktop version). We had to draw our own title bar to be able to put our buttons there. Having NC messages for that would be great.
A: As an OEM you can proably get access to do this. On a PPC I don't think the UI model really wants you to put a caption on the dialog.

Sue Loh [MS] (Expert):
Q: Yes, some standard for OEM vendors in Autorun facility after Cold Boot would be great!
A: If so, Windows Mobile 5.0 is all persistent storage based. No more cold booting.

mikefos_msft (Moderator):
Thank you for joining us today for our chat with the Windows CE team.

We welcome any feedback about this chat. Please forward comments, suggestions or any other feedback to edevfdbk@microsoft.com

Just a reminder that we’ll be hosting a Platform Builder Documentation chat tomorrow. Please see https://msdn.microsoft.com/chats for more information.

We hope to see you again for a future chat!

For those questions that our experts were unable to answer today, I'd respectfully request that you post them to a wider audience in the microsoft public newsgroups. I do apologize for any inconvenience on this.

Top of pageTop of page