1

我有一个类似智能卡的 miniSD 卡(据我所知,它是一个 javacard),我正在尝试为它编写一个在 Windows 和 Linux 上运行的模拟器。该模拟器将用于软件集成测试。由于几个原因,我想在不使用实际硬件的情况下测试我的客户端。一个原因是实际硬件将不可逆地改变其状态并且不允许完全重置。

该设备采用 FAT32 文件系统实现大容量存储。它包含一个特殊的设备文件,用于通过简单的文件写入/读取操作来控制设备。

我的目标是,一旦模拟器启动,虚拟(模拟)设备就会在 Windows 资源管理器中显示驱动器号,就像有人实际插入真实设备一样。

我想知道是否有任何开放的软件项目可以作为我的程序的基础?最大的挑战显然是

  • 提供/开发“虚拟”(USB/SD)大容量存储设备
  • 拦截对特殊设备文件的文件 I/O 操作。

根据 Wikipedia,设备文件是简化驱动程序开发的常用方法。所以我想知道是否有针对驱动程序开发人员的现有仿真解决方案。至少我找不到任何东西。

模拟设备文件本身将是重要的第一步。我的第一个想法是使用普通文件并通过在观察该文件的同时实际读取/写入该文件来与客户端进行通信。即客户端一写入文件就清除文件并将响应写入其中。我不知道这是否可行。一个问题是客户端没有以共享模式打开文件,所以我的模拟器无法同时访问它。

然后我发现QEMU可以模拟大容量存储,但是它似乎只支持图像文件并且可能不允许设备文件。

Microsoft 有一些关于如何编写 USB 设备仿真器和驱动程序的文档,但它似乎非常复杂,我想知道是否有可以扩展的现有解决方案:

最后是USB/IP 项目,但我不知道它是否有帮助,因为我仍然需要开发驱动程序,然后我又回到了上面复杂的 MS 文档。

4

0 回答 0