Reference Manual
Prox–DU & Prox–SU
www.gemalto.com
DOC118569D Public Use Page 99/145
USB CCID Class Driver Details
This paragraph provides USB smart card class-driver release information for devices that
are compliant with the USB CCID specification.
Overview
Microsoft CCID class driver
The Microsoft CCID class driver is compatible with the USB Chip/Smart Card Interface
Devices (CCID) Specification (revision 1.0 or later), which specifies a protocol that a host
(computer) can use to interact with CCID class devices or interface (on a composite device).
Neither the mechanics of the smart-card interface or the content of the data are described in
the CCID specification. However, the CCID specification does provide detailed information
with respect to the USB-related configuration and communication channels.
The current release of the Microsoft CCID class driver implements a majority of the features
defined in the USB CCID specification. The Microsoft CCID class driver will support the
following items that are based on the USB CCID Class specification:
• 5.0V, 3.0V, and 1.8V cards.
• Both T=0 and T=1 protocols.
• Variable clock frequencies and data rates.
• All features in the dwFeatures field, including Character, TPDU, APDU, and
extended APDU levels, although TPDU is the preferred exchange level.
• In order to send or receive an Escape command to a reader, the DWORD registry
value EscapeCommandEnable must be added and set to a non-zero value under
the HKLM\SYSTEM\CCS\Enum\USB\Vid*Pid*\*\Device Parameters key.
Then the vendor IOCTL for the Escape command is defined as follows: #define
IOCTL_CCID_ESCAPE SCARD_CTL_CODE(3500).
With the enabled Escape Command, security against malicious escape commands
becomes the reader's responsibility.
• 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 Class
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 may or may not be correct.
The following features are not currently supported in this initial release of the Microsoft
CCID class driver:
• Keypad or LCD display support.
• Vendor/device-specific string name support in the device manager. Since the INF to
load USBCCID is not included with Windows, the INF will be renamed as
OEM*.INF. Vendors can not refer to this INF through Include/Needs.
• Support for multiple slots on readers. If the reader has multiple slots, only slot 0 will
be used. Devices that wish to expose multiple readers may develop a composite
device (a CCID-compliant interface would then be required for each reader).