Sample registry patch (inf taken from 2003 but also works with xp one;
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Control\Class\{9D6D66A6-0B0C-4563-9077-A0E9A7955AE4}]
"Class"="Ramdisk"
@="Ramdisk"
"Icon"="-5"
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Control\Class\{9D6D66A6-0B0C-4563-9077-A0E9A7955AE4}\0000]
"InfPath"="ramdisk.inf"
"InfSection"="BusInstall"
"InfSectionExt"=".NT"
"ProviderName"="Microsoft"
"DriverDateData"=hex:00,40,2a,7c,dd,68,c2,01
"DriverDate"="10-1-2002"
"DriverVersion"="5.2.3790.3959"
"MatchingDeviceId"="ramdisk"
"DriverDesc"="Windows RAM Disk Controller"
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Control\Class\{9D6D66A6-0B0C-4563-9077-A0E9A7955AE4}\0001]
"InfPath"="ramdisk.inf"
"InfSection"="VolumeInstall"
"InfSectionExt"=".NT"
"ProviderName"="Microsoft"
"DriverDateData"=hex:00,40,2a,7c,dd,68,c2,01
"DriverDate"="10-1-2002"
"DriverVersion"="5.2.3790.3959"
"MatchingDeviceId"="ramdisk\\ramvolume"
"DriverDesc"="Windows RAM Disk Device (volume)"
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Enum\Root\UNKNOWN]
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Enum\Root\UNKNOWN\0000]
"ClassGUID"="{9D6D66A6-0B0C-4563-9077-A0E9A7955AE4}"
"ConfigFlags"=dword:00000004
"Driver"="{9D6D66A6-0B0C-4563-9077-A0E9A7955AE4}\\0000"
"Class"="Ramdisk"
"Mfg"="Microsoft"
"HardwareID"=hex(7):72,00,61,00,6d,00,64,00,69,00,73,00,6b,00,00,00,00,00
"CompatibleIDs"=hex(7):64,00,65,00,74,00,65,00,63,00,74,00,65,00,64,00,69,00,\
6e,00,74,00,65,00,72,00,6e,00,61,00,6c,00,5c,00,72,00,61,00,6d,00,64,00,69,\
00,73,00,6b,00,00,00,64,00,65,00,74,00,65,00,63,00,74,00,65,00,64,00,5c,00,\
72,00,61,00,6d,00,64,00,69,00,73,00,6b,00,00,00,00,00
"Service"="Ramdisk"
"DeviceDesc"="Windows RAM Disk Controller"
"Capabilities"=dword:00000000
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Enum\Root\UNKNOWN\0000\LogConf]
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Enum\Root\UNKNOWN\0000\Control]
"ActiveService"="Ramdisk"
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Enum\Root\UNKNOWN\0001]
"ClassGUID"="{9D6D66A6-0B0C-4563-9077-A0E9A7955AE4}"
"Class"="Ramdisk"
"ConfigFlags"=dword:00000004
"Driver"="{9D6D66A6-0B0C-4563-9077-A0E9A7955AE4}\\0001"
"Mfg"="Microsoft"
"HardwareID"=hex(7):72,00,61,00,6d,00,64,00,69,00,73,00,6b,00,5c,00,72,00,61,\
00,6d,00,76,00,6f,00,6c,00,75,00,6d,00,65,00,00,00,00,00
"DeviceDesc"="Windows RAM Disk Device (volume)"
"Capabilities"=dword:00000000
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Enum\Root\UNKNOWN\0001\LogConf]
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Enum\Root\UNKNOWN\0001\Control]
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Services\Ramdisk]
"Type"=dword:00000001
"Start"=dword:00000000
"ErrorControl"=dword:00000001
"ImagePath"="\\??\\C:\\WINDOWS\\SYSTEM32\\DRIVERS\\ramdisk.sys"
"DisplayName"="Windows RAM Disk Driver"
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Services\Ramdisk\Debug]
"DebugComponents"=dword:7fffffff
"DebugLevel"=dword:00000005
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Services\Ramdisk\Security]
"Security"=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02,\
00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\
00,00,02,00,60,00,04,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,\
05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\
20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,\
00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,\
00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00
[HKEY_LOCAL_MACHINE\sys\ControlSet001\Services\Ramdisk\Enum]
"0"="Root\\UNKNOWN\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001Adjust the path for winpe usage.
The size restriction on 512 Mb is in ntldr/setupldr.bin only. Ramdisk.sys can handle larger images, and some have said there is an absolute restriction on 2 Gb, with an actual user limit at around 1 Gb (some chineese users have reported success with around 1.7 Gb. See good explanation here; link1 and here; link2
Verification of this can be done with a modified ntldr found here (thank you JFX for pointing out); link3 and here; link4
This patched sample is the debug version of ntldr_dbg 5.2.3790.0. I'm currently trying to find the original ntldr_dbg 5.2.3790.0 to locate the patch and hopefully produce a custom patch for setupldr.bin too. For other interested souls, you may want to strip off the 16-bit stub in the beginning of ntldr/setupldr.bin. That way your favourite disassembler will produce much more friendly output. A good link about reversing ntldr; http://www.reteam.or....php/t-323.html
Important to remember is to add /pae to boot.ini. The author of the patch have mentioned /nodebug is a must too, but I have done it without that entry.
If i get some time, I may create a performance report with comparisons of ramdisk/firadisk/winvblock/disklessangel.
Joakim









