Smart Card Driver Device Names

Every WDM and VxD device driver has two names. WDM device drivers use kernel device name and DOS device name while VxD device drivers use driver device name and link name.

WDM Device Driver Names

For WDM device drivers the kernel device name is the device name that is known only in the name space of the kernel. The DOS device name is the name that a Win32® application uses to communicate with the driver.

Kernel Device Name: The name that is known only in the kernel name space can be chosen by the driver developer, but it should follow Windows NT device name naming conventions, in which a device name looks like this:

\Device\DeviceName[Unit]

where DeviceName is a name that reflects the type of driver and Unit is the zero-based unit number of that driver. The unit number is used to distinguish the device if more than one device of that type is installed in a system.

DOS Device Name: Since every driver must communicate with the smart card resource manager, it must have a specific name for the Win32 name space. This name must be:

\DosDevices\SCReader[Unit]

The unit number does not need to be the same as the one for the kernel name space. It should be the first available unit number. Use SmartcardCreateLink (WDM) to generate the DOS device name. The smart card driver library is able to create such a name automatically.

VxD Device Driver Names

For VxD device drivers use the driver device name and the link name.

Driver Device Name: The driver device name is specific to the driver. As with every other VxD name, an application that needs to access a device needs to know the driver name in order to open the device. A device name usually looks like DEVICE.VXD.

Link Name: Since every driver must communicate with the smart card resource manager, the resource manager needs a way to map a generic name to a specific driver name. This mapping is done through the registry. The registry contains the generic name as the key to the specific driver name:

SCReader[Unit]

The smart card driver library is able to create such a name automatically.