WDM 读卡器驱动程序

必需的例程

WDM 读取器驱动程序需要以下例程。

DriverEntry

初始化驱动程序对象和调度表。

AddDevice

为智能卡读取器创建设备对象。 此外, AddDevice 可以调用以下任一驱动程序库例程:

Unload

从系统中删除驱动程序。

DispatchCreate

-和-

DispatchClose

分别支持 IRP_MJ_CREATEIRP_MJ_CLOSE<。 若要与读取器建立连接,资源管理器会将 IRP_MJ_CREATE 发送到读取器驱动程序。 为了断断连接,资源管理器会发送 IRP_MJ_CLOSE

DispatchCleanup

支持 IRP_MJ_CLEANUP,资源管理器将其发送到读取器驱动程序以取消挂起的 I/O 请求。

DispatchPnP

支持 IRP_MJ_PNP

DispatchPower

支持 IRP_MJ_POWER

DispatchDeviceControl

支持IRP_MJ_DEVICE_CONTROL,是智能卡请求main入口点。 收到IRP_MJ_DEVICE_CONTROL后,DispatchDeviceControl 必须立即调用 SmartcardDeviceControl (WDM) ,这是处理设备控制请求的智能卡驱动程序库例程。 以下代码示例演示如何从 WDM 驱动程序调用此库例程:

NTSTATUS
DriverDeviceControl(
    PDEVICE_OBJECT DeviceObject,
    PIRP Irp
    )
{
    PDEVICE_EXTENSION deviceExtension = DeviceObject -&gt; DeviceExtension;

    return SmartcardDeviceControl(
        &(deviceExtension-&gt;SmartcardExtension),
        Irp
        );

如果无法处理调用中指示的特定 IOCTL,SmartcardDeviceControl 将为未知的 IOCTL 请求调用驱动程序的回调。