如何将我的iSCSIinitiator连接到Windows中的scsi子系统

时间:2017-04-11 08:51:09

标签: c windows api iscsi

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

有人建议使用SCSI Miniport驱动程序,我正试图研究它。

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

你可能会认为我正在重新发明轮子,因为Windows上已有内置的iSCSI发起程序,但是有一些已经删除了发起程序的Windows版本,并且还想学习如何创建自定义我自己的iSCSI发起者。

1 个答案:

答案 0 :(得分:2)

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

https://facebook.github.io/react/warnings/unknown-prop.html

或者你需要检查一下所谓的“虚拟StorPort微型端口”,因为这是微软为虚拟存储驱动程序设计的“祝福”。参见:

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

这应该是一个很好的开始,从Open-iSCSI移植iSCSI堆栈并非易事,但可行:)

祝你好运!