How To Execute The NVMe Identify Query?

  • Thread starter Thread starter KidShazam
  • Start date Start date
K

KidShazam

Guest
Copying the code located at Working with NVMe drives - Windows applications with regards to the NVMe Identify Query, and running it seems to not return any identify information.

When I step through the code, I see that the first instance of DeviceIoControl

result = DeviceIoControl(DeviceList[Index].Handle,
IOCTL_STORAGE_QUERY_PROPERTY,
buffer,
bufferLength,
buffer,
bufferLength,
&returnedLength,
NULL
);

fails with a GetLastError value of 1 (ERROR_INVALID_FUNCTION).

If I change the value of

query->PropertyId = StorageAdapterProtocolSpecificProperty;

to

query->PropertyId = StorageDeviceProtocolSpecificProperty;

this first DeviceIoControl function passes, but I still end up with invalid ProtocolDataLengths later on.

When I scan the list of attached drives, I can see that my NVMe drive is attached as \\.\PHYSICALDRIVE1.

Could it possibly be a driver issue? I'm currently using the Microsoft Inbox driver, which the NVM Express organization says is only compliant to 1.0e? And I believe my drive is compliant with the 1.2 specifcation.

Thanks for any insight anyone may be able to offer.

Continue reading...
 
Back
Top