与智能卡驱动程序库的交互

下图显示了读取器驱动程序如何与智能卡驱动程序库交互,以便处理从资源管理器收到的 IOCTL 请求:

说明读取器驱动程序如何与智能卡驱动程序库交互以处理 ioctl 请求的示意图。

以下数字与上图中的数字相对应。 从数字 1 开始,下图显示了读取器驱动程序必须完成 (的步骤,以及系统提供的驱动程序库) 处理 IOCTL 请求:

  1. 读取器驱动程序将所有 IOCTL 请求传递到 SmartcardDeviceControl (WDM) 驱动程序库例程。

  2. 如果读取器驱动程序传递给 SmartcardDeviceControl 的参数不正确, 则 SmartcardDeviceControl 将返回错误消息。 SmartcardDeviceControl 在未完成 IOCTL 请求的情况下返回 。 在这种情况下,读取器驱动程序必须完成 IOCTL 请求。

  3. 如果参数有效, SmartcardDeviceControl 会处理 IOCTL 请求(如果可以)。

  4. SmartcardDeviceControl 检查读取器驱动程序是否具有为其正在处理的 IOCTL 请求定义的回调例程。 如果回调存在, SmartcardDeviceControl 将调用它。

  5. 回调例程调用完成 IOCTL 请求处理所需的所有驱动程序库例程。

  6. 处理 IOCTL 请求后,回调例程将返回到 SmartcardDeviceControl

  7. SmartcardDeviceControl 完成携带 IOCTL 的 IRP。

  8. SmartcardDeviceControl 将控制权返回到读取器驱动程序调度例程。

智能卡库同步对读取器驱动程序的访问。 不会同时调用两个回调函数。 但是,必须异步处理卡插入和删除的事件处理。