USB CCID Smart Card Reader Class Driver (Windows Embedded CE 6.0)


Beginning with Windows Embedded CE 6.0 R2, Windows Embedded CE supplies a class driver for smart card readers that are compliant with revision 1.0 or later of the USB Chip/Smart Card Interface Devices (CCID) specification. The class driver model of this driver is a subset of the one defined for USB CCID smart card reader drivers on Windows-based desktop platforms.

The USB CCID Smart Card Reader class driver can reduce the need for a hardware vendor to create a device-specific driver for each smart card reader. Reducing the need for a device-specific driver can reduce the driver development cost, improve driver and system stability, reduce time to market, and lead to a simplified plug and play experience for customers who use compliant devices.

For information about the USB CCID Specification, see this Web site.

For information about smart card drivers for the Windows desktop platform, see this Microsoft Web site.

USB CCID Smart Card Class Driver Details

The USB CCID specification defines a protocol that a host computer can use to interact with CCID class devices, or interfaces on a composite device. The specification does not describe either the mechanics of the smart card interface or the content of the data. However, the specification does provide detailed information with respect to the USB-related configuration and communication channels.

The USB CCID Smart Card reader class driver implements most of the features defined in the USB CCID specification. The USB CCID class driver supports the following items that are based on the USB CCID specification:

  • 5.0V, 3.0V, and 1.8V cards.
  • Both T=0 and T=1 protocols.
  • Variable clock frequencies and data rates.
  • Most of the features in the dwFeatures field, including Character, TPDU, APDU, and extended APDU levels, although TPDU is the preferred exchange level.
  • USB CCID readers should implement the GET_CLOCK_FREQUENCIES and GET_DATA_RATES properties, even if bit 20h in dwFeatures is set. The values of the bNumDataRatesSupported and bNumClockSupported functions should also be non-zero accordingly. This is due to a problem with the USB CCID specification where the driver is supposed to send a PPS request; however, if bit 20h and the values associated with the PPS request are zero, the driver does not know what values to set in the PPS request. If bNumDataRatesSupported and/or bNumClockSupported are set to zero, the driver will make a guess as to what baud rates the reader supports, which might or might not be correct.

The USB CCID Smart Card reader class driver does not support the following features. Future releases of the driver might support these features.

  • Keypad or LCD display support. If you need to provide these features on a smart card, define a different interface (generally HID).
  • Support for multiple slots on readers. If the smart card reader has multiple slots, the driver uses only slot 0. To expose multiple smart card readers, develop a composite device (a USB CCID-compliant interface would then be required for each smart card reader).
  • Driver support for system wake from suspend/hibernate state on card insertion (even if the reader sets the remote wake bit). This feature might be made available as more smart card readers provide remote wake functionality.
  • Selective suspend support.
  • Support for issuing multiple commands to a reader that implements queuing capabilities.
  • Support for any of the mechanical driver features. Future support plans will be determined when the driver features are standardized. For more information, see section 6.1.12 of the USB Chip/Smart Card Interface Devices (CCID) Specification revision 1.1.
  • Escape command.

USB CCID Smart Card Reader Testing

The Interface Device Test 2 (IFDTest2) test suite is offered in the Windows Embedded CE 6.0 R2 CETK to verify that a smart card reader and associated device driver function properly with a Windows Embedded CE–powered device. This test suite is adapted from the Windows desktop version to account for the blocking nature of I/O control calls in Windows Embedded CE. Additionally, hibernation tests have been replaced with suspend tests. For additional information on the smart card reader tests, see Smart Card Reader Tests.

See Also

Other Resources

Smart Card Drivers