3

我正在研究如何用 C 语言在 Windows 中编写 iSCSI 启动器(如 Open-iSCSI (Linux) 或 Starwind iSCSI 启动器 (Windows))。我之前编写了一个 iSCSI 目标,现在我正在学习它的反面。我已经编写了主要目标消息(登录、读/写等)的启动器。我现在的问题是如何将我的 iSCSI 发起程序连接到 Windows 中的 SCSI 子系统,该子系统负责发送要读/写的 lba、发送查询、modesense 消息。我之前看过其他开源启动器,如 Open-iSCSI,它是一个内核模式驱动程序,我猜它直接与 Linux 中的 SCSI 子系统接口,我不知道在 Windows 中如何做。

有人建议使用 SCSI Miniport 驱动程序,我正在尝试调查。

有人可以指出我正确的方向吗?是否有一个 API 将操作系统如何将 SCSI 命令连接到自定义 iSCSI 启动器?

您可能认为我在重新发明轮子,因为 Windows 上已经有一个内置的 iSCSI 启动器,但是有一些精简版的 Windows 已经删除了启动器,并且还想了解如何创建自定义 iSCSI 启动器我自己的。

4

1 回答 1

2

我建议推动 StarWind 的人给你他们的 iSCSI 启动器以进行维护/扩展。它被编写为单片 SCSI 端口(超快!),并且不受 Microsoft 支持,因此 MSFT 不会按原样接受它用于生产。在这里 ping 他们:

https://forums.starwindsoftware.com/viewforum.php?f=4&sid=a76a36e594767d2d6e8cb0d97a9c2f91

或者,您需要检查所谓的“虚拟 StorPort 微型端口”,因为它是微软为虚拟存储驱动程序“祝福”的设计。看:

https://code.msdn.microsoft.com/windowshardware/WDKStorPortVirtualMiniport-973650f6

这对您来说应该是一个好的开始,从 Open-iSCSI 移植 iSCSI 堆栈并非易事,而是可行的 :)

祝你好运!

于 2017-04-12T10:22:15.640 回答