From dd56e065bcb1cf366d7f6bf11d6ff9d37baf91e4 Mon Sep 17 00:00:00 2001 From: Victor Perevertkin Date: Sat, 5 Dec 2020 20:36:29 +0300 Subject: [PATCH] [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)