https://git.reactos.org/?p=reactos.git;a=commitdiff;h=dd56e065bcb1cf366d7f6…
commit dd56e065bcb1cf366d7f6bf11d6ff9d37baf91e4
Author: Victor Perevertkin <victor.perevertkin(a)reactos.org>
AuthorDate: Sat Dec 5 20:36:29 2020 +0300
Commit: Victor Perevertkin <victor.perevertkin(a)reactos.org>
CommitDate: Sat Dec 5 22:30:43 2020 +0300
[REACTOS] Enable PnP storage stack
- Use PnP storage class drivers
- Make partmgr an upper filter driver for Disk class
- Fill upper filters in txtsetup and usetup/devinst
- Add cdrom driver to the critical device database
CORE-6264
---
base/setup/usetup/devinst.c | 12 ++++++++++++
boot/bootdata/hivesys.inf | 11 +++++++++++
boot/bootdata/setupreg.inf | 1 +
boot/bootdata/txtsetup.sif | 5 +++--
drivers/storage/class/CMakeLists.txt | 6 +++---
5 files changed, 30 insertions(+), 5 deletions(-)
diff --git a/base/setup/usetup/devinst.c b/base/setup/usetup/devinst.c
index c9ca64dc949..5e5f4404f05 100644
--- a/base/setup/usetup/devinst.c
+++ b/base/setup/usetup/devinst.c
@@ -71,6 +71,7 @@ InstallDriver(
UNICODE_STRING TypeU = RTL_CONSTANT_STRING(L"Type");
UNICODE_STRING UpperFiltersU = RTL_CONSTANT_STRING(L"UpperFilters");
PWSTR keyboardClass = L"kbdclass\0";
+ PWSTR partMgr = L"partmgr\0";
UNICODE_STRING StringU;
OBJECT_ATTRIBUTES ObjectAttributes;
@@ -180,6 +181,7 @@ InstallDriver(
INF_FreeData(ImagePath);
+ /* Add kbdclass and partmgr upper filters */
if (ClassGuid &&_wcsicmp(ClassGuid,
L"{4D36E96B-E325-11CE-BFC1-08002BE10318}") == 0)
{
DPRINT1("Installing keyboard class driver for '%S'\n",
DeviceId);
@@ -190,6 +192,16 @@ InstallDriver(
keyboardClass,
(wcslen(keyboardClass) + 2) * sizeof(WCHAR));
}
+ else if (ClassGuid && _wcsicmp(ClassGuid,
L"{4D36E967-E325-11CE-BFC1-08002BE10318}") == 0)
+ {
+ DPRINT1("Installing partition manager driver for '%S'\n",
DeviceId);
+ NtSetValueKey(hDeviceKey,
+ &UpperFiltersU,
+ 0,
+ REG_MULTI_SZ,
+ partMgr,
+ (wcslen(partMgr) + 2) * sizeof(WCHAR));
+ }
INF_FreeData(ClassGuid);
diff --git a/boot/bootdata/hivesys.inf b/boot/bootdata/hivesys.inf
index 8b1a02c38f1..518c8a666e9 100644
--- a/boot/bootdata/hivesys.inf
+++ b/boot/bootdata/hivesys.inf
@@ -47,6 +47,9 @@
HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\USB#ROOT_HUB","Cla
HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\USB#ROOT_HUB20","Service",0x00000000,"usbhub"
HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\USB#ROOT_HUB20","ClassGUID",0x00000000,"{36FC9E60-C465-11CF-8056-444553540000}"
+HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\GenCdRom","Service",0x00000000,"cdrom"
+HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\GenCdRom","ClassGUID",0x00000000,"{4D36E965-E325-11CE-BFC1-08002BE10318}"
+
HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\GenDisk","Service",0x00000000,"disk"
HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\GenDisk","ClassGUID",0x00000000,"{4D36E967-E325-11CE-BFC1-08002BE10318}"
@@ -343,6 +346,14 @@
HKLM,"SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF-8056-4445535400
HKLM,"SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}","Icon",0x00000000,"-20"
HKLM,"SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}","NoInstallClass",0x00000000,"1"
+HKLM,"SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}",,0x00000000,"Disk
drives"
+HKLM,"SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}","Class",0x00000000,"DiskDrive"
+HKLM,"SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}","Icon",0x00000000,"-53"
+HKLM,"SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}","Installer32",0x00000000,"storprop.dll,DiskClassInstaller"
+HKLM,"SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}","NoInstallClass",0x00000000,"1"
+HKLM,"SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}","SilentInstall",0x00000000,"1"
+HKLM,"SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}","UpperFilters",0x00010000,"partmgr"
+
HKLM,"SYSTEM\CurrentControlSet\Control\Class\{4D36E96B-E325-11CE-BFC1-08002BE10318}",,0x00000000,"Keyboard"
HKLM,"SYSTEM\CurrentControlSet\Control\Class\{4D36E96B-E325-11CE-BFC1-08002BE10318}","Class",0x00000000,"Keyboard"
HKLM,"SYSTEM\CurrentControlSet\Control\Class\{4D36E96B-E325-11CE-BFC1-08002BE10318}","Icon",0x00000000,"-3"
diff --git a/boot/bootdata/setupreg.inf b/boot/bootdata/setupreg.inf
index ed841fdd044..47d2d44a9ec 100644
--- a/boot/bootdata/setupreg.inf
+++ b/boot/bootdata/setupreg.inf
@@ -20,6 +20,7 @@
HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\USB#COMPOSITE"
HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\USB#CLASS_09"
HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\USB#ROOT_HUB"
HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\USB#ROOT_HUB20"
+HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\GenCdRom"
HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\GenDisk"
HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\USB#Class_03"
HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\GENERIC_HID_DEVICE"
diff --git a/boot/bootdata/txtsetup.sif b/boot/bootdata/txtsetup.sif
index 2668740ff53..4cc751b7834 100644
--- a/boot/bootdata/txtsetup.sif
+++ b/boot/bootdata/txtsetup.sif
@@ -99,7 +99,7 @@ c_437.nls = 1,,,,,,,2,,,,1,2
c_1252.nls = 1,,,,,,,2,,,,1,2
cdfs.sys = 1,,,,,,x,4,,,,1,4
cdrom.sys = 1,,,,,,x,4,,,,1,4
-class2.sys = 1,,,,,,x,4,,,,1,4
+classpnp.sys = 1,,,,,,x,4,,,,1,4
isapnp.sys = 1,,,,,,,4,,,,1,4
kdcom.dll = 1,,,,,,,2,,,,1,2
kdvbox.dll = 1,,,,,,,2,,,,1,2
@@ -135,6 +135,7 @@ ntdll.dll = 1,,,,,,,2,,,,1,2
wmilib.sys = 1,,,,,,,4,,,,1,4
ksecdd.sys = 1,,,,,,,4,,,,1,4
mountmgr.sys = 1,,,,,,x,4,,,,1,4
+partmgr.sys = 1,,,,,,x,4,,,,1,4
[SourceDisksFiles.x86]
@@ -169,7 +170,7 @@ PCI\CC_0C0320 = usbehci
USB\Class_08&SubClass_06&Prot_50 = usbstor
HID_DEVICE_SYSTEM_KEYBOARD = kbdhid,{4D36E96B-E325-11CE-BFC1-08002BE10318}
USB\COMPOSITE = usbccgp
-GenDisk = disk
+GenDisk = disk,{4D36E967-E325-11CE-BFC1-08002BE10318}
USB\Class_03 = hidusb
GENERIC_HID_DEVICE = hidusb
*PNP0303 = i8042prt,{4D36E96B-E325-11CE-BFC1-08002BE10318}
diff --git a/drivers/storage/class/CMakeLists.txt b/drivers/storage/class/CMakeLists.txt
index a070202c0fe..1c275b94d48 100644
--- a/drivers/storage/class/CMakeLists.txt
+++ b/drivers/storage/class/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_subdirectory(cdrom)
-add_subdirectory(class2)
-add_subdirectory(disk)
+add_subdirectory(cdrom_new)
+add_subdirectory(classpnp)
+add_subdirectory(disk_new)
add_subdirectory(ramdisk)