Windows CE 5.0 and CE 6 Beta (September 27, 2006)
Chat Topic: Windows CE 5.0 and CE 6 Beta
Date: Wednesday, September 27, 2006
Please note: Portions of this transcript have been edited for clarity
**Sue Loh [MS] (Moderator):
** Welcome to today’s public chat. Our chat today covers the topic of Windows CE 5.0 and CE 6 beta!
**Sue Loh [MS] (Moderator):
** We are pleased to welcome our Experts for today’s chat. I will have them introduce themselves now.
*Introductions
**MikeCal [msft] (Expert):
** Hi, I'm Mike Calligaro and I'm a developer who works on drivers and other low level sorts of things.
**andyraf_MSFT (Expert):
** Hi. I'm Andy Raffman. I'm a dev lead on the low-level multimedia team. We own GDI, DirectDraw, Direct3d Mobile, and audio APIs.
**russellk_MSFT (Expert):
** Hi, I'm Russ Keldorph. I work on the native C++ compilers and libraries for Windows CE.
**Michael_MS (Expert):
** Hello, I am Michael Malueg, lead PM in the Windows CE group focusing on our target device efforts such as VoIP phones and Thin Clients.
**MikeThom_MS (Expert):
** I am Mike Thomson, Group Program Manager in Windows CE.
**GLanger_MS (Expert):
** Hi, I'm Glen Langer and I am a Program Manager for General Embedded BSPs.
**Tomget [MS] (Expert):
** I'm Tom Getzinger, development manager for Multimedia
**lemo [msft] (Expert):
** Hi, I'm Leonard Mosescu. I work on the native C++ compilers and libraries for Windows CE.
**AmmonL [MS] (Expert):
** I'm Ammon Larson, a developer on the Windows Mobile Shell team.
**Sue Loh [MS] (Moderator):
** Hello, I’m Sue Loh, a developer on the Windows Devices Core team at Microsoft. I work on OS tools, and have worked on the kernel and file system in the past. I’m also moderating today’s chat. I hope we can answer some questions for you today!
**Venu_MSFT (Expert):
** Hello, I'm Venu Yalla, Program Manager for the Windows CE BSP team.
**adyba_MSFT (Expert):
** Hello, I'm Adam Dyba. I'm a dev in Windows CE core networking group.
**Oguz Sinanoglu[MSFT] (Expert):
** Hi, I'm Oguz Sinanoglu, a software developer in Windows CE BSP team.
**JonLV_MSFT (Expert):
** Howdy. I'm Jon LeVee and I'm the Reliability SDE Test Lead
**KarelD [MS] (Expert):
** Hi, I'm Karel Danihelka - software developer in device driver team.
**stjong_MSFT (Expert):
** Hello, I'm Soemin and I'm a developer in Windows CE networking team.
**Don Weber [MS] (Expert):
** My name is Don Weber and I’m a Program Manager on the General Embedded BSP team team.
**Sue Loh [MS] (Moderator):
** Let’s begin the chat!
*Start of Chat
Juggs (Expert):
Q: I need to implement connectivity from PDA w/ USB host to our new hardware which exposes RNDIS and proprietary custom control API interfaces via USB. I am expererienced w/ CE apps but not drivers. How do I get started, what references, etc.?
A: For details on USB Host - I would refer to https://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceddk5/html/wce50conUSBMassStorageClassDriverConfigurationImplementation.asp. For Details on USB Function Drivers, I would refer to https://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceddk5/html/wce50conUSBMassStorageClassDriverConfigurationImplementation.asp.
stjong_MSFT (Expert):
Q: What drivers in 5.0 Platform Builder would be good sample code for developing USB-Host based rNDIS and custom API drivers? Thanks.
A: Are you asking about the RNDIS host driver or the USB host controller driver?
stjong_MSFT (Expert):
Q: I expect to need to write a rNDIS driver and custom interface driver to control our new HW; it connects over USB.
A: The RNDIS host driver should not be modified, it runs as client driver for USB driver. All your platform need to do is to provide the USB driver support.
stjong_MSFT (Expert):
Q: Thanks Soemin, does that mean that the rndis driver will work with any rndis provider if the USB host of the PDA works? Sorry to ask, I'm just an app-level guy...
A: Yes. But note that PDA typically provides USB function controller instead of host controller. For PDA case it will be RNDISFN driver that will be used. Sample code for this RNDISFN driver is in public\COMMON\oak\drivers\UsbFn\class\rndis.
David_Liao_MS (Expert):
Q: Thanks. That reflects what I am finding, USB Host functionality on PDAs is rare and sparsely documented but some of the newer rugged devices do offer it. Hard to learn about. Any reference suggestions (books, urls, source code, etc)?
A: It is same as Windows Embedded. You can take look at Windows Embedded to find out what you need.
andyraf_MSFT (Expert):
Q: Does CE 6.0 beta have Direct Draw support (for display driver development)?
A: Yes, CE6 supports DirectDraw, and also Direct3d Mobile. There are a number of internal infrastructure changes and bug fixes (DirectDraw was essentially rewritten), but we've tried as hard as possible to retain driver compatibility, and existing binary drivers might work. Having said that, there are a number of internal OS changes (e.g. the overall memory architecture) that might require you to modify the driver to get it working, so we can't make any guarantees.
Tomget [MS] (Expert):
Q: I was referring specifically to the BETA. Does the CE 6.0 Beta have DD support? I'm getting some compilation errors about missing include files when I tried to compile our driver on CE 6.0 Beta.
A: What header files are missing?
KarelD [MS] (Expert):
Q: What, if anything, has been changed to the GWES as far as the display driver is concerned. Can a CE 5.0 display driver be compiled on CE 6.0 with little changes?
A: If driver is well written you don't need change anything.
andyraf_MSFT (Expert):
Q: What, if anything, has been changed to the GWES as far as the display driver is concerned. Can a CE 5.0 display driver be compiled on CE 6.0 with little changes?
A: The number of changes to GDI/DirectDraw/GWES are too numerous to count, but for the most part they involve bug fixes, perf/security improvements, and getting things to run on the new kernel model. Existing drivers may work, but there are probably some things that could cause problems. For example, any drivers that try to pop up their own UI are probably going to have issues, since drivers now run in the kernel.
andyraf_MSFT (Expert):
Q: I'd imagined this is a "no" due to the new OS architecture, but is a CE 5.0 display driver binary-compatible with CE 6.0?
A: I think it's "unlikely" that a CE5 binary will run on CE6 due to all the other changes in the OS, but I don't believe we've changed the overall display driver model so the porting effort should be minimal.
Travis Hobrla [MS] (Expert):
Q: I'd imagined this is a "no" due to the new OS architecture, but is a CE 5.0 display driver binary-compatible with CE 6.0?
A: No, a CE5.0 display driver will typically need some porting work to function correctly in CE6.0. If you only have a binary, you'll have to rely on whoever supplied you with that binary to do the porting.
andyraf_MSFT (Expert):
Q: Other than popping up a UI, what are some of the other things to watch out for when porting a 5.0 display driver to 6.0?
A: There are some blogs on https://blogs.msdn.com/ce_base/ for information about the CE6 driver model. Also the microsoft.com site should have some documentation. The biggest change is the memory architecture, and some APIs (e.g. SetProcPermissions) are now gone.
Travis Hobrla [MS] (Expert):
Q: Hi, Will the platform manager based remote tools like the file viewer, the process viewer etc work with the Windows Embedded CE 6.0 PB now that it is part of Visual Studio 2005?
A: Yes, these should continue to work.
Travis Hobrla [MS] (Expert):
Q: Was this available in Beta1?
A: I assume you're asking about the remote tools. Yes, they were available in the beta. I think the quality and performance of the tools has improved since the beta.
Sue Loh [MS] (Moderator):
Q: Hey guys Is there any place where i can find more information about the Windows CE 6.0 architecture (memory, process, kernel, scheduling, driver model) I know i will get to know more about it on the 1st November, but before that...Thank You!
A: Here are some good links: https://blogs.msdn.com/mikehall/archive/2006/09/07/745254.aspx https://blogs.msdn.com/mikehall/archive/2006/09/07/745261.aspx
gregsco_MSFT (Expert):
Q: Soon I'll be dev'ing a PC/SC reader driver to run on WM50 PPC using PB. I was planning on my driver using Winsock API's to target the Bluetooth interface. 1) Are Winsock API's available to a driver? 2) Do you know of any potential pitfalls to avoid?
A: 1) Yes, winsock APIs are available to a driver. 2) I can't think of any pitfalls at the moment.
gregsco_MSFT (Expert):
Q: (VS2005,WM50,PPC) Is there any way to programmatically turn the Bluetooth hardware on if it's not already (registry?). I don't want to fake out keystrokes to check the box from the settings, that's really cheesy.
A: Look at the BthSetMode and BthGetMode APIs. https://msdn.microsoft.com/library/default.asp?url=/library/en-us/mobilesdk5/html/moconChangingBluetoothRadioMode.asp
gregsco_MSFT (Expert):
Q: (VS2005,WM50,PPC) Other Bluetooth devices can see my PDA by reading its friendly name and address but none can see port number nor service profile ID that would indicate SPP (0x1101) is offered. Is this intentional in the bluetooth stack?
A: You can expose an "incoming" Bluetooth virtual COM port using the PPC Bluetooth UI. That will expose the service UUID for SPP. If you don't want the use the UI, you can expose an SDP record yourself using APIs provided by the BT stack. Have a look at WSASetService on MSDN (as it relates to BT). There are a bunch of samples that expose SDP records that ship with Windows CE 5.0 Platform Builder in the directory public\common\oak\drivers\bluetooth\sample and public\common\sdk\samples\bluetooth.
MSFT_Charlz (Expert):
Q: (VS2005,WM50,PPC) I will be switching from VS2005 to PB to develop PS/SC driver. Will PB debug my off-the-shelf (AudioVox 6700 from Sprint) PDA using ActiveSync like VS2005 does? Must I get the OS Image from AudioVox first or is it not needed?
A: The PB debugger is a "kernel" debugger vs. an "application" debugger in VS2005. To use the kernel debugger, the image needs to be built with hooks in to enable the debugger. If the image shipped on the device doesn't have these hooks (I bet it doesn't) then you won't be able to debug it. So I think application debugging via VS 2005 is where you are unless you can get support from the OEM.
gregsco_MSFT (Expert):
Q: Followup Bluetooth-Winsock: Followed example (bthchat.vcprj) on how make PDA master and register (advertise) a service using WSASetService. But other devices still can't see service profile ID and port number to connect to while I'm waiting on accept().
A: Did you ensure that WSASetService returned a successful error code?
gregsco_MSFT (Expert):
Q: Socket Bluetooth question. (VS2005,WM50,PPC) If I programatically pair with a remote device, the WinCE PIN dialog and then Partnerships list is then shown. But the SPP service is not listed. The name of the remote device is there but not which profile
A: If you follow the sample code and expose an SDP record using WSASetService (and it returns without error) then the SDP record should be exposed. If other devices cannot see the SPP service listed then my theory is that WSASetService failed (or the SDP record binary blob has the wrong UUID).
gregsco_MSFT (Expert):
Q: One of the required elements of the blob is a handle value. But I can't know that a priori to the WSASetService so I'm setting it to zero. Is that my problem? I definitely am including the SPP UUID
A: What is the error code returned by WSASetService? I assume you are talking about pRecordHandle which is an out param. You should assign this to a pointer whose contents is zero.
*pSdpRecord=0;
blog.pRecordHandle = pSdpRecord;
gregsco_MSFT (Expert):
Q: Sorry, no error returned from WSASetService at all. The handle I'm referring to is the SDP record element within the blob itself, not the structure member you mentioned (pointer to a zero value to rcv value)
A: Hmm, I'm stumped. Does the sample code work for you unmodified? Can you verify that multiple client machines (PC, PPC, etc) cannot see the SDP record? If that doesn't work feel free to send me an email with the info (and possibly code snippet).
JonLV_MSFT (Expert):
Q: I am currently running HOPPER.EXE tests on my application. I am using a focused approach with a background process that calls CreateProcess() on my app every 10 seconds to keep it in foreground. I often end up with a "locked" menu on the screen and the start menu is dead. Hopper stops because the start menu stops responding. How is it that my right-soft key menu is "stuck" on the screen when I have no code running in its popup event? shouldn't it disappear when my app is minimized???
A: Rather than using CreateProcess(), you should use the command line switch on Hopper that keeps focus on a specific application. Have you tried this?
JonLV_MSFT (Expert):
Q: According to this article and Steve Henderson, the "/a" option is deprecated and this is the right way to do it: https://blogs.msdn.com/hopperx/archive/2005/11/30/498113.aspx
A: Rob, let me do a little research and get back to you. There were some issues with application switching, however my understanding is that we had fixes to hopper that made it better.
John Spaith [MS] (Expert):
Q: Can an CE 5.0 product with embedded web page interface serve those web pages to a PDA connected to it via USB?
A: Assuming you use RNDIS with the CE 5.0 side as RNDIS host and PDA side as the client, this should just work.
PaulT_MVP (Expert):
Q: Can an CE 5.0 product with embedded web page interface serve those web pages to a PDA connected to it via USB?
A: Since no one else has taken this on... Yes, in theory, but you'd have to be sure of a lot of things. Those that come to mind are: the PDA has to look like a RNDIS device, the CE device has to retrieve an IP address from the PDA over this connection, the Web server has to be set up to serve pages over that network connection, the PDA would have to use that network-over-USB connection to connect to the Web server. That is, I think that this would probably work if you had a Windows Mobile 5 device and included USB RNDIS support in your CE OS, etc. I don't recall hearing of anyone actually doing that, though.
John Spaith [MS] (Expert):
Q: I have tried to use the VS2005 wizard to convert an ISAPI from EVC++ to VS2005, but there seem to be a lot of missing pieces after it is done. The code won't compile, or link. Once I figured out how to get past those hurdles, it won't run.
A: I'm not familiar with the VS2005 wizard, but if you could share more details about what was missing that could help. And how complicated is the ISAPI? If you're just using the wizard to setup some build rules and get the files copied over, it may (?) end up being less work to recreate the project in VS2005 and import the existing ISAPI files.
MikeCal [msft] (Expert):
Q: Hi,I am new to WINCE can i use WINCE as normal desktop operating system like our Windows 2000
A: There have been CE devices that have a normal keyboard and monitor or TV that act like desktop computers, but applications written for desktop windows don't run on Windows CE. So, while you can do some desktop things, like browse the web or read email, but any applications will need to be written for your device.
PaulT_MVP (Expert):
Q: I have a desktop application developed in VC++ interacting with control cards which is currently running on windows2000. can i port that application to eVC++ is there any advantage
A: The reason to port it would be because you need to run it on a Windows CE-based device. You don't have to compile it with eVC++, if you don't want to, as long as the target device is running CE5 or CE6. The Visual Studio 2005 environment supports native code compilation for Windows CE targets.
MikeThom_MS (Expert):
Q: can i boot with wince same as other operating systems on my desktop pc
A: For the most part the answer is yes. There is a floppy boot method as well as a HD boot method. One is refered to as the BIOS boot loader.
MikeCal [msft] (Expert):
Q: i want to install wince in my desktop as a normal operating system, that means i want to boot with wince is it possible??
A: It's pretty unlikely that there will be CE drivers for your desktop hardware. We have devices we call "CEPC" here, but they only work with certain video cards, etc. A better option for you would be to install Visual Studio 2005 and use the CE Emulator images. That would let you use CE from within your desktop computer and develop software for it.
mikehall_ms (Moderator):
Q: I have a desktop application developed in VC++ which is currently running on windows2000. I want to use wince insted of windows2000 and eVC++ insted of vc++ for the same application. can i use like that? if yes is there any advantage?
A: yes, you can use eVC to develop the Windows CE application - note that there are a number of API differences between the desktop and Windows CE, and also that Windows CE is UNICODE throughout where as most desktop applications assume ANSI - you may need to rework some of the application UI/flow/code to adapt the application to run on Windows CE based devices.
MikeCal [msft] (Expert):
Q: I have a desktop application developed in VC++ which is currently running on windows2000. I want to use wince insted of windows2000 and eVC++ insted of vc++ for the same application. can i use like that? if yes is there any advantage?
A: You will need to port the application to WinCE. CE is an embedded system that has a subset of the Win32 apis. It's possible to write an application that can be compiled to run on both, but if you start with the desktop and happen to use a lot of apis that aren't supported in CE, you'll have to spend time rewriting your application.
stjong_MSFT (Expert):
Q: Have there or will there be defined an OID-api for WiBro/WiMax devices on Windows CE? Will there be an higher level API to control and set up WiBro/WiMax devices?
A: This decision has not been made yet.
Sue Loh [MS] (Moderator):
Q: How can I use the resulting log file from a run of AppVerifier on my .NET CF 2.0 application? What tools exist for .NET for making sense of the stack addresses, etc.?
A: I don't think there are any helpers to resolve .NET stack addresses. AppVerifier is really for tracking native heap allocations. I'm not sure it's going to be useful for managed code, since your memory is allocated differently. There are managed memory tracking tools, but I'm not that familiar with them -- I would follow links off of pages like https://blogs.msdn.com/stevenpr/
Sue Loh [MS] (Moderator):
Q: My pc can't use the taskmgr. when I press alt+ctrl+del, there nothing. why ? how to deal it ?/.
A: Sorry, this chat is for Windows CE -- we're not going to be able to help you with non-CE questions.
MikeThom_MS (Expert):
Q: There seems to be a performance problem on IE on WinCE 5.0 when loading a page that has a HTML table that doesn't fit completely on the screen vertically (scroll bar needed). An extra delay of 2-3 seconds can be noticed. Is this a known issue? Any fix?
A: I don't know that this is a know issue at this point. Can you point to a specific page for testing and then provide your name/email for follow-up.
Toni_MS (Expert):
Q: Is CE 6 ready to run on the same platform as my production WinCE5 PB? At the MEDC2006 we were told not to run the CE6 beta on the same machine due to conflicts with the target communications.
A: The RTM (release to manufacturing) Windows Embedded 6.0 bits are side by side with Windows CE 5.0. The only caveat is install/uninstall order. You must install 5.0 then 6.0 and if you choose to uninstall 6.0 then 5.0.
MikeCal [msft] (Expert):
Q: When I use CETK to test Touch Panel, it's hook TouchPanelCallback function. Probably something wrong, I can't react with it, how to overcome this situation? I can rebuild it from source. But I don't know how to react it, thanks.
A: I assume this is a PocketPC, correct? Outside of the CETK, does your touch driver work? If you tap the screen, does the system react?
Avram Wahba [MS] (Expert):
Q: How can I prevent multiple instances of my .NET CF 2.0 application from running on WM5.0 smartphone? built-in multiple instance checking seems broken. See this for more information: https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=724870
A: This is how I did it for a desktop .NET application. I believe the same code would work for .NET CF:
foreach (Process p in Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName))
{
if (p.Id != Process.GetCurrentProcess().Id)
{
MessageBox.Show("Only one instance of this application can run at a time.", "Exiting Program", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
Avram Wahba [MS] (Expert):
Q: Avram: What about setting focus to the process? i.e., not just exiting out, but then doing a GetWindowThreadProcessID() or something so we can set focus to it???
A: Well, the code that I posted actually causes the second instance of the process to exit, not the first one.
Avram Wahba [MS] (Expert):
Q: Avram: Yes, I understand that. But what I mean is before exiting the 2nd instance/process, I'd want to bring the 1st process to the front--so as to provide what should be default behavior on the smartphone--which normally happens automatically.
A: You'll have to use p/invoke to use this function, here's some more code for you: [DllImport("coredll.dll")] private static extern int SetForegroundWindow(IntPtr hWnd); System.IntPtr hwnd = p.MainWindowHandle; SetForegroundWindow(hWnd)
PaulT_MVP (Expert):
Q: How can I prevent multiple instances of my .NET CF 2.0 application from running on WM5.0 smartphone? built-in multiple instance checking seems broken. See this for more information: https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=724870
A: That's definitely broken. You can P/Invoke to CreateMutex() to create a named mutex. You should get a handle back. After you do, check GetLastError() to see if ERROR_ALREADY_EXISTS is set. If so, there's already an instance of your program running; exit the new instance.
PaulT_MVP (Expert):
Q: I've tried that and it still does not work. I've also read this thread: https://groups.google.com/group/microsoft.public.dotnet.framework.compactframework/browse_thread/thread/e8352589e189e29a/56673cd042e7578a?lnk=st&rnum=1#56673cd042e757
A: And the thread didn't help? How are the two instances being launched? Is there any amount of time you can wait when launching the second application *will* detect a previously-running version? If not, I have to believe that your code is wrong; start a new thread in the newsgroup. If so, double-check that you are requesting ownership of the mutex in your CreateMutex() call.
PaulT_MVP (Expert):
Q: Correct, if I wait awhile until the app is loaded, then the code works and does not launch another app... but if I press ENTER several times in a row, it will end up with 3 4 5.. etc. instances running when all is said and done.
A: Check that you're asking for ownership of the mutex. That should be serialized inside the OS and should assure that only one program can get it. If that seems not to be the case, again, start a new thread in the newsgroup, where everyone can look at the code, etc. and make sure that I'm not all wet.
PaulT_MVP (Expert):
Q: Code is as follows:
public static bool IsInstanceRunning(string key)
{
// note we don't hold onto the handle because it will be closed when our process terminates
if (CreateMutex(IntPtr.Zero, true, key) != 0)
{
return (GetLastError() == ERROR_ALREADY_EXISTS);
} return false; }
A: We'd have to see when it's called, how it's declared, etc. Newsgroup is the right place to continue the discussion. Nothing wrong with that which I can see.
PaulT_MVP (Expert):
Q: Declares: private const int ERROR_ALREADY_EXISTS = 183;
[DllImport("CoreDll.dll", EntryPoint = "GetLastError")]
private static extern int GetLastError();
[DllImport("CoreDll.dll", EntryPoint = "CreateMutexW")]
private static extern int CreateMutex(IntPtr lpMutexAttributes, bool InitialOwner, string MutexName); how it's called: static void Main(string[] args) { if (!SingleInstance.IsInstanceRunning(INSTANCE_KEY)) { Application.Run(...); }
A: Nothing jumps out. I suppose that you could, after getting the handle, do a WaitForSingleObject(, 1000) on it, with the idea being that, if you can't get ownership to the mutex in 1s, someone else must have it, so you exit. For that case, you would *not* try to be the initial owner of the mutex.
PaulT_MVP (Expert):
Q: PaulT: I think everything is right. I don't need to hang on to the handle for closing later since it will be released when my process exits which is the behavior I want.
A: You should dispose of *any* unmanaged handle cleanly by calling ReleaseMutex() (if you own it), and CloseHandle() before exiting the program, but, as I said, nothing is just clearly wrong with the code.
PaulT_MVP (Expert):
Q: So, built-in instance checking in .NET CF IS indeed totally broken and does not work as documented. I am surprised there are no documented workarounds??? Microsoft should address with a KB article, etc. Right? Not even this sample works if you run it real fast severeal times: https://www.gotdotnet.com/Community/UserSamples/Download.aspx?SampleGuid=9A07CA83-0FD2-44B7-82D0-BD3CFA84E294
A: I'd say that it's broken. You should try the WaitForSingleObject() scheme mentioned earlier (if WaitForSingleObject() returns WAIT_TIMEOUT, assume that someone else has the mutex and you aren't the first instance), but I'd agree that it's broken, based on your observations.
PaulT_MVP (Expert):
Q: PaulT: Think 1000 ms is enough time to wait before giving up?
A: It should be almost instantaneous if you get ownership. I'd bet less than a ms. You don't want to delay too long, either. You can always tune it, if you find it to be too long or too short.
Travis Hobrla [MS] (Expert):
Q: When I am downloading the image on to the target, it show KITL running in Polling mode and hangs up.
A: I'm assuming you have serial debug output. You may want to insert some additional messages to find out why KITL is running in polling mode as it might give you a clue as to other problems going on in your system. I'd take a look at any debug output coming from your interrupt initialization code first - and instrument with additional debug messages to dig deeper.
GLanger_MS (Expert):
Q: I have a PXA270 based platform using Mainstone III BSP. I attach a hub to the USB Host then short 5v+ to GND off the USB Hub it sends the OHCI driver into an infinite loop. I've been able to repro on other CE Platforms. Is this a known issue? Fixed in 6?
A: This is not something we've heard of. I'll contact you to get more details. Thanks.
Travis Hobrla [MS] (Expert):
Q: I've tried to port Samsung 2440 SDK for WINCE5 to CE 6.0 beta, the build process is sucess but I encounter boot failure problem just after boot. How could I find the cause and fix it?
A: Are you getting any output from the board (i.e. serial?). The first thing you need to do is find out exactly where during the boot process the failure is occurring. At what point during boot does this happen? Do you have a callstack? That's where you need to investigate.
Travis Hobrla [MS] (Expert):
Q: The log is 3 PID:400002 TID:410002 ROMDllEnd == 0x40b10000 74 PID:400002 TID:410002 OSAXST0: Platform Name = PLATFORM_TYPE 148 PID:400002 TID:410002 Exception 'Data Abort' (4): Thread-Id=00410002(pth=831ce024), Proc-Id=00400002(pprc=813483c8) 'NK.EXE', VM-active=00400002(pprc=813483c8) 'NK.EXE' 212 PID:400002 TID:410002 PC=c009d828(k.coredll.dll+0x0002d828) RA=00000000(???+0x00000000) SP=d001fd88, BVA=c005ffff
A: Yes, you need to look through your debug output to find out where exactly during the boot process this is happening.
Sue Loh [MS] (Moderator):
Q: I have noticed a Problem on WinCE5.0: CeGetVolumeInfo() seems not to return all the info as it should. CE_VOLUME_TRANSACTION_SAFE flag will never be set, even if the volume is TFAT! I already posted this in NG, but got no answer yet...
A: I just saw this go by on email the other day: "Yes, I believe there was a bug in FSDMGR's GetVolumeInfo, which has been fixed. However, that will only affect the reporting of the flag, and doesn’t affect whether TFAT is enabled or not. The easiest way to tell if TFAT is enabled is to enable the debug zones for TFAT and see if you get any TFAT related messages, such as CommitTransactions. You can also examine the boot sector to see if it has a TFAT signature."
Sue Loh [MS] (Moderator):
Q: About the CeGetVolumeInfo() problem: In my NG post there is a very detailed report of the problem.. I checked the source: I'm 100% sure it's a BUG, I even fixed it, but i cannot use it for retail, since this is private code, any plans for a QFE?
A: So, check your license, but I thought that the CE5 license actually allowed you to modify private code and ship it. Aside from that -- it probably is a bug, but I do not know of any plans to QFE. You could contact support to request one.
Sue Loh [MS] (Moderator):
Q: Ok Sue, I will open a support case for that. I'm pretty sure it si not allowed to ship modified private code, because i get a waring during makeimage telling so.
A: Okay, definitely don't take my word for that. :-)
**Sue Loh [MS] (Moderator):
** If you’re just joining us, welcome to today’s chat regarding Windows CE 5.0 and CE 6 beta! Your questions, comments and feedback are welcome.
John Spaith [MS] (Expert):
Q: CE 5 has an undocumented event logging mechanism in it that the gateway configuration uses for its subsystems, will this subsystem be formally exposed and documented in CE 6, removed or, left the same?
A: The event logging in CE 6.0 is the same as in CE 5 -- it's used by the gateway config, but the event logger itself is not documented/exposed on its own.
AmmonL [MS] (Expert):
Q: I've been told in the past that you cannot modify the CE Notify Dialog, but I've also been told this isn't true by an OEM vendor. 1) Why doesn't it actually USE the "title" parameter in CeSetUserNotificationEx() when specifying title, text, and and dialog type (the title is always "Reminder" ???) and 2) how can the dialog's "View Item" menu item be customized to reference back to my app or item or something... is it not extensible somehow? I've been told by an OEM it is.
A: Is this on Windows Mobile? If so, and you want complete control over how the notification is displayed (menus, etc), configure the CE_NOTIFICATION_TRIGGER structure to call into your application when the notification fires. When your app runs, use SHNotificationAdd to launch a notification with the settings you want. If this is not Windows Mobile, you can ask the OEM to change the way they implement notifications (see https://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcedsn40/html/cgconImplementingNotifications.asp).
AmmonL [MS] (Expert):
Q: This is Windows Mobile 5.0, .NET CF2.0--I am PInvoking to call CeSetUserNotificationEx(). Will check your URL... sec.
A: The URL is for other Windows CE operating systems. For Windows Mobile, you should use my first suggestion -- have the CE notification system launch your app, then have your app call SHNotificationAdd.
AmmonL [MS] (Expert):
Q: AmmonL: I checked out that link. That looks like it's for OEM vendors, and not ISVs, right? How can I use this area from .NET?
A: Yes, that link is for OEMs. See my previous answer.
AmmonL [MS] (Expert):
Q: AmmonL: I am not an OEM... so what options exist for customizing that dialog? etc. ?
A: See SHNotificationAdd.
David Kelley [MS] (Expert):
Q: Is there an MSDN article with examples on how to put debug zones into my code for testing? WinCE5 embedded headless.
A: I don't believe there is an MSDN article, but there are plenty of examples throughout the code (we use them alot). DEBUGZONE topic can be found here: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcecoreos5/html/wce51lrfdebugzone.asp
Renato_MS (Expert):
Q: Our chip is SAMSUNG 2440. OS is WinCE. When I want test Graphics Device Interface Performance Test , I copy gdip.exe from ARMV4I. After I executed gdip.exe in my system, it said that it's not a vaild application. Where can I download or rebuild ? Thanks.
A: What version of WinCE OS? Where did you get gdip.exe from?
Renato_MS (Expert):
Q: It seems the default gdip.exe is useless. Where I can download new gdip.exe for ARMV4I ?
A: Let's follow up on this offline. Please email questions and contact info directly to me.
MikeCal [msft] (Expert):
Q: Should TFAT be able to avoid all registry and file system corruptions regardless of when a reboot event or uncontrolled power loss occurs? If not, please explain the exception cases. If so, are there specific registry flag settings that need to be set?
A: TFAT is transacted at the filesystem level, not the application level. Any individual writes to the filesystem will be protected, but an application can still mess up. For instance, say an app wants to make two separate registry writes for two separate but dependent keys. If the system is rebooted after the first write but before the second, then th app will have corrupted data (It'll expect both writes to have happened when they haven't.) TFAT has no concept of saying, "Transact the next n writes."
stjong_MSFT (Expert):
Q: Will the lsphelper code base be available as stated on codeplex?
A: The LSP helper code is shipped in CE 6.0, see public\COMMON\oak\drivers\netsamp\winsock Corey Burke [MS] (Expert): Q: Will the lsphelper code base be available as stated on codeplex?
A: This is a tough one to answer. The sample is included with Windows CE 6.0 and should work with the Windows CE 5.0 OS if copied and recompiled. Releasing source outside of the normal release vehicles we have has proven tricky in the past. Whether or not it makes its way to codeplex will be up to Igor and his available time.
adyba_MSFT (Expert):
Q: I have a problem with the connection manger not always detecting a successful association after powering on/off the wlan card with my LSP installed. The adapter gets an IP address and it is possible to send traffic.
A: You can use ConnMgrQueryDetailedStatus API to determine if Connection Manager sees the adapter, and the network to where the interface points. If CM sees the adapter, it should be usable by connection requests wanting to connect to the destination network where the connection leads to. If not, your LSP may be interfering with other LSPs in the system.
adyba_MSFT (Expert):
Q: I have based the lsp on the ms sample code and at the moment it does absolutely nothing. The problem is still there if i remove all other lsps from the system.
A: CM uses a LSP itself, the autobind_lsp, to map applications to connections it has chosen for them. If this LSP is disabled, then app's traffic may not be sent across the correct interface, and so packets may not reach their intended destination. Any new LSPs in the system must work with the ones that already exist. Robert McIntyre [MS] (Expert): Q: Can you tell me a clean, sure-fire way to uninstall CE 6.0 Beta from a system in preparation for the Gold CE 6.0?
A: To completely uninstall the CE6.0 Beta, first uninstall it via the Add/Remove Programs dialog. That should remove all of the Beta product. However, to be sure, go ahead and check for and delete (if necessary) the c:\WINCE600 directory, as well as c:\Program Files\Microsoft Platform Builder\6.00\. Robert McIntyre [MS] (Expert): Q: What about the registry? I've notice that CE 5.0 leaves a number of things in the registry even after an uninstall. How do I rid of CE 6.0 Beta stuff from the registry?
A: There's 2 classes of things that are "left behind": those registry settings that are shared with VS components, which need to be left behind, and those that contain user information (settings, etc.), that we leave behind on purpose. Those settings, etc., are fine to leave behind. You can remove them if you'd like to reset completely, but it shouldn't be necessary and will mean you have to redo all your customizations. Robert McIntyre [MS] (Expert): Q: [45] what about the registry? I've notice that CE 5.0 leaves a number of things in the registry even after an uninstall. How do I rid of CE 6.0 Beta stuff from the registry?
A: If you're interested in manually cleaning up the registry of PB keys, all I'd delete is HKLM\Software\Microsoft\Platform Builder\6.00.
David_Liao_MS (Expert):
Q: WinCE 5.0: Can a USB Client driver get notification of a USB resume? I see only USB_CLOSE_DEVICE mentioned in the docs. for the LPDEVICE_NOTIFY_ROUTINE to get as a parameter.
A: We don't have Resume notification in place. But, we are thinking about it for the next release.
David_Liao_MS (Expert):
Q: In WinCE 6.0? Does any WM 5.0 AKU support it?
A: Not in currenct Wince6.0 and any AKU. It will be in next Windows CE Embedded and AKU.
Juggs (Expert):
Q: WinCE 5.0: Can a USB Client driver get notification of a USB resume? I see only USB_CLOSE_DEVICE mentioned in the docs. for the LPDEVICE_NOTIFY_ROUTINE to get as a parameter.
A: You are right, we currently do not support USB resume notification. Something we will definitely look into.
MikeCal [msft] (Expert):
Q: We mounted the Storage Card, we are able to do basic file operations from application. But we are not able to see the files once we remove the SD Memory Card from the device and placing it in the SD Card Reader. I want is how to unmount the Storage Card
A: As soon as you CloseHandle on the file, the file should be written out to the card. You shouldn't have to unmount it.
David_Liao_MS (Expert):
Q: For drivers with installable ISR's - what is the recommended way to get debug output from the DLL since it cannot be linked with core OS services?
A: You can dump information to serial port. If you have complicated ISR, you should debug it in IST first before turning it into an ISR. If it is simple, you can dump the information directly to serial port because you know serial port hardware address.
Travis Hobrla [MS] (Expert):
Q: Are there any improvements in CE 6 thathelp with debugging installable ISR's?
A: In general, no. Installable ISRs work similiarly to how they did in 5.0, and the same debugging tools are available to you.
David_Liao_MS (Expert):
Q: Regarding debugging Installable ISR's. Any reason not to pass in the kernel address of entry points like OEMWriteDebugByte to the installable ISR via a Kernel Library IOCTL so that the installable ISR can call those though a function pointer?
A: You could.
Travis Hobrla [MS] (Expert):
Q: I have an issue with SYSGEN feature in WINCE 5.0. Many times it gives me error "BLDDEMO has generated errors". Could you please tell me what is the problem.
A: There are many possibilities. The best way to get to the bottom of it is to look at the build.log file in your %_WINCEROOT% directory. When you run SYSGEN, you link the binaries in the public tree for the components that you've selected using the Catalog, and then your platform directory is built. If you have any compilation or link errors in your platform directory, this can cause failures like the ones you're seeing.
Travis Hobrla [MS] (Expert):
Q: I have no compilation or link errors. Every time I give SYSGEN option with Make Run-Time Image option I get "BLDDEMO errors". If i remove Make Run-Time Image option while SYSGEN, it does not give me any error.
A: I believe the output from makeimg (what gets called when you check Make Run-Time Image), is displayed in Platform Builder. Take a look at this output - if there's a fatal error it will usually be towards the end.
Travis Hobrla [MS] (Expert):
Q: Yes there is a fatal error towards the end and it happens usually with Make Run Time Image. How to solve it
A: What's the error?
Travis Hobrla [MS] (Expert):
Q: makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec). makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec). This is the error I get.
A: Take a look at the previous output. It looks like there was an error before this and this is just the final notification of that error. By the way, if you can't get your answer here, I recommend posting some of the suspicious makeimg output on the windows CE newsgroup: microsoft.public.windowsce.platbuilder. This newsgroup has many people who can help you get to the bottom of it.
Travis Hobrla [MS] (Expert):
Q: MakeImg : Once I close the PB and reopen it and give "MakeImg", many times I get no errors. But If build my workspace and give MakeImg it gives me Fatal error.
A: Is it possible that you've added some custom build step that changes an environment variable? There are many things that could go wrong, and you need to look at your makeimg output and try to find what the exact error statement is. (Often times the statement is just above the output you listed earlier: "Command returned non-zero exit code")
Travis Hobrla [MS] (Expert):
Q: MakeImg : I have not added any custom build steps in it. But how it works some times and not without any changes
A: Well, which platform (BSP) are you building, and where did you get it from? It is possible that custom steps could have been added in the phase.
Travis Hobrla [MS] (Expert):
Q: MakeImg : I am using a third party BSP , as I remember we have not added any custom build steps. I will check it once. Could you also tell how to add custom build steps.
A: Depending on how intrusive you want to be, there are lots of ways to mess with the build. platform\\cebasecesysgen.bat gets executed during build, for example. There are other ways, and it's impossible to enumerate all of them here.
stjong_MSFT (Expert):
Q: On Windows Mobile 5.0: How can I find the adapter name of all installed WLAN cards? I need the name of cards that are suspended so i cannot use the IP Helper API. Are there any registry keys I can search to find this information?
A: In one of the WM5.0 AKUs (or service pack), the GetAdapterAddresses( ) was modified to report the PhysicalMedia of the adapter which should be NdisPhysicalMediumWirelessLan as defined in ndis.h. The alternative method of getting this information is via the connection manager API, ConnmgrQueryStatusDetails( ).
PaulT_MVP (Expert):
Q: How do i get the adapter name of an adapter that is suspended? The IP helper API does not report the adapter at all.
A: You can enumerate the registry, HKEY_LOCAL_MACHINE\Comm, if I understand the question.
David Kelley [MS] (Expert):
Q: any word on when a USB Audio Class driver will be available for CE? I want to be able to drive USB speakers and headsets from me devices I am developing for audio playback.
A: We have some experimental code internally that supports this, but we don't have any current plans on releasing it at this time. We haven't seen much demand for this feature. I'd like to follow up with you to see what requirements you have.
PaulT_MVP (Expert):
Q: I want to add a notification icon on the top bar that the user can click to open my application. I can add my icon with Shell_NotifyIcon, but I do not see a way to be notified about stylus clicks. Is there a solution to this?
A: One of the parameters passed to Shell_NotifyIcon is the window to which notifications are passed. Your application should create a hidden window and have a message loop, just like a regular Windows application. You can also pass the message code of a message sent when the user does something to your tray icon: These two fields: nid.hWnd = wnd; nid.uCallbackMessage = trayMsg;
AmmonL [MS] (Expert):
Q: I want to add a notification icon on the top bar that the user can click to open my application. I can add my icon with Shell_NotifyIcon, but I do not see a way to be notified about stylus clicks. Is there a solution to this?
A: When calling Shell_NotifyIcon, set the hwnd member of the NOTIFYICONDATA structure to point to a window that you own. In that window's wndproc, check for messages that match the ID you specify in the uCallbackMessage member of that structure.
TonyKit_MSFT (Expert):
Q: I am trying to animate an icon on the title bar using Shell_NotifyIcon, but the title bar is only updated approximately once every second. Is there any way I can force a repaint of the title bar to get a smooth animation?
A: There doesn't appear to be a shell API that you could use to force a redraw of the notify icon area.
AmmonL [MS] (Expert):
Q: Is it possible to remove notification icons for built in applications from the title bar?
A: No, only the creators of notification icons are allowed to remove them.
Sue Loh [MS] (Moderator):
Q: I'm trying to build a WinCE5 system with persistent storage, but it seems that there are not much documentation and guide on this. Where can I find them?
A: So, the main things you need to do are mount your disk as the root, and put the registry hives onto the disk. Here are some links:
https://msdn.microsoft.com/library/en-us/wcedata5/html/wce50conSelectingtheInternalFileSystemforyourDevice.asp
https://msdn.microsoft.com/library/en-us/wcedata5/html/wce50conMountinganInstallableFileSystemastheRootDirectory.asp
https://msdn.microsoft.com/library/en-us/wcedata5/html/wce50tskHive-basedRegistrySetup.asp
https://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcehardware5/html/wce50conConfiguringObjectStoreMemory.asp
The other thing you need to know is that CEDB databases could also be routed to the object store (you will always have a small object store, even when you are not storing any file/registry data there) so you have to be careful not to put any data into the object store. Unfortunately in CE5 there is no way to route "default" databases into a volume on the persistent store.
MikeCal [msft] (Expert):
Q: Can I clarify that to build a system with persistent storage, do I need 2 pcs of flash chip if I'm not using the Intel PSM driver?
A: There are two types of flash, NAND and NOR. NOR has the ability to execute in place (XIP). If you want to XIP with NOR, then you can't do persistent storage in the same chip. This is because the flash hardware doesn't have the ability to read and write at the same time, and the code doing the writing is being executed from the chip. If you have NAND (which can't XIP) or if you have NOR but aren't XIPing, then you can do both in the same flash part. If you want to XIP and do persistent storage at the same time, you either need to either use two flash parts (XIP in one, PS in the other) or IPSM.
Sue Loh [MS] (Moderator):
Q: "If you have NAND (which can't XIP) or if you have NOR but aren't XIPing, then you can do both in the same flash part" Do you mean "then you cannot do both ...."?
A: No, he meant then you can. You can put both in the same part for NAND. For NOR, if you are not XIPing then you can do both. If you *are* XIPing then you need IPSM.
mikehall_ms (Moderator):
Q: Do you have a white paper somewhere on porting applications from Win XP to Win CE?
A: I've not seen any technical articles that cover this - I will add this to my list of requested articles though - typically developers don't port an entire XP application to Windows CE - you need to consider the use of the application and why you're moving the application to a CE device, if this is a portable device then there is probably some functionality that is specific to the mobile worker - you may need to rethink the UI and flow of the application and also consider the supported APIs used by the application since Windows CE supports a subset of the desktop Win32 API and also a subset of the .NET Framework.
MikeThom_MS (Expert):
Q: Is there any way to acces to Windows Media from an API, or by a other application(created by me)?
A: If you are an OEM then you can use DShow directly to create a graph to playback content. On Smartphone/PPC you would need to go through the WMP OCX to playback content or drop down your own WM codec and use DSHow there as well. Corey Burke [MS] (Expert): Q: I download a big file using explorer over my virtual adapter on WMO 5.0. When I associate with a SSID on another adapter, explorer terminates my transfer. Why does explorer abort a transfer because of an adapter event on adapter that it is not using?
A: There's nothing in the file explorer code that senses adapters coming and going, but like any socket connection it may be affected by the underlying connectivity options. If the WiFi adapter is seen as a better route to your server the TCP stack may route packets from your virtual adapter address out of the WiFi card. If the WiFi card doesn't in fact connect to the internet (or that server) then the packets will be lost and TCP will think the server is not responding and close the connection. You can check for the packets on the WiFi network to see if this is the case in your situation.
mikehall_ms (Moderator):
Q: In CE 6.0, there are times when I add components into my Solution and select the Build\Build menu item and the build fails. I have to then select Build\Rebuild to have the build succeed. How can I tell when I need to use rebuild?
A: this is a known issue with the Beta release of CE 6.0 which has been fixed in the RTM product (I ran into the same issue multiple times and was very happy that this got fixed)
David_Liao_MS (Expert):
Q: what is the maximum size SD Card that CE 5 can support with the sample BSPs/Drives?
A: Do you mean SD Memory? If it is, we officially support SD Memory size up to 2G.
jflynn_msft (Expert):
Q: what is the maximum size SD Card that CE 5 can support with the sample BSPs/Drives?
A: 2G
XiaMa_MSFT (Expert):
Q: Is WINCE6 support Video Telephony?
A: No, it doesn't. the networking stack (RTCClient) doesn't support video telephony yet.
MSFT_Charlz (Expert):
Q: Is there a white paper or other online resource available for tips on improving build times in platform builder? Multi-CPU support? Temp RAM drives? RAID?
A: Mark, I have a work item to do this in the next few months. If you ping me then I will make sure you get it.
MikeThom_MS (Expert):
Q: Is there a white paper or other online resource available for tips on improving build times in platform builder? Multi-CPU support? Temp RAM drives? RAID?
A: There is no current white paper so that makes a good suggestion for future work. Here are some current options:
1) set BUILD_MULTIPROCESSOR=x in your command window to spilit compiles across CPUs.
2) Setting (1) is available in WinCE 6.0 Tools - Options menu
3) RAM disk for temp compiler files seems to make a difference as well
Renato_MS (Expert):
Q: CETK's Flash Memory Read/Write Performance Test, It limited use "DSKx:" to test. If our system's Flash don't have DSK, how to do this test ?....I have try profile and name in commnad, it not works. How to do this test ?
A: Please send me your contact info so I can follow up with this question offline.
Sue Loh [MS] (Moderator):
Q: Are there any known issues with Kernel Tracker causing ATI display drivers to bluescreen the system with a 10000 to 1000ms resolution gets used?
A: No, no known issues there and I have no idea how that could happen... Does it happen reproducibly for you?
Juggs (Expert):
Q: Are there any known issues with Kernel Tracker causing ATI display drivers to bluescreen the system with a 10000 to 1000ms resolution gets used?
A: Not seen this before but can you possible check out the full memory dump resultign from the bluescreen to identify the culprit?
andyraf_MSFT (Expert):
Q: We are developing PMP player with LCD and TVOUT. When I switched from LCD (480x272) to TVOUT I would like to have resolution (640x480). Is that possible in WNCE to change desktop size on the fly?
A: Dynamic resolution changes was a feature that was added for WinCE 6. Previously I believe we only supported dynamic rotation.
mikehall_ms (Moderator):
Q: Is the windows CE 6.0 beta currently available for download?
A: No, but we do have a CE 6.0 Virtual Lab up and running which gives you full access to the CE 6.0 development tools for 90 minutes - https://msdn.microsoft.com/virtuallabs
Robert McIntyre [MS] (Expert):
Q: Is the windows CE 6.0 beta currently available for download?
A: No, the Windows CE 6.0 Beta is not available for download; it is/was sent to the Beta participants who signed up. Currently we're not accepting any new Beta participants.
mikehall_ms (Moderator):
Q: Is there a WinCE call to convert between ASCII and UNICODE character strings?
A: yes, check out WideCharToMultiByte and MultiByteToWideChar
PaulT_MVP (Expert):
Q: Is there a WinCE call to convert between ASCII and UNICODE character strings?
A: MultiByteToWideChar(), among others, just like desktop Windows.
lemo [msft] (Expert):
Q: Is there a way to generate a compile time error in platform builder if a data structure is not exactly a specific size?
A: You can use something like C_ASSERT(sizeof(S) == 32);
andyraf_MSFT (Expert):
Q: Is there a way to generate a compile time error in platform builder if a data structure is not exactly a specific size?
A: I think there's a CASSERT macro somewhere. If that doesn't work, here's a handy hack we've used:
// handy macro for making compile-time assertions
// if the condition is false, the array winds up with zero size, which forces a compile-time error
#define COMPILE_TIME_ASSERT(condition) {int compile_time_assert[(condition)]; compile_time_assert;}
example usage: COMPILE_TIME_ASSERT(sizeof(MIXERCAPS2) <= sizeof(WAVEOUTCAPS2));
GLanger_MS (Expert):
Q: Trying to debug a Mobile Client Software Factory app from VS2005 in CE 5.0 emulator. When I turn on 'enable network adapter' in the emulator, my debug terminates with a message saying 'remote connection to the device has been lost...' any tips?
A: I've asked our Device Emulator expert about this. I'll follow up with you off-line.
MSFT_Charlz (Expert):
Q: Is there a post processing tool I can use on my build output so that rebuilding the same tree of source two times in a row will give me the exact same binarys with Platform builder 5/6? I want to be able to do binary diff updates to our devices.
A: I don't know of a tool, but that is a good request. I have a similar request on my list to not make them in the first place, but I will add this suggestion. Maybe this is the easiest way to achieve the goal.
Venu_MSFT (Expert):
Q: How can I get the Win Mobile 5 Adaptation Kit?
A: If you are asking WM5.0 AKU License for the first time, you need to contact one of our Product managers. I would request you to take this offline. You can contact me for further details
**Sue Loh [MS] (Moderator):
** The transcript of today’s chat will be posted online soon, to ,https://msdn.microsoft.com/chats/transcripts/default.aspx. We’ll see you again for another chat next month. Please check https://msdn.microsoft.com/chats for the list of upcoming chats.
**Sue Loh [MS] (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 page