Microsofts new native NVME driver - IO improvements

i may actually have the samsung nvme driver
already installed on this windows installation
not sure if that will affect something?

give me 10 minutes or so
and will boot a different windows drive
Yes, that will likely be it. Some manufacturers have their own drivers and don't use the native MS driver.

Let us know how you get on.
 
The £1M question is...is there any real world tangible speed increases outside of benchmarks?
The main benefit for the everyday user is probably less CPU cycles resulting in less power draw/noise due to the lowered driver overhead. Higher IOPS won't benefit non-compute or non-storage intense operations (versus the likes of virtualisation, file storage, and so on which would see big benefits).

If anyone wants to spend their Christmas eve measuring some things, feel free and let us all know! Unfortunately, I'm going to get into the real Christmas spirit in the next 10 minutes!! See you all soon. Have a wonderful Christmas.
 
still no joy with get guid cmd
device manager shows 4 nvme controllers
with the stornvme.sys drivers

but the drives themselves drivers are still disk.sys
not nvmedisk.sys

oh well had enough for one day
will try again later
enjoy your xmas
 
still no joy with get guid cmd
device manager shows 4 nvme controllers
with the stornvme.sys drivers

but the drives themselves drivers are still disk.sys
not nvmedisk.sys

oh well had enough for one day
will try again later
enjoy your xmas
Hope you had a good Christmas!

The drivers listed on the SSDs with the NVMe native driver activated are:
EhStorClass.sys
nvmedisk.sys
partmgr.sys

They should also show under a new tree class in device manager called "storage disks." stornvme.sys appears to be the legacy driver that interfaces with NVMe via SCSI.

If the WMI query is not returning any result, then your OS is not utilising the native NVMe driver for one reason or another.
 
Hope you had a good Christmas!

The drivers listed on the SSDs with the NVMe native driver activated are:
EhStorClass.sys
nvmedisk.sys
partmgr.sys

They should also show under a new tree class in device manager called "storage disks." stornvme.sys appears to be the legacy driver that interfaces with NVMe via SCSI.

If the WMI query is not returning any result, then your OS is not utilising the native NVMe driver for one reason or another.
Yeah still no joy
Even adding the reg entries manually
Not a total surprise given i have a complicated
Disk set up

Last attempt at running the guid command
Gave an error which I forget
The actual wording
But something along the lines of
The powershell file is in the specified location
But you're not allowed to open it
Do you want to do something which I totally forget
But has option for Y or N
Choosing Y still does nothing

Think I have
Ehstorclass.sys
Nvmedisk.sys
Partmgr.sys
And also a 4th one possibly stornvme.sys

No new tree class in device manager called
Storage disks

Thought in the last few days someone might have
Confirmed the guid question for you
Since i obviously am not getting anywhere fast
 
has anyone done any gaming tests to see if theres a big performance change? curious to see how this is once it makes it to windows natively and matures.
 
has anyone done any gaming tests to see if theres a big performance change? curious to see how this is once it makes it to windows natively and matures.
If it's server workload ready then it's unlikely to mature any further in terms of performance. It has just removed a middleman.
 
I wrote a dirty PowerShell script that does everything for you. Save it as nvme.ps1 - usage below:

To enable the NVMe driver.
nvme.ps1 -EnableNvmeDriver
Run this once, reboot, and then run it again. It's not possible to obtain the GUIDs for safeboot until you have rebooted to utilise the native NVMe driver

To disable the NVMe driver, run:
nvme.ps1 -DisableNvmeDriver
Reboot to complete

Code:
param([switch]$EnableNvmeDriver,
    [switch]$DisableNvmeDriver)

if ($EnableNvmeDriver) {

    # add reg keys
    reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Policies\Microsoft\FeatureManagement\Overrides /v 1853569164 /t REG_DWORD /d 1 /f
    reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Policies\Microsoft\FeatureManagement\Overrides /v 156965516 /t REG_DWORD /d 1 /f
    reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Policies\Microsoft\FeatureManagement\Overrides /v 735209102 /t REG_DWORD /d 1 /f

    # get GUIDs of NVMe devices
    $guids = (Get-WmiObject -Query "SELECT * FROM Win32_PnPEntity WHERE PNPClass = 'NvmeDisk'").classguid
    $guids = $guids | select -Unique

    if ($null -eq $guids) {Write-Output "Restart your machine and run this script again to add the GUIDs and fix safeboot"}

    if ($guids) {
        # loop through each GUID and add the safeboot keys
        foreach ($guid in $guids) {
            reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\$guid /f
            reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\$guid /f
        }
    }

}

if ($DisableNvmeDriver) {
    reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Policies\Microsoft\FeatureManagement\Overrides /v 1853569164 /f
    reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Policies\Microsoft\FeatureManagement\Overrides /v 156965516 /f
    reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Policies\Microsoft\FeatureManagement\Overrides /v 735209102 /f

}

Edit: Safeboot works just fine if you use the script.

Edit 2: Interestingly, the GUID selected from WMI for the "NvmeDisk" class is the same for both devices (75416e63-5912-4dfa-ae8f-3efaccaffb14). This seems to be that the device enumeration refers to the driver GUID as the class GUID, not to the device itself. This is confirmed under HKLM\SYSTEM\CurrentControlSet\Enum\NVME - the GUID is the driver key, but the driver is suffixed with a 4 digit integer to reference the NVMe drive (0000 or 0001, for example).

Bearing that in mind, I have modified the script to only add unique values retrieved during the WMI query. I don't know why any other GUID would be referenced, but this may vary machine to machine before I hardcode it in. Can anyone confirm that the class GUID of their NVMe drives is listed as 75416e63-5912-4dfa-ae8f-3efaccaffb14? Run (Get-WmiObject -Query "SELECT * FROM Win32_PnPEntity WHERE PNPClass = 'NvmeDisk'").classguid and post the output here, if you would be so kind. If the driver GUID is hardcoded and not unique to each machine, I can hardcode it in the script and that removes the need to reboot.

Apologies for the blondness.. so we save the script as nvme.ps1 and then open powershell as admin and then drag and drop it or just double click it ?
 
Apologies for the blondness.. so we save the script as nvme.ps1 and then open powershell as admin and then drag and drop it or just double click it ?
Save the script as nvme.ps1 in, say, c:\temp
Open PowerShell as admin, run:
cd c:\temp
.\nvme.ps1 -EnableNvmeDriver

Reboot and then run it again for safe mode to work.
 
Save the script as nvme.ps1 in, say, c:\temp
Open PowerShell as admin, run:
cd c:\temp
.\nvme.ps1 -EnableNvmeDriver

Reboot and then run it again for safe mode to work.

Worked thank you !

All my WD NVME drives now show in Device Manager under Storage Disks but my Intel NVME is still under Disk Drives, Guessing because it's older.
 
Last edited:
finally got this to work
had to run first in powershell for some reason
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

might not matter now
but heres the guid output
and yes i have got 5 x m2 drives


PS C:\temp> (Get-WmiObject -Query "SELECT * FROM Win32_PnPEntity WHERE PNPClass = 'NvmeDisk'").classguid
{75416e63-5912-4dfa-ae8f-3efaccaffb14}
{75416e63-5912-4dfa-ae8f-3efaccaffb14}
{75416e63-5912-4dfa-ae8f-3efaccaffb14}
{75416e63-5912-4dfa-ae8f-3efaccaffb14}
{75416e63-5912-4dfa-ae8f-3efaccaffb14}
 
finally got this to work
had to run first in powershell for some reason
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

might not matter now
but heres the guid output
and yes i have got 5 x m2 drives


PS C:\temp> (Get-WmiObject -Query "SELECT * FROM Win32_PnPEntity WHERE PNPClass = 'NvmeDisk'").classguid
{75416e63-5912-4dfa-ae8f-3efaccaffb14}
{75416e63-5912-4dfa-ae8f-3efaccaffb14}
{75416e63-5912-4dfa-ae8f-3efaccaffb14}
{75416e63-5912-4dfa-ae8f-3efaccaffb14}
{75416e63-5912-4dfa-ae8f-3efaccaffb14}
Great! Thanks for following up on it.

That means the driver is hardcoded. I'll update the script soon.
 
I tried this, it worked. I used a system with a Samsung NVME and a Crucial. Although it worked, both Cruicial storage executive and Samsung magician no longer see the drive. This isn’t a problem per se, but just thought I’d mention it as until you disable the driver classification, you can’t update any firmware.
 
Back
Top Bottom