I wanted to add my experience to this as well, and expand upon the knowledge in this thread.
I've been administrating Microsoft systems for over 15 years, shying away from Linux mostly because I didn't have the time on the job to learn and understand the differences. But I've been doing much learning over the last few years, and think some of this info may help folks out.
First off, the way Windows loads drivers upon startup is if they are located within the following registry key:
Code:
HKLM\SYSTEM\CurrentControlSet001\Services
Now, just existing in this key isn't enough, there needs to be linking within the key object to point the the correct driver files. This is where going through the steps provided in the initial post on how-to convert comes into play - when you boot the system with an IDE drive, Windows always loads the IDE drivers. If your OS is mounted in the IDE, it boots and detects the extra 'vioscsi' drive attached to the VM, initializing the 'vioscsi' driver (only if you've installed this before exporting your VM, otherwise you'll need to install it to have the registry key created).
Now, I figured that even if you install the driver and force install it in using 'pnputil.exe /add-driver D:\vioscsi\2k22\amd64\vioscsi.inf
/INSTALL';
this will
NOT create the registry key needed to force the vioscsi driver to boot. The vioscsi device needs to be detected by the operating system in order for the registry key to be created.
What you will see in the registry key, and some info about it:

You'll see on the address bar that we're viewing 'vioscsi' key within 'Services'. All of what you see within this object is generated by the operating system when it detects the device for the first time - either by having the actual device connected to the system, or if you're a little fearless like myself and like breaking/tinkering with things you can use a Microsoft command line utility called 'devcon' to install a dummy copy of the device and force the creation of this registry key.

According to my sleuthing with GPT-o1, these are the 'Start' flags that can be modified:
Each storage driver (e.g., Intel “iastorV,” Microsoft “storahci,” “msahci,” iSCSI “msiscsi,” or VirtIO “vioscsi”) has its own service subkey. Within that subkey, the values that matter for boot-time loading are typically:
- Start – Controls how/when the driver loads (0 = boot, 1 = system, 2 = auto, 3 = manual, 4 = disabled)
- StartOverride – A newer mechanism (Windows 8+), which can override the value in Start
I hope some folks find this info helpful in their endeavours!
