title | description | keywords | ms.date | ||
---|---|---|---|---|---|
WDM Reader Driver |
WDM Reader Driver |
|
04/20/2017 |
The following routines are required by a WDM reader driver.
Initializes the driver object and the dispatch table.
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.
Removes the driver from the system.
-and-
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.
Supports IRP_MJ_CLEANUP, which the resource manager sends to the reader driver to cancel pending I/O requests.
Supports IRP_MJ_PNP
Supports IRP_MJ_POWER.
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.