我正在研究如何在Windows中用C编写iSCSI启动器(如Open-iSCSI(Linux)或Starwind iSCSI启动器(Windows))。 我以前编写了一个iSCSI目标,现在我正在学习相反的。 我已经编码大多发起人目标消息(login,读/写等)。 我现在的问题是如何将我的iSCSI启动程序连接到Windows中的SCSI子系统,它负责发送哪个lba读/写,发送查询,modesense信息。 我以前看过Open-iSCSI等其他开源启动器,它是一个内核模式驱动程序,我猜测它直接与Linux中的SCSI子系统进行接口,我不知道如何在Windows中进行操作。
有人build议SCSI微型端口驱动程序,我试图去看看。
有人能指出我正确的方向吗? 是否有一个API挂钩了操作系统如何将SCSI命令连接到自定义iSCSI启动器?
您可能会认为我正在重新发明,因为Windows上已经有一个内置的iSCSI启动器,但是有一些已经删除了启动器的精简版Windows,并且还想了解如何创build自定义iSCSI启动器我自己的。
我建议推动StarWind家伙把你的iSCSI启动器给你,以便进行维护/扩展。 它被写成一个单一的SCSI端口(超快!),并不被微软支持,所以没有办法MSFT将接受它的生产AS IS。 在这里平息他们:
https://forums.starwindsoftware.com/viewforum.php?f=4&sid=a76a36e594767d2d6e8cb0d97a9c2f91
或者,您需要检查所谓的“虚拟StorPort微型端口”,因为它是微软为虚拟存储驱动程序“祝福”的设计。 看到:
https://code.msdn.microsoft.com/windowshardware/WDKStorPortVirtualMiniport-973650f6
它应该是一个好的开始,从Open-iSCSI移植iSCSI堆栈不是微不足道的,但可行:)
祝你好运!