Production-Quality Drivers (Windows Embedded CE 6.0)
1/6/2010
Microsoft provides production-quality drivers that adhere to best practices for developing Windows Embedded CE device drivers.
Production-quality drivers generally have these characteristics:
- Work without modification on the buses for which they were designed.
- Reduce the amount of customization required for drivers to function on various hardware platforms.
- Enable all necessary functionality in a specific driver technology.
- Expose drivers in the Platform Builder Catalog.
- Use the bus agnostic model when applicable.
For more information, see Bus Agnostic Drivers. - Use the _countof macro, defined in stdlib.h as of Windows Embedded CE 6.0, to compute the number of elements in an array. Using the _countof macro adds consistency and provides stronger type checking.
- Comment source code.
- Use all Windows Embedded CE capabilities when possible.
For example, in Windows CE 5.0, driver namespaces, Power Manager IOCTLs, and bus driver interfaces are fully implemented in production-quality drivers. For more information, see Device File Names, Power Management I/O Controls, and Bus Drivers. - Have the following architectural improvements:
- Minimized PDD code to allow easier porting to other hardware platforms.
- Abstracted resource assignments to the registry when possible.
- Reusable, platform-independent libraries.
For more information, see Best Practices for Developing a Device Driver.
Not every driver in Windows Embedded CE is defined as a production-quality driver.
The following tables show the production-quality device drivers, the location of the device driver's sources file under %_WINCEROOT%, and the name of the binary.
Driver | Sources file location | Binary |
---|---|---|
ATAPI PCI/IDE storage block driver |
Public\Common\OAK\Drivers\Block\ATAPI\Common |
Atapi.dll |
USB host mass storage client driver |
Public\Common\OAK\Drivers\USB\Class\Storage\Class Public\Common\OAK\Drivers\USB\Class\Storage\Disk\SCSI2 |
Usbmsc.dll Usbdisk6.dll |
USB function mass storage driver |
Public\Common\OAK\Drivers\USBFN\Class\Storage\Transport\BOT |
Usbmsfn.dll |
Secure Digital Memory Card driver |
Not applicable. |
Sdmemory.dll |
Driver | Sources file location | Binary |
---|---|---|
ATI Rage XL Expert 98 (Warbird) |
Public\Common\OAK\Drivers\Display\RageXL |
Ddi_ragexl.DLL |
Silicon Motion 3DR (Cougar) |
Public\Common\OAK\Drivers\Display\SMI3DR |
Ddi_3dr.DLL |
MediaQ MQ200 |
Public\Common\OAK\Drivers\Display\MQ200 |
Ddi_mq200.DLL |
Flat driver for the Intel PXA27x Development Platform |
Platform\Common\SRC\SOC\PXA27X_MS_V1\display\PXA27X_LCD |
Pxa27x_lcd.DLL |
VGA linear (flat) framebuffer driver |
Public\Common\OAK\Drivers\Display\VGAFlat |
Ddi_flat.DLL |
Flat driver for the Samsung S3c2410x LCD controller |
Platform\DeviceEmulator\SRC\Drivers\Display\LCD\S4C2410X_LCD |
S3c2410x_lcd.dll |
Driver | Sources file location | Binary |
---|---|---|
MirrorBit NOR flash driver |
Public\Common\OAK\Drivers\Block\MSFlashFMD\FASL\FASLD |
Fasld.dll |
SD NAND flash PCI driver |
Public\Common\OAK\Drivers\Block\MSFlashFMD\SDNPCI\SDNPCID |
Sdnpcid.dll |
NOR flash Strataflash |
Public\Common\OAK\Drivers\BLOCK\MSFlashFMD\Strata\StrataD |
Stratad.dll |
SmartMedia NAND flash (SMFLASH) driver |
Not applicable. |
Smflash.dll |
Driver | Sources file location | Binary |
---|---|---|
NE2000-compatible generic Ethernet adapter PCI, PC Card, and ISA driver |
Public\Common\OAK\Drivers\NetCard\NE2000 |
Ne2000.dll |
SMS SMSC100FD Ethernet adapter driver for SH4-based hardware platforms |
Public\Common\OAK\Drivers\NetCard\SMSC100FD |
Smsc100fd.dll |
Intel Pro E100BEX Ethernet adapter driver |
Public\Common\OAK\Drivers\NetCard\E100BEX |
E100bex.dll |
Atheros AR6000 Wi-Fi driver for Compact Flash adapter |
Public\Common\OAK\Drivers\NetCard\AR6K |
AR6K_ndis_cf.dll |
Atheros AR6000 Wi-Fi driver for SDIO adapter |
Public\Common\OAK\Drivers\NetCard\AR6K |
AR6K_ndis_sdio.dll |
CISCO Aironet 340/350 PCMCIA WLAN card driver |
Not applicable. |
Pcx500.dll |
Intersil Prism2 WLAN PCMCIA driver |
Not applicable. |
Islp2nds.dll |
Realtek RTL188x 802.11b native driver |
Not applicable. |
Rtl1880nf.dll |
Driver | Sources file location | Binary |
---|---|---|
PC Card MDD |
Public\Common\OAK\Drivers\PCCard\MDD\MDD_Both |
Pcc_serv.dll |
Texas Instruments PC Card socket driver for the 12XX, 14XX, and 15XX PC Card controllers |
Public\Common\OAK\Drivers\PCCARD\TIPCCard\TIPCCard_Both |
Pcc_tipccard.dll |
i82365 socket driver |
Public\Common\OAK\Drivers\PCCard\I82365 |
Pcc_i82365.dll |
Legacy PC Card driver that allows PCMCIA clients to work with a bus agnostic driver |
Public\Common\OAK\Drivers\PCCard\PCMCIA |
Pcc_pcm.dll |
Driver | Sources file location | Binary |
---|---|---|
Power Manager PDD |
Public\Common\OAK\Drivers\PM\PDD\Common Public\Common\OAK\Drivers\PM\PDD\Default Public\Common\OAK\Drivers\PM\PDD\PDA |
Pm_pdd_common.dll Pm_default_pdd.dll Pm_pda_pdd.dll |
Driver | Sources file location | Binary |
---|---|---|
SDIO standard host controller driver based on version 1.0 of the SDA Standard Host Register Specification |
Not applicable. |
SDHC.dll |
SD bus driver that exposes an API for developing SD Memory Card and other SDIO client drivers |
Not applicable. |
SDBus.dll |
Samsung 2410 SDIO host controller driver |
Not applicable. |
Sdhc_sc2410.dll |
PXA27x SD host controller driver for the Intel PXA27x Development Platform |
Not applicable. |
Sdhc_mainstoneii.dll |
Driver | Sources file location | Binary |
---|---|---|
Com16550 serial port driver for 16550 UARTs |
Public\Common\OAK\Drivers\Serial\COM16550 Public\Common\OAK\Drivers\Serial\SER16550 |
Com16550.dll Ser16550.lib |
S3c2410x serial port driver |
Platform\DeviceEmulator\Src\Drivers\Serial |
Serial.dll |
USB function serial client driver |
Public\Common\OAK\Drivers\USBFN\Class\Serial |
Serialusbfn.dll |
Driver | Sources file location | Binary |
---|---|---|
Netchip NET2280 USB 2.0 function bus driver |
Public\Common\OAK\Drivers\USBFN\Controller\NET2280 |
Net2280.dll |
PXA27x USB function driver for the Intel PXA27x Development Platform |
Platform\Common\SRC\SOC\PXA27X_MS_V1\USBFN |
Pxa27x_usbfn.dll |
Samsung 2410 USB function bus driver |
Platform\DeviceEmulator\SRC\Drivers\USB\Function |
Sc2410usbfn.dll |
Driver | Sources file location | Binary |
---|---|---|
EHCI USB 2.0 host controller driver |
Public\Common\OAK\Drivers\USB\HCD\USB20\EHCIPDD |
Ehci.dll |
USB driver interface |
Public\Common\OAK\Drivers\USB\USBD |
Usbd.dll |
Legacy OHCI USB host controller driver |
Public\Common\OAK\Drivers\USB\HCD\OHC |
Ohci.dll |
OHCI USB host controller driver |
Public\Common\OAK\Drivers\USB\HCD\OHCD2 |
Ohci2.dll |
UHCI USB host controller driver |
Public\Common\OAK\Drivers\USB\HCD\UHC |
Uhci.dll |
OHCI USB host controller driver for the Intel PXA27x Development Platform |
Platform\Common\SRC\SOC\PXA27X_MS_V1\HCD |
Pxa27x_ohci.dll |
USB Human Input Device (HID) class driver |
Public\Common\OAK\Drivers\USB\Class\HID\HIDClass\USBPDD |
Usbhid.dll |
See Also
Concepts
Device Driver Source Code
Windows Embedded CE Drivers
Other Resources
Best Practices for Developing a Device Driver
Device Driver Libraries
Production-Quality OAL
Sources File