Introduction: David Liao

My name is David Liao. I have been working for Microsoft for about 9 years. My working range is from Device Drivers to BSPs. I have done a lot of Windows CE drivers and BSPs for Microsoft. For example, User Mode Driver Framework, SD Bus driver re-design, USB 2.0 EHCI stack, PC Card stack, Windows CE Bus Driver Architect are among them. For the BSP, I had designed USB Function Controller driver, USB OTG, PCI and others.


Before I joined Microsoft, I worked for Xerox, Teklogix and other Company as a DSP Software Developer. I wrote several Digital Filters, Pattern Recognition and Networking Stack software for Company.


I have been in the software industry for 20 years. One thing I have learned from my experience: if there is bug, it will be hit sooner or later.

Comments (16)
  1. ce_base says:

    Welcome to the blog, David!  Great first post.  🙂


  2. Venkat says:

    Is the EHCI Driver available in source in Platform Builder ?

  3. Venkat says:

    How is USB OTG supported in WinCE? What controllers are currently supported?

  4. David Liao says:

    Q:Is the EHCI Driver available in source in Platform Builder ?

    A: Yes, It is available on both CE 5 and CE 6. However, I recommand to use CE 6 version because it fixed a lot of bug.  If you decide to use CE 5 version, please check the QFE on  EHCI driver.

    Q: How is USB OTG supported in WinCE? What controllers are currently supported?

    A: USB OTG is supported on CE 6 and Windows Mobile 5.3 or later. USB OTG is a bus driver which host one USB Function Controller driver and one USB Host Controller Driver according the protocol. The Code we supported OTG on Windows CE 6 is Bulverde(pxa27x) chipset and OMAP 730, OMAP 1030

  5. Venkat says:

    What USB classes(Function Client Drivers) are supported by CE Function Stack ?  We are looking for CDC-ACM and CDC-WHCM support in the Function Stack. Is it supported?

  6. Venkat says:

    What are the certification requirements for Windows CE USB Stack ? Do OEMs need to apply to for Windows CE USB Software certification ? or is it pre-certified ?

  7. David Liao says:

    What USB classes(Function Client Drivers) are supported by CE Function Stack ?  We are looking for CDC-ACM and CDC-WHCM support in the Function Stack. Is it supported?

    No, there is no USB function client driver support fors CDC-ACM directly. But, we have USB Function Serial driver which can support USB Modem (recogonized by XP and load USBSer.sys). This driver is very close to CDC-ACM and you can use it as example.

    Current, we don’t have CDC-WHCM support.

  8. surendrai says:

    Does CE Function Stack support DFU (Device Firmware upgrade) ?

  9. Dilpal says:

    How to write a IDE device driver in WinCE5.0? I have written the FMD based driver for nand/nor which is FMD based. The FAT calls the FAL which calls the FMD layer and FMD layer writes to the nand/nor. The ide seems to be a Block device driver but how this driver works I am not able to understand. There are alot of references but dont know which one to use ..PUBLICCOMMONOAKDRIVERSBLOCK has ATADISK and ATAPI. The ATAPI contains numerous files for diffrent ATA devices. Can you let me know from where to start and which one to refer

  10. paulpan says:


       I have seen you talk about usbser.sys on Pc, is it a virtual com port,and can I use it just like a real com port(can i just use the App that operate real com port to operate it?);I using wince5.0 ,and at WINCE500PUBLICCOMMONOAKDRIVERSUSBFNCLASS,there is 3 class driver,but seem as that they all not ok to link usbser.sys on pc, which one should i use?


  11. Viral Mehta (MSFT) says:

    Hi Paulpan

    This is Viral. I work in the same team as David and primarily work on USB.

    To talk to the device using the virtual com port, you can use usbser.sys driver on the desktop. The corresponding class driver on the device is serial which is located under WINCE500PUBLICCOMMONOAKDRIVERSUSBFNCLASSSERIAL.

    To use the serial class driver with usbser.sys, you will have to use the USBSER_CLASS profile in the registry instead of the SERIAL_CLASS as the default cient driver under HKLM/DRIVERS/USB/

    HKLM/DRIVERS/USB "DefaultClientDriver"="USBSER_CLASS"

  12. rahi says:

    Hi david,

    I faced one problem. I am using VIA board ….when i load run time image platform-wince6.0 and trying to connect EHCI device it got hanged…..wat may be the possible cause????????

  13. surendrai says:

    What USB Function class drivers are supported by Windows CE ?

    Is the following supported ?

    Mass Storage


        – Abstract Control Model (ACM)

        – Telephone Control Model  (TCM)

        – Ethernet Networking Control Model (ECM)

        – Wireless Handset Control Model (WHCM)

        – Device Management Model (DMM)

        – Mobile Direct Line Model (MDLM)

        – OBEX Model

        – HID

        – Still Image and Pictbridge

        – Audio, Video

        – MTP

    Device Firmware Upgrade

  14. David Liao says:

    I may never know how many USB Function Class Drivers are supported today because a lot of external Windows CE developer are working on Class Drivers. I only can tell you what Microsoft have released.

    Mass Storage.

    USB Serial Modem Driver (Close to CDC ACM specificiation but it has differences).

    USB Activesync Driver.

    Microsoft RNDIS Client Driver.

    Printer Transport Function Class Driver

    Composite Function Driver.

  15. paulpan says:

    Hi David,

       good day!

       I am try to develop usb host audio driver under wince5,and i want to know what interface should i expose to os? thus,the os can transmit data to usb when it play audio. if i only expose a stream interface, how the os know to transmit data to usb?


  16. shaoning says:

    hi, David,

    Glad to meet you here.

    I meet with a problem here,with a driver. using PCI master DMA, while i have finished the writing the device register(memry type) ,all the dma base and length, is correct, and the data is ready, but DMA doesn’t work, whether the PCIbus should config what?, i had check the PCI config COMMAND register,the master is enable, do you know what is the problem?does something wrong with PCI initalization?in windows ce flatform config?



Comments are closed.

Skip to main content