NVME support in Windows 8.1 inbox driver

Hello Guys,

lately I have been experimenting with the newly purchased NVME device.
I am running Windows 8.1 32bit (test purposes).

Apparently, the two main roads to go with NVME drivers concerned are the MS inbox driver and the OFA community driver.

I have quickly managed to suit the OFA community driver to my needs, as they provide documentation and help running NVME commands from user mode - no problems there.
The driver, however, was severely bushed for several issues in numerous forum threads, here and elsewhere.

The MS driver, on the other hand, is much more tricky. I did not manage to run SCSI_PASSTHROUGH on it and according to the internet, it doesn’t support WMI either.

My question is - does anyone know a way of accessing device information (e.g. serial number, number of LBA etc.) of NVME device using MS inbox driver ?
If so, please suggest.

Thank you,
Sagi

Issue Inquiry cmd using SCSI_PASSTHROUGH to get Partial device info .

On Wed, Jul 2, 2014 at 7:25 PM, wrote:

> Hello Guys,
>
> lately I have been experimenting with the newly purchased NVME device.
> I am running Windows 8.1 32bit (test purposes).
>
> Apparently, the two main roads to go with NVME drivers concerned are the
> MS inbox driver and the OFA community driver.
>
> I have quickly managed to suit the OFA community driver to my needs, as
> they provide documentation and help running NVME commands from user mode -
> no problems there.
> The driver, however, was severely bushed for several issues in numerous
> forum threads, here and elsewhere.
>
> The MS driver, on the other hand, is much more tricky. I did not manage to
> run SCSI_PASSTHROUGH on it and according to the internet, it doesn’t
> support WMI either.
>
> My question is - does anyone know a way of accessing device information
> (e.g. serial number, number of LBA etc.) of NVME device using MS inbox
> driver ?
> If so, please suggest.
>
> Thank you,
> Sagi
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
>
> OSR is HIRING!! See http://www.osr.com/careers
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

You should be able to use an IOCTL_SCSI_PASS_THROUGH(_DIRECT)(_EX), and just send an IDENTIFY or whatever you need. We were looking at this recently (though, I admit, not in great depth) and it SHOULD work.

What’s failing for you?

Peter
OSR
@OSRDrivers

Hello Peter,

I am glad the forum’s up again - couldn’t access it for several days.
In any case, I got an additional info in this regard, coming directly from Microsoft.

They state that :
"
Hi Sagi,

The MS driver ? StorNVMe.sys does support IOCTL_SCSI_PASS_THROUGH. However, as this IOCTL is designed to pass SCSI commands (not NVM commands) to device, the miniport driver needs to do command translation. There are limitation about the commands StorNVMe will translate.

The functionality you are looking for is basically an NVMe pass through channel that doesn?t exist in current version of StorNVMe.sys.

"

My own research has shown just that - while you can run various basic SCSI queries on the disk, e.g. IOCTL_SCSI_GET_ADDRESS,IOCTL_DISK_GET_DRIVE_GEOMETRY etc., the actual NVME interface, consistent of admin commands etc. is not exposed.

So basically, you can get the disk size, address or geometry, but not the FW revision of SN.
You also can’t run any NVME gizmos on the disk.

My guess is that the Microsoft driver is quite in POC state and will ripe up as NVME devices enter the market.
In the meanwhile, I will stick with the community driver for actual NVME research.

Regards,
Sagi

The WEB interface to the forum was down for a total of 22 hours, not several days. Technical forum = technical accuracy, please.

Well, no. The in-box NVMe driver is stable and complete. Of course, there will be added features in coming releases (as the market demonstrates what it wants/needs and devices to test with become available). Microsoft has also indicated an interest in doing more for “passthrough” in the in-box NVMe driver. How that will look in future is anybody’s guess.

You seem to misunderstand how SCSI Passthrough works. You asked:

All you need to do is build the equivalent SCSI CDB and let the driver translate it for you. You asked how to get the serial number, number of LBAs, etc… Have you tried sending, for example, a SCSI INQUIRY command?

Peter
OSR
@OSRDrivers

Hello Peter,

I think I have asked a wrong question.

What I needed was a way to encapsulate NVME admin commands (namely, IDENTIFY) using SCSI Passthrough.

This unfortunately is not supported in the current Microsoft inbox NVME driver, as I have verified with Microsoft storage team.

In any case, after reading your answer, I have conducted an additional research regarding SCSI Passthrough interface. This definitely helped me to gain a better understand of the subject.

Thank you very much for your help.

Sagi