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

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

diagram illustrating how a reader driver interacts with the smart card driver library to process ioctl requests .

以下数字与上图中的数字相对应。 从数字 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. 智能卡DeviceControl 完成携带 IOCTL 的 IRP。

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

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