与智能卡驱动程序库的交互
下图显示了读取器驱动程序如何与智能卡驱动程序库交互,以便处理从资源管理器收到的 IOCTL 请求:
以下数字与上图中的数字相对应。 从数字 1 开始,下图显示了读取器驱动程序必须完成 (的步骤,以及系统提供的驱动程序库) 处理 IOCTL 请求:
读取器驱动程序将所有 IOCTL 请求传递到 SmartcardDeviceControl (WDM) 驱动程序库例程。
如果读取器驱动程序传递给 SmartcardDeviceControl 的参数不正确, 则 SmartcardDeviceControl 将返回错误消息。 SmartcardDeviceControl 在未完成 IOCTL 请求的情况下返回 。 在这种情况下,读取器驱动程序必须完成 IOCTL 请求。
如果参数有效, SmartcardDeviceControl 会处理 IOCTL 请求(如果可以)。
SmartcardDeviceControl 检查读取器驱动程序是否具有为其正在处理的 IOCTL 请求定义的回调例程。 如果回调存在, SmartcardDeviceControl 将调用它。
回调例程调用完成 IOCTL 请求处理所需的所有驱动程序库例程。
处理 IOCTL 请求后,回调例程将返回到 SmartcardDeviceControl。
SmartcardDeviceControl 完成携带 IOCTL 的 IRP。
SmartcardDeviceControl 将控制权返回到读取器驱动程序调度例程。
智能卡库同步对读取器驱动程序的访问。 不会同时调用两个回调函数。 但是,必须异步处理卡插入和删除的事件处理。