VOGONS


First post, by Duffman

User metadata
Rank Oldbie
Rank
Oldbie

So there is now a SCSIport miniport NVMe driver for NT4/2K/XP made by Dominik Behr

https://github.com/techomancer/nvme2k

Many thanks to Dominik Behr for developing this!
OMORES has tested it already on NT4 and it works well.

https://www.youtube.com/watch?v=gvT9-ZfW1Iw

Sweetlow has made a Windows 9x version of it too,

https://sweetlow.orgfree.com/download/nvme9x.zip

For anyone interested, please test it out on real hardware.

MB: ASRock B550 Steel Legend
CPU: Ryzen 9 5950X
RAM: Corsair 64GB Kit (4x16GB) DDR4 Veng LPX C18 4000MHz
SSDs: 2x Crucial MX500 1TB SATA + 1x Samsung 980 (non-pro) 1TB NVMe SSD
OSs: Win 11 Pro (NVMe) + WinXP Pro SP3 (SATA)
GPU: RTX2070 (11) GT730 (XP)

Reply 1 of 37, by digger

User metadata
Rank Oldbie
Rank
Oldbie

Oh wow, this is really cool! 😃 I'm definitely going to play with that in QEMU VMs, as well as on some physical hardware.

I wonder how much this will both increase performance and reduce hardware emulation overhead when running these older Windows versions in a VM.

From what I understood, recent versions of the NVMe spec are virtualization-friendly, and if implemented in the proper way (according to a new enough version of the NVMe spec), the performance and overhead will be comparable to that of a paravirtualized disk driver such as virtio-blk, virtio-scsi and PVSCSI.

Thanks for sharing this!

Is the source code of the Win9x port available too? (Currently at work, and that ZIP file seems to be from a shady-looking download site.)

Reply 2 of 37, by Duffman

User metadata
Rank Oldbie
Rank
Oldbie

As of now, only Sweetlow has the 9x source code.

The attachment nvme_dbg_working.png is no longer available
The attachment nvme_9x_vmware_working.png is no longer available

I got it running in a VMWare VM.

MB: ASRock B550 Steel Legend
CPU: Ryzen 9 5950X
RAM: Corsair 64GB Kit (4x16GB) DDR4 Veng LPX C18 4000MHz
SSDs: 2x Crucial MX500 1TB SATA + 1x Samsung 980 (non-pro) 1TB NVMe SSD
OSs: Win 11 Pro (NVMe) + WinXP Pro SP3 (SATA)
GPU: RTX2070 (11) GT730 (XP)

Reply 5 of 37, by LSS10999

User metadata
Rank Oldbie
Rank
Oldbie

Just did a check with Dependency Walker on WinNT 3.51 and it seems as of v1.0.0.1 the nvme2k driver has no dependency issues against NT 3.51's SCSIPORT.SYS, so it can be used.

Though this can't say for sure whether it works there. I may consider try this on my X99 system when I have time, as UniATA failed there with my SATA disks in both IDE and AHCI modes, even after using patched SCSIDISK.SYS.

Reply 6 of 37, by Gelip

User metadata
Rank Newbie
Rank
Newbie

I test driver with my Samsung 970 EVO Plus 250GB and not works 🙁
I have 2 drives
1. SATA with WinNT 4.0 SP6 installed (UniATA 0.47b + SCSIPORT.SYS (FIX)
2. NVMe in PCIe adapter

I installed the driver from the nvme2k-1.0.0.1.zip archive, it installed, but after restart it is not running and there is no NVMe disk partitions in My computer window:

The attachment not_running.png is no longer available
The attachment disk_admin.png is no longer available
The attachment PartitionInfo.png is no longer available

I also tried oemsetup.inf instead of nvme2k.inf but it didn't change anything and the driver still didn't start.

Additionally, there is an error in the instructions on github: https://github.com/techomancer/nvme2k/tree/main/nt4
To install the driver, the nvme2k.sys file must be in the same directory as the oemsetup.inf file - not in i386:

The attachment directory_structure.png is no longer available

If the file is nvme2k.sys and is in the i386 subdirectory, there is a critical error during installation:

The attachment critical_error.png is no longer available
Last edited by Gelip on 2025-11-12, 09:07. Edited 1 time in total.

Reply 7 of 37, by OMORES

User metadata
Rank Member
Rank
Member

So I tested the NVMe driver by SweetLow in Windows 98 on real hardware, and so far so good: no blue screens, installs without a restart… I copied over 50GB of files. (By the way, the Windows 9x format tool can create ~500GB FAT32 partitions without hesitation, while the NT version is still capped at 32GB to this day.)

Hardware used: Asus B360 + i5-9500 + 2× 500GB NVMe drives (Kingston A2000 / Samsung PM981). You can take a closer look at the hardware setup in this video, where I also test the driver in NT 3.51, NT 4.0, and 2000.

Some funny things happened though: after the first restart, the freshly formatted drive was listed twice in My Computer (D: & E:), and the read speeds were higher than the maximum specs. Then I unchecked the INT13H device option in Control Panel - one drive disappeared, and the read speeds settled around 350MB/s. Still, I kind of miss those fake speeds… 😀

@SweetLow can you give me a few details on how you pulled this off? I want to make a new video and briefly explain the process.

@Gelip here's the NT4 driver I used.

Be kind, rewind... to YouTube

Reply 8 of 37, by Gelip

User metadata
Rank Newbie
Rank
Newbie

Yeeeeeaaaaaaa - driver from OMORES work OK 😀 😀 😀

The attachment NVMe_OK.png is no longer available

Reply 9 of 37, by red-ray

User metadata
Rank Oldbie
Rank
Oldbie

Has anyone found a utility that reports the NVNe SMART information and if so which one please?

From SIV V5.84 Beta-09 SIV should on W2K and later, but it seems to be impossible as IOCTL_STORAGE_QUERY_PROPERTY PropertyStandardQuery StorageAdapterProtocolSpecificProperty don't work.

file.php?id=230864

BTW NVMe2K also runs OK on my Windows XP + 2003 systems.

I suspect for NT4 SIV needs some work, at the moment I am waiting for a https://www.ebay.co.uk/itm/365921415711 so I can check. Some .LOG files from doing SIV -DGBSDM > SIV_DBGOUT.log on NT4 (SIV32N) + W9X (SIV32L) would be handy.

Reply 10 of 37, by Gelip

User metadata
Rank Newbie
Rank
Newbie

Working OK: OMORES version, nvme.sys - 130 380 bytes, CRC-32: dab06145
Not working: release 1.0.0.1 from github, nvme2k.sys - 16 329 bytes, CRC-32: 651cd476

@red-ray
In WinXP I use Hard Disk Sentinel 5.70.3 for read SMART from NVMe

Reply 11 of 37, by red-ray

User metadata
Rank Oldbie
Rank
Oldbie
Gelip wrote on 2025-11-12, 10:03:

Working OK: OMORES version, nvme.sys - 130 380 bytes, CRC-32: dab06145
Not working: release 1.0.0.1 from github, nvme2k.sys - 16 329 bytes, CRC-32: 651cd476

I expected the NT4 version to be a different binary and I also noted it's way bigger. Looking further I can also see it's built for NT4 (4.00) rather than W2K (5.00) and it's got a later link date/time.

file.php?id=230869

The main reason that nvme.sys is way bigger is that it has all the Local Symbols and Line Numbers, I would have generated .PDB files.

I expect both are V1.0.0.1 and the reported versions are incorrect.

Reply 12 of 37, by SweetLow

User metadata
Rank Newbie
Rank
Newbie

@OMORES
>Some funny things happened though: after the first restart, the freshly formatted drive was listed twice in My Computer (D: & E:)
Your UEFI CSM does not support int 13h for NVMe drives in protected mode.
Read my and odz3nn posts from this post (use translator):
https://forum.ru-board.com/topic.cgi?forum=62 … 24&start=2320#8
to this:
https://forum.ru-board.com/topic.cgi?forum=62 … 24&start=2340#3

>Then I unchecked the INT13H device option in Control Panel
Use RMMBADRM from RMMREMOVE

> can you give me a few details on how you pulled this off?
I just took sources and port them to Windows 9x. Nothing hard as original nvme2k project has pretty good sources.

>I want to make a new video and briefly explain the process
Wait for new version. I fixed one new bug (specific for Windows 9x) and added 64-bit LBA support (generic), but now I am testing this personally.
And after that probably no problems rest.

And yes, this is personally for you:
https://msfn.org/board/messenger/108246/

Reply 13 of 37, by elszgensa

User metadata
Rank Member
Rank
Member

The repo says they're looking for W2K DDK RC2, for doing Alpha builds. Anyone have some way to contact them outside of Github? I won't make another account there after my experience with the first one.

Reply 14 of 37, by red-ray

User metadata
Rank Oldbie
Rank
Oldbie
elszgensa wrote on 2025-11-12, 14:22:

The repo says they're looking for W2K DDK RC2, for doing Alpha builds.

I have already mentioned that it would be sensible to use the Vista (6001.18001) WDK for the x32 W2K (V5.00) + V5.02 x64 + ia64 builds and have the RC2 (2128) DDK.

Reply 15 of 37, by elszgensa

User metadata
Rank Member
Rank
Member

Oh alright then, that's good (if a bit buried - half a sentence, in an unrelated issue - if nobody ends up referencing it while the request stays on the front page, you might want to repost the offer in a more explicit way).

Reply 16 of 37, by red-ray

User metadata
Rank Oldbie
Rank
Oldbie
elszgensa wrote on 2025-11-12, 15:50:

Oh alright then, that's good (if a bit buried - half a sentence, in an unrelated issue - if nobody ends up referencing it while the request stays on the front page, you might want to repost the offer in a more explicit way).

If he addresses the missing IOCTL_STORAGE_QUERY_PROPERTY support then I suspect there is no way he will miss it.

In truth I suspect using the RC1 rather than the RC2 DDK won't make any real difference and using RC2 may be a bad move as it could cause NVMe2K.sys to have issues on Alpha RC1.

Reply 17 of 37, by SweetLow

User metadata
Rank Newbie
Rank
Newbie

http://sweetlow.orgfree.com/download/nvme9x.zip

1. Fix bug (specific for Windows 9x) of controller shutdown
2. Added 64-bit LBA support (generic)

If someone has original Windows 95 (no matter on real hardware or in VM) it will be good to check driver on such config.

Reply 18 of 37, by 0xDEADBEEF

User metadata
Rank Newbie
Rank
Newbie
SweetLow wrote on 2025-11-12, 21:10:
http://sweetlow.orgfree.com/download/nvme9x.zip […]
Show full quote

http://sweetlow.orgfree.com/download/nvme9x.zip

1. Fix bug (specific for Windows 9x) of controller shutdown
2. Added 64-bit LBA support (generic)

If someone has original Windows 95 (no matter on real hardware or in VM) it will be good to check driver on such config.

Wow! The win9x driver is really cool.
Please send back merge requests if possible!

Look at my baby grow! 🤣!

Reply 19 of 37, by 0xDEADBEEF

User metadata
Rank Newbie
Rank
Newbie
red-ray wrote on 2025-11-12, 16:01:

If he addresses the missing IOCTL_STORAGE_QUERY_PROPERTY support then I suspect there is no way he will miss it.

In truth I suspect using the RC1 rather than the RC2 DDK won't make any real difference and using RC2 may be a bad move as it could cause NVMe2K.sys to have issues on Alpha RC1.

This IOCTL is never called in SRB_FUNCTION_IO_CONTROL so I cannot add support for it. I added some MINIPORT SMART IOCTLS and now smartctl and SIV report some smart data. SIV now thinks it is UDMA100 device.
I already got RC2 DDK, some good soul from VF got it for me. I don't think there are any earth shattering differences there anyway.
1.0.0.2 has been released on github.
Enjoy.