Windows Embedded CE and Windows Mobile (November 1, 2007)

Chat Topic: Windows Embedded CE and Windows Mobile
Date: Thursday, November 01, 2007

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 Embedded CE 6.0!

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

 

Introductions:

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

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

Greg Scott [MS] (Expert):
Hi, I'm Greg Scott, a developer on the Windows CE Networking team.

Sue Loh [MS] (Moderator):
Hi, I'm Sue Loh, a developer in the Windows Devices Core team at Microsoft. I work on the remote tools team, and have previous experience with the kernel and file system. I'm also moderating today's chat. I hope we can answer some questions for you today!

GLanger_MS (Expert):
Hi, I'm Glen Langer, a Program Mgr for BSPs on the General Embedded CE team.

Don Weber [MS] (Expert):
Hi, I'm Don Weber, a General Embedded BSP program manager

Marine_msft (Expert):
Hello, my name is Mariana Nenova and I am a tester for Windows CE Shell/UI.

BorMing_MS (Expert):
Hi, I'm Bor-Ming. I worked on CE kernel.

AlSun_MSFT (Expert):
I'm Albert Sun, Program Manager working with Audio and DirectShow.

Matt Lyons [MS] (Expert):
Hi, I'm Matt Lyons, a PM for security in Windows Mobile.

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

MikeCal [msft] (Expert):
A:
I'm Mike Calligaro. I recently worked on low level driver sorts of things, but now I work on the platform builder debugger.

Karel Danihelka [MS] (Expert):
Hi, I'm Karel Danihelka and currently I work in image update team.

Sing Wee [MS] (Expert):
Hi, I'm Sing Wee, part of the General Embedded Test team.

EdS [MS] (Expert):
Hi, I'm Ed Sumanaseni. I'm a developer in the Windows CE multimedia team.

Sue Loh [MS] (Moderator):
Let's begin the chat!

 

Start of chat:

Travis Hobrla [MS] (Expert):
Q:
Under WinCE 6.0, is it possible to access hardware directly from a user mode application? Is it possible for me to write a device driver to map the physical register space to a processes virtual address space? (or is there a better way?)
A: Yes, this should be possible. There are a few ways to do this. One is to have your device driver call AllocPhysMem to allocate physically contiguous memory, then use VirtualCopyEx to copy it to the user process's virtual address space. One note of caution: don't use PAGE_PHYSICAL for the VirtualCopy; even though it seems like the right thing to do, it is not.

BorMing_MS (Expert):
Q:
In CE 6.0, In OEMCacheRangeFlush, I need to get a physical address for the virtual address passed in so that I can implement line level cache flushing on an L2 cache that uses physical tags. OEMVAtoPA only works for kernel addresses. Ideas?
A: What CPU are you using? For ARM v6, there is an MMU instruction to get Physical address providing a Virtual address.

BorMing_MS (Expert):
Q:
I am using an ARM V6 CPU. I am not aware of this MMU instruction. Can you give me a reference?
A: mcr p15, 0, <rn>, c7, c8, 0 ; VA to PA translation with privilege read permission check
mrc p15, 0, <rn>, c7, c4, 0 ; (r2) = read PA register

BorMing_MS (Expert):
Q:
When implementing an OAL for ARMV6, aside from taking advantage of the ASID in the OALTLB management code, are there other tweaks that should be made to the OAL? Can you clarify what f_V6_VIVT_ICache is for?
A: I believe that's all you need to do. Please ignore the flag, it was there due to ARM originally thinking of using ASID+Virtual-tagged I-Cache. It's all VIPT for V6 or later now, and the flag should never be used.

BorMing_MS (Expert):
Q:
In WinCE 5.0, we experienced problems with the AllocPhysMem / FreePhysMem kernel functions exhausting the available physical memory due to fragmentation over time. Are there any changes/improvements in WinCE 6.0 to address this issue?
A: There is really not much we can do unless we defragment physical memory. It's very time consuming and difficult to do as we'll need to scan through all the Virtual Memory of all processes just to move a single physical page.

PaulT (Expert):
Q:
We are developing some applications on Windows mobile 6 with ARM9 platform. The developing tool is VS2005 with mobile SDK 6. We are trying to use inline assembly in our application, but vs2005 doesn't support it.
A: No. Inline ARM assembly is not supported. You can have an assembly file (with a .s extension, typically), and I think that should work. You just can't do inline...

russellk_MSFT (Expert):
Q:
6. Does microsoft has any plan to support inline assembly or intrinsic in compiler? 7. The mobile SDK emulator only supports upto arm V4 architecture, does microsoft has any plan to support more arm architecture?
A: It's been a few years since we compared, but at one point MS was within 5% for ARMv4 code quality. The big things to note is that MS doesn't (yet) take full advantage of ARMv6 and newer architecture extensions, and it's difficult to compare apples to apples since MS uses a more restrictive calling convention due to supporting Structured Exception Handling, an MS-specific technology. One important recent improvement is that VS2008 can generate VFP code inline.

russellk_MSFT (Expert):
Q:
4. How about the performance comparison between MS arm compiler and RealView compiler?
A: It's been a few years since we compared, but at one point MS was within 5% for ARMv4 code quality. The big things to note is that MS doesn't (yet) take full advantage of ARMv6 and newer architecture extensions, and it's difficult to compare apples to apples since MS uses a more restrictive calling convention due to supporting Structured Exception Handling, an MS-specific technology. One important recent improvement is that VS2008 can generate VFP code inline.

russellk_MSFT (Expert):
Q:
We found RVCT ( RealView compiler toolchain, developed by ARM) can use intrinsic and inline assembly. What we want to do is to link RVCT compiled library with vs2005.
A: MS and RVCT use different and incompatible file formats and calling conventions. It is theoretically possible to write conversion tools and get things to work if one is careful, but I'm not aware of anyone doing this successfully.

russellk_MSFT (Expert):
Q:
6. Does microsoft has any plan to support inline assembly or intrinsic in compiler? 7. The mobile SDK emulator only supports upto arm V4 architecture, does microsoft has any plan to support more arm architecture?
A: We have no plans to support inline assembly. We do support some intrinsics and are looking to support more in the future. If you'd like to make a request, feel free to send them to me. The DeviceEmulator team is adding support for newer architecture extensions, but I can't comment on when they will be available.

russellk_MSFT (Expert):
Q:
8. Is it possible to link RVCT(or any other 3rd party compiler) compiled library with vs2005?
A: If you have an ELF to PE-COFF converter, it might be possible to do this. The MS calling convention and ARM EABI are compatible for a class of simple C APIs, so if you limited yourself to these, it might work. Again, though, I'm not aware of anyone successfully doing this.

Karel Danihelka [MS] (Expert):
Q:
After starting ddraw app ddcaps.exe page table attributes are changed from C=0 B=0 to C=1 B=1. After that, cursor isn't drawn completely. Is this a known bug ?
A: To my knowledge MS code doesn't modify page cache attributes in such way. But as display driver is implemented by OEM it can easily be that OEM made some performance improvement in this way. But not drawing picture is fine until your application directly ask to show image on screen (sorry I forget call name).

Travis Hobrla [MS] (Expert):
Q:
We have source for display driver. It's the display driver for PXA270 CE6. I can't find a place where VirtualSetAttributes() is called to set C and B flags in this driver. Flags where changing when app is closed.
A: Can you set a breakpoint in the driver to see if something unexpected is calling this function? Or have you already done that and decided that the attributes are being changed without a call to the driver?

Karel Danihelka [MS] (Expert):
Q:
We have source for display driver. It's the display driver for PXA270 CE6. I can't find a place where VirtualSetAttributes() is called to set C and B flags in this driver. Flags where changing when app is closed.
A: It is difficult to find root cause in this way. Do we talk about physical frame buffer there? If so isn't there possibility that driver releases by mistake memory for screen buffer (and it gets allocated to somebody else)?

Karel Danihelka [MS] (Expert):
Q:
The only DD function in the display driver is buildDDHALInfo. Frame buffer memory is allocated by HalAllocateCommonBuffer().
A: This function returns information about hardware ability and set of callbacks. At least I would expect functions like HalLock, HalUnlock etc. In HalLock surface buffer must be mapped in way which allow application to access it. Typicaly we use CreateFileMapping/MapViewOfFile/VirtualCopy for this purpose. It is fine if returned buffer is cached - it has to get flushed when HalUnlock is called. What is probably confusing is fact there is multiple mappings to virtual address space for one physical address.

Karel Danihelka [MS] (Expert):
Q:
The driver we are talking about, is the one from CE6 for PXA270. This driver uses DDGPE for Lock/Unlock. I have also searched this functions for VirtualSetAttributes() but didn't find. Any ??dea ?
A: Look how address returned in pd->lpSurfData is created and what happen on HalUnlock.

luciad_MSFT (Expert):
Q:
We are developing some applications on Windows mobile 6 with ARM9 platform. The developing tool is VS2005 with mobile SDK 6. 1. Does WM6 provide the directshow filters for wmplayer: avi splitter, video render and audio render?
A: Yes, WM6 provides avi splitter, video renderer and audio renderer.

luciad_MSFT (Expert):
Q:
5. Our video decoding filter outputs YV12 format well (we check this by yuv viewer), but wmplayer has problems to display the format. If our filter outputs MEDIASUBTYPE_YUY2, wmplayer displays well.
A: The video renderer will allow formats that the display driver can handle, so probably the video driver can't handle YV12 for this case. Take a look at the following blog, it explains the video renderer connection process in detail: https://blogs.msdn.com/medmedia/archive/2007/06/11/the-video-renderer-connection-process.aspx

luciad_MSFT (Expert):
Q:
Is MEDIASUBTYPE_YV12 (YV12, https://msdn2.microsoft.com/en-us/library/ms867704.aspx\#yuvformats\_identifying\_yuv\_formats\_in\_directshow ) supported well on win32 wmplayer?
A: If the video driver supports it, then the video renderer will allow it...

luciad_MSFT (Expert):
Q:
2. Where can we get tools like registry editor and directshow graphedit on WM6? 3. GUIDs for MediaType, Standard components on WM6 are the same as those on Win32? For example, File asyn reader, avi splitter, and so on.
A: Registry editor is in Platform builder. GraphEdit is not shipped with WM6. Although DirectShow in WM6 is a subset of the desktop DirectShow, it does have async file reader, avi splitter and many other filters.

luciad_MSFT (Expert):
Q:
If there are some directshow filters on WM6, how to set their priority?
A: The registry contains info about the filters, and their merit will be used to decide the graph that should be built for a certain filter. Some filters have priority settings to (for thread priority). Here's a pointer for general information about the registry settings:
https://msdn2.microsoft.com/en-us/library/aa918244.aspx

luciad_MSFT (Expert):
Q:
GraphEdit is not shipped with WM6, but we need a tool like GraphEdit to debug. Is there any tool like it on WM6? Or could we use the previous version of graph edit on WM6? Where to download it?
A: I just checked and unfortunately graphedt was not shipped with Windows Mobile, so no previous version to use. The best way to debug graph building without graphedt is to enable the first 4 debug zones of quartz.dll and see the graph building debugging output.

luciad_MSFT (Expert):
Q:
Hi Luciad, about Q[35]. How to enable the first 4 debug zones of quartz.dll ?
A: In platform builder, go to target/ce debug zones, and then select quartz.dll. Check the first 4 zones there, and a lot of debugging output is going to be enabled (unfortunately the graph connection is going to be mixed with not so interesting debugging output).

stjong_MSFT (Expert):
Q:
I've got an application that keeps a TCP connection alive for a long period of time. Up to 40 minutes. If the device suspends to the highest power save, does the a received GPRS packet wake the device up? If not do I have to enforce minimum power save?
A: Incoming GPRS data will wake the device. I'm assuming this is on Windows Mobile.

MikeCal [msft] (Expert):
Q:
Sorry this is Windows Mobile 5. The code is actually written in .NETCF2.0 and C#. The problem is if the device suspends and receives a packet the device does not seem to wake up or kick in the code that was suspended. Why would this be?
A: When the device is suspended, no code is running. It takes a hardware interrupt to wake the device back up. There are various ways to have your app set up hardware interrupts to wake the device back up, but if you don't do anything special, your code will stop on suspend and start back up again and resume.

stjong_MSFT (Expert):
Q:
Sorry this is Windows Mobile 5. The code is actually written in .NETCF2.0 and C#. The problem is if the device suspends and receives a packet the device does not seem to wake up or kick in the code that was suspended. Why would this be?
A: I'm not sure. I'm aware of the sync application receiving incoming TCP packet which wakes it up.

MikeCal [msft] (Expert):
Q:
Hi stjong, Does the sync application not prevent windows mobile from going into a true suspended state? I'll have to try this again, but I get some strange behavior once the device kicks in when I tap the power switch.
A: Sync allows the system to suspend, but it has mechanisms to wake it back up depending on user settings. If the user told the device to sync every 5 minutes, it uses the Api CeRunAppAtTime to wake the system up. CeRunAppAtTime programs the RealTimeClock to fire an interrupt at the time programmed. If the user told the device to sync on email arrival, Sync sends a packet to the server and then tells the system to wake up on response.

MikeCal [msft] (Expert):
Q:
Hi Mike, thanks for your reply. That's understandable and logical. Does the GPRS hardware get suspended also? Is this hardware and driver not capable of resuming device execution or is this only at a lower level as in it doesn't resume all user processes
A: What sources can wake the system up are OEM dependent. The CPU is parked, so no code you can write (driver or otherwise) is running. But there are always some number of hardware sources that can wake the system back up (determined by how the OEM designed things). For instance, the power button and RealTimeClock are always two of these sources. On a phone, the cell radio always has the ability to wake the system up too (for incoming calls). It's possible that some wake sources are programmable and a driver could enable them or disable them, but it will do that before the system suspends.

PaulT (Expert):
Q:
I'm finding this difficult to debug as I do not know a way of attaching VS2005 debugger while using GPRS? Any guide to do this?
A: That's a tough scenario. Since your GPRS IP address is probably not really accessible from your desktop computer, I don't think I'd count on this. If you have WiFi on the target device, hook that up and you should be able to use that for debugging over a local network. However, given that you're trying to debug waking up, that's an even bigger problem. I'm not sure that a log file on the device isn't really the only way to see what's going on...

PaulT (Expert):
Q:
Hi Paul, thanks for your reply. That's what I afraid of ;) Oh well, looks like I'm going to have to investigate this one further. Is there any technical reference to GPRS packets waking up WM5?
A: I'm afraid that I'm not much of an expert on WM. It seems to me that the device OEM is in control of this, unless MS forces all Windows Mobile vendors to implement it with wakeup. You might try one of the Pocket PC newsgroups. I think there's microsoft.public.pocketpc.developer (or something roughly like that). They would probably know off the top of their heads.

stjong_MSFT (Expert):
Q:
Hi Mike, that doesn't apply to PUSH email using sync does it? Or does it use this timeout as default considering the recommended push connection is 8 minutes (obviosuly OEM configured).
A: Certain operator closes the TCP port after a period of inactivity. You mentioned about 40 minutes of that. Try periodic keep alive (say every 5 minutes) to see if you application wakes up.

MikeCal [msft] (Expert):
Q:
Thanks again Mike. Ok so to avoid not supporting a broad range of WM5 devices and a serious platform headache [Thats what you guys save me ;)] then I will have to lump forcing the device not to use true suspend which obviously will have deep impact on battery
A: Not suspending will definitely have a big impact on battery life, yes. What are you trying to do? How frequently does your code need to run? And, when it is running, how long does it need to happen? If, for instance, you pinged a server and expect a reply back in 30 seconds, at which point you're going to run for a minute and then not need to do anything for another hour, using SystemIdleTimerReset to keep the system awake is the best bet. On the other hand, if you're going to do something quickly, but every five minutes forever, you're way better off using CeRunAppAtTime and letting the system suspend between calls. I've got some "PowerToThe..." blogs on https://blogs.msdn.com/windowsmobile/archive/tags/MikeCal/default.aspx that talk about some of the ways you can get the system to suspend quickly if you're waking it up to do things. Look for PPN_UNATTENDEDMODE in the comments of some of those entries.

stjong_MSFT (Expert):
Q:
Hi stjong. Thanks for reply. I'm aware of firewall drop and code handles this, but obviously not when asleep. I've just been told via PM that the GPRS wake up is hardware specific, this right? I will have to set timer to wake up after some time I guess.
A: No, my understanding is GPRS wake up should be available on all WM device. I think it needs either the server to periodically wake the client up or the client to periodically send ping to ensure the port is not closed.

MikeCal [msft] (Expert):
Q:
Thanks all for answers and advice. Looks like suspension is too much of a hurdle for my implementation. Is there a way of pseudo power save on WM 5? As in reduce CPU clock speed etc?
A: One thing you can do is wrap your code in PowerPolicyNotify(PPN_UNATTENDEDMODE, TRUE); and PowerPolicyNotify(PPN_UNATTENDEDMODE, FALSE); This won't do anything if the screen and such is on, but if you wake the system up to run your code and call that, the screen will stay off (saving a lot of power) and the system will suspend immediately when you finish (when you call the FALSE).

stjong_MSFT (Expert):
Q:
Hi, I have successfully installed Passthru sample in WM6.0 devices for Wifi adapters but not able to do it for WWAN adapters. In WM5.0 we were suggested to replace AsyncMAC dll and was working fine.
A: NDIS intermediate driver for WWAN miniport is not a supported configuration. Asyncmac replacement was suggested in the past.

stjong_MSFT (Expert):
Q:
What is the type of VEIM used for GPRS in WinCe6.0?
A: From the stack point of view it looks like an Ethernet interface.

stjong_MSFT (Expert):
Q:
Is VEIM open source available?
A: No. Will it help you if it is?

stjong_MSFT (Expert):
Q:
If VEIM is purely Ethernet, then it should support IM driver and recognized by connection manager?
A: I believe so, as long as the I/M's virtual adapter instance name contains the original VEIM i/f name.

stjong_MSFT (Expert):
Q:
If VEIM is purely Ethernet, then it should support IM driver and recognized by connection manager. But if not then we need to replace VEIM.
A: I/M should work for VEIM. The Connection Manager needs the I/M virtual instance name to contain the original adapter name to recognize it.

stjong_MSFT (Expert):
Q:
We have tried with PASS\WWAN1-APNName, but connection manager was showing no entry for cellular connection as it does for default without passthru.
A: I know that it is supported, but perhaps on later version of the release. I recommend you approach the product support team to confirm.

stjong_MSFT (Expert):
Q:
We have tried to give name PASS//WWAN1-APN name but connection manager was not recognising it as a VEIM adapter. Registry key HKLM\system\state\connections\Cellular is set to 0
A: Answered earlier.

stjong_MSFT (Expert):
Q:
Passthru is able to bind with VEIM and a simple socket application is able to work but IE and other application uses Connection manager is not able to work.
A: Answered on separate question.

stjong_MSFT (Expert):
Q:
stjong_MSFT if the binding name remain same then how to distinguishes that it is virtual adapter not the original adapter ? it will promote recursive binding
A: Not the same, but contains the original name.

PaulT (Expert):
Q:
on WM 6.0 we found that DeviceIoControl function doesn't return the value and freezes the device when querying for IOCTL_NDISUIO_QUERY_OID_VALUE
A: Chances are that you aren't passing the right buffer characteristics. Finally, there is good documentation of the WZC API in the Windows CE 6.0 help. That's where I'd start. It's probably a string that's supposed to be doubly-null-terminated that you're only using a single null in or something of that sort...

PaulT (Expert):
Q:
Can you provide the link ?
A: "The link"? I have the Windows CE 6.0 evaluation edition, which you can find via a search at https://www.microsoft.com/downloads. I think that MSDN should have the same set of docs and that, if you look up that IOCTL value there, online, you should get the CE6 docs, but I don't use online help much; I mostly stick to local help files.
stjong_MSFT (Expert):
Q: Any special mechanism to tell connection manager about IM instanse of VEIM?
A: The path is actually Miniport instance --> Shell --> Configuration Manager --> Connection Manager. Another way to configure this is hence directly to Configuration Manager --> Connection Manager.

Ryan Ward [MSFT] (Expert):
Q:
Do we have any documentation which separately maintained for WM6.0 not Windows CE 6.0 ?
A: I believe so, does the following link help? https://msdn2.microsoft.com/en-us/library/bb158486.aspx

stjong_MSFT (Expert):
Q:
How to communicate with the product support team? It is OEM to ask or anyone else?
A: Any company should be able to.

Sue Loh [MS] (Moderator):
Q:
How to communicate with the product support team? It is OEM to ask or anyone else?
A:https://support.microsoft.com/ is a good place to start.

Karel Danihelka [MS] (Expert):
Q:
I'm just here to see if i can find out if windows mobile has a system recovery or restore. My friend deleted everything on his HTC smartphone and we're trying to find out if we can get it back.
A: Answer is no, there isn't such ability (there are good reasons because of security).

PaulT (Expert):
Q:
I'm just here to see if i can find out if windows mobile has a system recovery or restore. My friend deleted everything on his HTC smartphone and we're trying to find out if we can get it back.
A: No, not generally. Some device OEMs have backup and restore utilities and you can, of course, use a hard reset to return to the factory default settings, but, if he had, say, contacts or calendar items on the device and those were not synced from Outlook, so there's no desktop backup of them, there's no way to recover them unless he did have a backup program on the device and has a suitable backup...

Matt Lyons [MS] (Expert):
Q:
I'm just here to see if i can find out if windows mobile has a system recovery or restore. My friend deleted everything on his HTC smartphone and we're trying to find out if we can get it back.
A: No, there isn't. If you had backed up information using ActiveSync before it was deleted, you can copy information back that way.

John Spaith [MS] (Expert):
Q:
Is there a sample application for VOIP point to point connection ? Means without SIP, simply using IP address.
A: Yes - check out voipdemo in \public\voip\sdk\samples\voip\voipdemo. (It's general embedded only.) In CE5 there are some compiling issues with it that were fixed in CE6, check out https://groups.google.com/group/microsoft.public.windowsce.app.development/browse_frm/thread/c7ef9c5115611f13/02811f56619db267?lnk=st&q=spaith+voipdemo&rnum=2&hl=en#02811f56619db267 for newsgroup thread if you're using CE5 & need workaround.

Renato[MS] (Expert):
Q:
Will R2 of CE 6.0 support additional SDIO WiFi clients besides Sychip? Will MS provide source code for the Sychip or other drivers?
A: No additional SDIO WiFi drivers are being provided in R2. R2 adds a new version of the SD bus (2.0) though.

GLanger_MS (Expert):
Q:
Can you recommend a particular SDIO Wifi card that is SD 2.0 compliant for which a Windows CE driver exists?
A: Our team worked on adding support for High Capacity SD and SD Phycial Spec 2.0. The WiFi team has not worked with an SD 2.0 driver yet, to my knowledge. There are companies with these products but we have not had any first-hand experience with the drivers and so can't make any specific recommendations.

GLanger_MS (Expert):
Q:
Will R2 of CE 6.0 include updated sample SDHC drivers that take advantage of the new SD 2.0 compliant Bus driver?
A: Yes, R2 includes additional support for SD 2.0. SDHC support is included with the PXA27x SOC. Please read the release notes on how to actually get that component installed (it is associated with the VOIP BSP instead of the SOC so the VOIP BSP needs to be installed).

PaulT (Expert):
Q:
I am still using CE 5.0, there is one link https://support.microsoft.com/kb/923027 for updating daylight, there are two links , but the following link is a dead link:
Update to fix the issue that United States daylight saving time changes in 2007 do not occur on the correct day To obtain the update, visit the following Microsoft Web site that is appropriate for the operating system. Windows CE 5.0 https://www.microsoft.com/downloads/details.aspx?FamilyId=0A2A0387-09FF-4E21-95EE-9E20732DA8FA&displaylang=en
the above link is a dead link.
A: If you install all of the Windows CE 5.0 Platform Builder QFEs, you'll have the latest DST stuff in your builds (this is what you're talking about, right?) As far as I know, there's no download to patch an existing and installed device in the field to change the DST settings; the device OEM would have to do that for you. Don't forget to install all of the QFEs, starting with the 2006 yearly update, which includes all previous years, too, and then the monthly updates January 2007 through September 2007.

PaulT (Expert):
Q:
I just installed all the QFEs through Sep, 2007, but I got compiling errors in Common\OAK\Drivers\Netui folder
A: OK, quick step back. CE5, CE6? Earlier version? You did a Clean Sysgen on the OS after installing the QFEs? I installed the CE5 September QFEs a couple of weeks back and there's no problem with NetUI. You aren't by chance modifying NetUI yourself or something are you?

PaulT (Expert):
Q:
I just installed all the QFEs, but when I compile DRIVERS\NETUI\wzcui.c(127) : error C2039: 'IntfEntryEX' : is not a member of '_WLAN_INFO', Even though I can see the structure member in wzcui.h , and the header file indirectly include in this .c file
A: That field isn't spelled right. Is that a copy/paste error from the error message or is it really trying to get to IntfEntryEX (capital X)? Should be lower-case x.

PaulT (Expert):
Q:
If I have WiFI and Etherenet, is there any way to speciify a particular adapter to establish networking connecion?
A: You'd want to bind the *outgoing* socket, using WinSock, if that's what you're doing, to a given IP address. The IP address is associated with a particular adapter, so your outgoing connection will go out via that adapter. If you don't bind to a particular adapter, Windows CE will pick the 'best' one.

MikeCal [msft] (Expert):
Q:
VS2005 + Mobile SDK 6 work wll on my PC, but after installing platform builder 5.0, VS2005 shows "XML parsing error" when open *.vcproj. We reinstall VS2005, Mobile SDK and platform builder, but the problem is the same. How to sovle the problem?
A: VS2005 + WM6 SDK + PB5 is definitely a supported scenario. We don't expect this to happen. Can you tell us more about what's going on? If, after you have everything installed, you create a new project, does that work? Is the project that's failing a Visual Studio one or a Platform Builder one? How about the *.sln? Does that fail too?

MikeCal [msft] (Expert):
Q:
About Q[16]. After installing VS2005 + WM6 SDK + PB5, open the *.sln. VS2005 shows error message, when open *.vcproj. The messages say fatal error: XML parsing error!
A: Can you answer some of the other questions I asked? What you're describing isn't something we've ever seen before.

Ryan Ward [MSFT] (Expert):
Q:
Hi, MikeCal. VS2005 + WM6 SDK + PB5 let our VS2005 cant open *.sln well when it opens *.vcproj. Because I am at home now, I cant show the detail info about this error. Could you tell me how to report the detail info of problem when I am at office tomorrow?
A: Please post this information in the Platform Builder newsgroup: microsoft.public.windowsce.platbuilder (https://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.windowsce.platbuilder\&lang=en\&cr=US)

andyraf_MSFT (Expert):
Q:
We are using SM501 LCD controller with VideoIn. We use DirectDraw VideoPort to give application developer a interface to hardware. Now I have seen, that VideoPort is no longer supported. What is the right interface for VideoIn ?
A: Video ports are deprecated, which means they will be no longer supported in future versions of the operating system, but I believe they were still supported in CE6. You may need to verify that independently via MSDN.

Sue Loh [MS] (Moderator):
Q:
I'm having trouble getting SQL Compact Edition to work on Windows CE 6.0. I'm finding conflicting information as to if it is supported or not. If not, can you recommend a SQL edition / version that will work?
A: I will attempt to answer, though I'm not really an expert in SQL. I presume you specifically mean CE 6.0, not Windows Mobile 6. It is possible that SQL-CE does not work in CE6, I'm not sure. However there are some database options that should work: EDB, a lightweight database created by the SQL team, and CEDB, an even lighter weight database from the "old days" of CE. We're trying to phase out CEDB in favor of EDB, so you probably should give EDB priority. I wish I could tell you more decisively whether SQL-CE works on CE6, but I'll probably have to ask around and follow up offline.

chetl_msft (Expert):
Q:
Is there an easy way to scale the icons on the standard WinCE graphical shell. Using VGA resolution on small screeens makes the icons very tiny...
A: You can scale your screen using HiDPI which will make the icons larger.

PaulT (Expert):
Q:
Does anyone know how to wrap text that is in a drop down box. The original list is wrapped but in the drop down box it is all in one line. Please help.
A: A "drop down box"? You can use owner-drawn listboxes to make elements in a list shaped, sized, or drawn just about any way you want. Maybe something more-useful would come to mind if you defined "drop down box"...

PaulT (Expert):
Q:
I am using COMBO BOX to make my drop down box. The information that I highlight is already wrapped but when it shows up in the combo box, it is on one line. Please help me. I can't make the combo box bigger then it will be too big.
A: As far as I know, you'd have to use owner drawing to do that (or you might be able to create your own control). The combo box was not really designed to show that sort of information; you might use a drop-down listbox instead, if you don't need to allow the user to edit the text. It sounds like you will probably find yourself in owner-draw land, though.

BorMing_MS (Expert):
Q:
When will we see constants published for g_pNKGlobal->dwProcessorType that identify arm11? Currently PROCESSOR_STRONGARM appears to be the highest level of ARM processor defined in winnt.h
A: I believe the value has to be PROCESSOR_STRONGARM due to backward compatibility reason. I don't suggest using that value for programing purpose. IsProcessorFeaturePresent is the right way to identify what feature a particular BSP support. Just make sure that you implement g_pOemGlobal->pfnIsProcessorFeaturePresent to identify the feature you support in your BSP.

BorMing_MS (Expert):
Q:
On CE 6, from a 'best practices' view. Should the KITL DLL implement its own OALArgsQuery function to get the KITL arguments, or should the OAL put those arguments in a data structure pointed to by OEMGLOBAL.pKitlInfo? Other?
A: implement OALArgsQuery in kitl.dll

Travis Hobrla [MS] (Expert):
Q:
On CE 6, from a 'best practices' view. Should the KITL DLL implement its own OALArgsQuery function to get the KITL arguments, or should the OAL put those arguments in a data structure pointed to by OEMGLOBAL.pKitlInfo? Other?
A: This is something we'll look at improving in the future - it's not good that KITL and the OAL have to duplicate this functionality. One possibility is implementing an OAL IOCTL that KITL can call to query the arguments.

Travis Hobrla [MS] (Expert):
Q:
Travis: I was thinking of calling it KITLArgsQuery and keep a clean separation between OAL and KITL. The KITL args could come from a datastructure shared by KITL and the Bootloader that the OAL knows nothing of.
A: While the boot arguments might have some KITL-specific material, I think it's usually best to keep them in one place because it's likely many of them will be shared. Odds are they're going to be in one place in memory, anyway, so I think the OAL is the logical place to keep that centralized info.

Karel Danihelka [MS] (Expert):
Q:
I2C bus drivers are often implemented in the OAL so that the OAL can access the RTC in OEMGetRealTime/OEMSetRealTime. Is best practices recommending that the stream version of the I2C driver use kernel IOCTL's to access the I2C driver?
A: It is very danger to access RTC on I2C from OAL (calculate how much time it takes to get real time over 400kHz bus). RTC function are called for example when thread is created. It adds hiden delay difficult to tract. I really suggest to base RTC on system clock and only sync it with RTC on I2C bus.

chetl_msft (Expert):
Q:
Build Question: When doing a blddemo from a clean source, My bootloader is trying to link with a library during the "Compile" pass. This fails because the library isn't built until the "LIB" pass. Is there a way to force my lib to generate?
A: You can use SYNCHRONIZE_DRAIN and SYNCHRONIZE_BLOCK in your sources to make sure the libary builds first and then your bootloader. Details are online here: https://msdn2.microsoft.com/en-us/library/ms924475.aspx

chetl_msft (Expert):
Q:
Build Question Continued: My dirs are in the correct order, so my bootloader is being compiled AFTER the lib is compiled. Both files are in %_targetplatroot%/src
A: Setting your dirs in the right order does not guarentee completion on a hyperthreaded or multiproc machine during build time. Please read my notes to question 79 which has links to setting up BLOCK and DRAIN synchronization.

Sue Loh [MS] (Moderator):
Q:
Not really a question, but feedback. The documentation contains many referenes to kern.exe, etc. that are out-of-date. This can be confusing to people porting BSP's, etc. You might want to go through the docs a little more and remove deprecated items.
A: Thanks Chris, I'll forward this to our doc team. You can also send feedback like this from the installed docs by clicking "send feedback." (I'm not sure if that's enabled on online docs, I know there were problems with getting too much random spam for a while.)

chetl_msft (Expert):
Q:
In the new CE 6.0 OAL timer tests, the drift test cases allow an optional "bound" to be specified to account for "expected" drift between clocks. The docs are not clear on what the bound means or the units/ratios being specified. Can you clarify?
A: I will answer this one via private channel as we are almost done today.

Sue Loh [MS] (Moderator):
Hello everyone, we are just about out of time.

Thank you for joining us today for our Windows Embedded CE 6.0 chat today! A special thank you to the product group members for coming out.

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

Sue Loh [MS] (Moderator):
Q:
Will questions not answered on-line be followed up via email?
A: No, we don't actually learn what your email addr is from the chat, sorry. Please try our newsgroups.

Sue Loh [MS] (Moderator):
Q:
What is the next date ?
A: November 27 will be the next chat, see https://msdn.microsoft.com/chats