How to connect my iSCSIinitiator to scsi subsystem in windows

I am learning how to program an iSCSI initiator in Windows in C (for example, Open-iSCSI (Linux) or Starwind iSCSI initiator (Windows)). I have previously coded an iSCSI target and now I am learning the opposite. I've already coded basically an initiator for target messages (login, read / write, etc.). Now my problem is how to bind my iSCSI initiator to the SCSI subsystem on Windows, which will take care of sending lba read / write, send request, msgs messages. I have previously looked at other open source initiators like Open-iSCSI and this is a kernel mode driver that I assume interacts directly with the SCSI subsystem on Linux and I don't know how to do this on Windows.

Someone suggested the SCSI Miniport driver and I am trying to look into this.

Can anyone point me in the right direction? is there an API that intercepts how OS interfaces SCSI commands to a custom iSCSI initiator?

You might be thinking that I am reinventing the wheel since Windows already has a built-in iSCSI initiator, but there are some stripped-down versions of Windows that have the initiator removed and would also like to know how to create the iSCSI initiator UI myself.

+3


source to share


1 answer


I suggest directing the StarWind guys to give you an iSCSI initiator for maintenance / expansion. It is written as a monolithic SCSI port (super fast!) And is not supported by Microsoft, so MSFT will not accept it for AS IS production. Ping them here:

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

Alternatively, you need to check what is called the "Virtual StorPort miniport" as it blessed Microsoft for virtual storage drivers. Cm:



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

This should be a good start for you, migrating an iSCSI stack from Open-iSCSI is not trivial, but doable :)

Good luck!

+2


source







All Articles