2017-04-11 38 views
3

我正在研究如何在C中编写Windows中的iSCSI启动程序(如Open-iSCSI(Linux)或Starwind iSCSI启动程序(Windows))。我以前编写过一个iSCSI目标,现在我正在学习与之相反的东西。我已经编码了主要发起者目标消息(登录,读/写等)。我现在面临的问题是如何将我的iSCSI启动程序连接到Windows中的SCSI子系统,它负责发送哪个lba读取/写入,发送查询,modesense信息。我以前看过其他开放源代码启动器,如Open-iSCSI,它是一个内核模式驱动程序,我猜测它直接与Linux中的SCSI子系统连接,我不知道如何在Windows中执行操作。如何将我的iSCSIinitiator连接到Windows中的scsi子系统

有人建议SCSI微型端口驱动程序,我正在试着去研究。

有人能指出我正确的方向吗?有没有一个API能够将操作系统与SCSI定义的SCSI命令联系起来?

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

回答

2

我建议推送StarWind家伙,让他们远离iSCSI启动器进行维护/扩展。它被写成单片SCSI端口(超快!),并且不被Microsoft支持,因此MSFT不会接受它用于生产AS IS。这里ping通他们:

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

或者您需要检查什么叫做“虚拟StorPort的微型端口”,因为它是虚拟存储驱动程序设计的“福地”的微软。请参阅:

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

这应该是一个良好的开端对你来说,从开放的iSCSI移植的iSCSI堆栈是不平凡的,但可行的:)

祝你好运!

+0

试过看这个......是这样的O.S .-> WDKStorPortVirtualMiniport-> iSCSI Initiator?调用启动函数的部分在哪里?不过,这可能是我正在寻找的。谢谢。 –

+1

iSCSI启动器示例是关于通过公共API管理MSFT iSCSI启动器的,从我的理解您要更换MSFT而不是与他们的代码进行“交谈”... – BaronSamedi1958

相关问题