Hi, I'm evaluating your RamDisk product for possible commercial use and replacement for DataRam Ramdisk. I'm using your version 3.4.7, 64-bit on Windows 10 with the latest upgrade.
I create a 500 MB NTFS volume with Hardware Disk Emulation checked, then try to create a 100 MB VHDX (version 2) file in Disk Management (selecting your volume and using Action / Create VHD), it fails with this error message from the Virtual Disk Manager:
"The request could not be performed because of an I/O device error"
If I create a 100 MB VHD (version 1) file the same way, it succeeds. In both cases, it doesn't matter whether it's fixed or dynamic.
If I create a 500 MB NTFS volume with Hardware Disk Emulation unchecked, then creating a VHDX works just fine.
So of the four possibilities, VHD and VHDX, with and without Hardware Disk Emulation, the VHDX with Hardware Disk Emulation case fails.
Thank you.
All Forums
> RAM Disk
> Current topic
Can't create VHDX on Hard Disk Emulated volume
Started by Mark
Mark
Can't create VHDX on Hard Disk Emulated volume 14 September 2016, 06:53 |
Re: Can't create VHDX on Hard Disk Emulated volume 14 September 2016, 22:21 |
Admin Registered: 18 years ago Posts: 3 519 |
Mark
Re: Can't create VHDX on Hard Disk Emulated volume 16 September 2016, 08:50 |
Thanks for confirming. I will continue to experiment without HDE, or with HDE in a non-VHDX context. Unfortunately, the error code returned by the Windows CreateVirtualDisk() API (if I do the creation manually) is 1117, ERROR_IO_DEVICE. Not very specific. All MS says of that code is "The request could not be performed because of an I/O device error." If you would like, I can provide all the parameters used with CreateVirtualDisk() and then you can reproduce the error in Visual C with a simple test program.
My interest in Hard Disk Emulation stems from the fact that when opened as a block device using \\.\PHYSICALDRIVEn, your ramdisk is the only one I've found that properly responds to DeviceIoControl() API calls such as IOCTL_STORAGE_GET_DEVICE_NUMBER and IOCTL_STORAGE_READ_CAPACITY. You have a very good hard disk emulation.
My interest in Hard Disk Emulation stems from the fact that when opened as a block device using \\.\PHYSICALDRIVEn, your ramdisk is the only one I've found that properly responds to DeviceIoControl() API calls such as IOCTL_STORAGE_GET_DEVICE_NUMBER and IOCTL_STORAGE_READ_CAPACITY. You have a very good hard disk emulation.
Re: Can't create VHDX on Hard Disk Emulated volume 20 September 2016, 15:04 |
Admin Registered: 18 years ago Posts: 3 519 |
Re: Can't create VHDX on Hard Disk Emulated volume 02 October 2016, 21:14 |
Admin Registered: 18 years ago Posts: 3 519 |
Good news: we've finally been able to identify and fix this issue in version 3.4.8 available from the RAM Disk home page.
It turns out during processing a SCSI function, namely SRB_FUNCTION_EXECUTE_SCSI with operation code SCSIOP_SYNCHRONIZE_CACHE, the driver didn't handle it and returned STATUS_INVALID_DEVICE_REQUEST to the OS. Apparently the OS thought cache sync wasn't working and couldn't process transacted file operations. This is handled correctly now, so VHDX creation and similar transacted file operations should work well.
It turns out during processing a SCSI function, namely SRB_FUNCTION_EXECUTE_SCSI with operation code SCSIOP_SYNCHRONIZE_CACHE, the driver didn't handle it and returned STATUS_INVALID_DEVICE_REQUEST to the OS. Apparently the OS thought cache sync wasn't working and couldn't process transacted file operations. This is handled correctly now, so VHDX creation and similar transacted file operations should work well.