Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Required routines
The following routines are required by a WDM reader driver.
DriverEntry
Initializes the driver object and the dispatch table.
AddDevice
Creates a device object for the smart card reader. In addition, AddDevice can call any of the following driver library routines:
- SmartcardInitialize (WDM) to complete driver initialization. Calling this routine in AddDevice is obligatory.
- SmartcardLogError (WDM) to log an error. Drivers must call this routine in AddDevice if SmartcardInitialize (WDM) fails.
- SmartcardCreateLink (WDM) to create a symbolic link for the reader device in the registry.
Unload
Removes the driver from the system.
DispatchCreate
-and-
DispatchClose
Supports IRP_MJ_CREATE and IRP_MJ_CLOSE<, respectively. To establish a connection to the reader, the resource manager sends IRP_MJ_CREATE to the reader driver. To sever the connection, the resource manager sends IRP_MJ_CLOSE.
DispatchCleanup
Supports IRP_MJ_CLEANUP, which the resource manager sends to the reader driver to cancel pending I/O requests.
DispatchPnP
Supports IRP_MJ_PNP
DispatchPower
Supports IRP_MJ_POWER.
DispatchDeviceControl
Supports IRP_MJ_DEVICE_CONTROL and is the main entry point for smart card requests. Upon receiving IRP_MJ_DEVICE_CONTROL, DispatchDeviceControl must immediately call SmartcardDeviceControl (WDM), which is the smart card driver library routine that handles device-control requests. The following code example shows how to call this library routine from a WDM driver:
NTSTATUS
DriverDeviceControl(
PDEVICE_OBJECT DeviceObject,
PIRP Irp
)
{
PDEVICE_EXTENSION deviceExtension = DeviceObject -> DeviceExtension;
return SmartcardDeviceControl(
&(deviceExtension->SmartcardExtension),
Irp
);
If it is unable to handle the particular IOCTL that is indicated in the call, SmartcardDeviceControl will call the driver's callback for unknown IOCTL requests.