ImDiskToolkit replacement using Arsenal SCSI-miniport driver
github.com
github.com
ERR_CANT_FIND_TEMP_FOLDER
The underlying reason for the error is that ImDisk driver works in a special mode (Direct-IO) which bypasses Windows Volume Manager. This leads to a problem with the Win32 API function GetFinalPathNameByHandle - you can read the discussions at
https://web.archive.org/web/20200805111419/http://reboot.pro... https://web.archive.org/web/20200815180956/http://reboot.pro...
The author of ImDisk drver created Arsenal driver which works in the normal SCSI miniport mode and is visible to the Windows Volume Manager. He provides a console utility to create/remove RAM-disk(s) but no Windows service tool that will create a RAM-disk on boot - and certainly nothing similar to the ImDisk Toolkit that I was used to (and probably many other users). The console utility is also dependent on the ImDisk CPL applet - which I did not quite like (from a developer's point of view).
So I decided to create a GUI for configuring the parameters of the RAM-disk, plus a Windows service that will create the desired RAM-disk on boot and persist it on shutdown. Of course, I did some research before deciding to start the development - there were other free and commercial RAM-disk tools working as SCSI miniport drivers but they either did not have the additional features of ImDisk Toolkit or they required a VHD image for preloading/persisting the RAM-disk contents (and I preferred the usage of native filesystem instead of VHD image).
It took me about a week to extract the relevant code from the AIM (Arsenal Image Mounter) console utility and translate it from C++ to Objec Pascal. After a lot of debugging and trials/errors I succeeded - and successfully replaced ImDisk Toolkit with my tools. I have to admit that I was in a hurry and just needed a working solution - there were no attempts to make the code more robust or to implement complex features (like regex support in the list of folders excluded from synchronization at shutdown).
The code is provided "AS IS" in the hope that it will be useful to others. Testing was done only on Win7 x64 - most probably it will not work on XP. The code requires Admin privileges and the Arsenal driver - which can be downloaded from its official repository (https://github.com/ArsenalRecon/Arsenal-Image-Mounter/tree/m...).
You will need Delphi 7 and TNT-Unicode in order to compile the source code - or you can simply download the binary release.