Author: hpoussin
Date: Sun Aug 13 13:11:43 2017
New Revision: 75532
URL:
http://svn.reactos.org/svn/reactos?rev=75532&view=rev
Log:
[USETUP] Remove one special case for keyboard devices
Keyboard devices must have an upperfilter (kdbclass) to work correctly. Detect these
devices using the Keyboard GUID class instead of using the inf section name.
Modified:
trunk/reactos/base/setup/usetup/interface/devinst.c
trunk/reactos/boot/bootdata/txtsetup.sif
Modified: trunk/reactos/base/setup/usetup/interface/devinst.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/interfac…
==============================================================================
--- trunk/reactos/base/setup/usetup/interface/devinst.c [iso-8859-1] (original)
+++ trunk/reactos/base/setup/usetup/interface/devinst.c [iso-8859-1] Sun Aug 13 13:11:43
2017
@@ -50,32 +50,33 @@
OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE hService;
INFCONTEXT Context;
- LPWSTR Driver, ImagePath, FullImagePath;
+ LPWSTR Driver, ClassGuid, ImagePath, FullImagePath;
ULONG dwValue;
ULONG Disposition;
NTSTATUS Status;
BOOLEAN deviceInstalled = FALSE;
UNICODE_STRING UpperFiltersU = RTL_CONSTANT_STRING(L"UpperFilters");
LPWSTR keyboardClass = L"kbdclass\0";
- BOOLEAN keyboardDevice = FALSE;
/* Check if we know the hardware */
if (!SetupFindFirstLineW(hInf, L"HardwareIdsDatabase", HardwareId,
&Context))
return FALSE;
if (!INF_GetDataField(&Context, 1, &Driver))
return FALSE;
+
+ /* Get associated class GUID (if any) */
+ if (!INF_GetDataField(&Context, 2, &ClassGuid))
+ ClassGuid = NULL;
/* Find associated driver name */
/* FIXME: check in other sections too! */
if (!SetupFindFirstLineW(hInf, L"BootBusExtenders.Load", Driver,
&Context)
&& !SetupFindFirstLineW(hInf, L"BusExtenders.Load", Driver,
&Context)
&& !SetupFindFirstLineW(hInf, L"SCSI.Load", Driver, &Context)
- && !SetupFindFirstLineW(hInf, L"InputDevicesSupport.Load", Driver,
&Context))
- {
- if (!SetupFindFirstLineW(hInf, L"Keyboard.Load", Driver,
&Context))
- return FALSE;
-
- keyboardDevice = TRUE;
+ && !SetupFindFirstLineW(hInf, L"InputDevicesSupport.Load", Driver,
&Context)
+ && !SetupFindFirstLineW(hInf, L"Keyboard.Load", Driver,
&Context))
+ {
+ return FALSE;
}
if (!INF_GetDataField(&Context, 1, &ImagePath))
@@ -142,7 +143,7 @@
ImagePath,
(wcslen(ImagePath) + 1) * sizeof(WCHAR));
- if (keyboardDevice)
+ if (ClassGuid &&_wcsicmp(ClassGuid,
L"{4D36E96B-E325-11CE-BFC1-08002BE10318}") == 0)
{
DPRINT1("Installing keyboard class driver for '%S'\n",
DeviceId);
NtSetValueKey(hDeviceKey,
Modified: trunk/reactos/boot/bootdata/txtsetup.sif
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/txtsetup.sif…
==============================================================================
--- trunk/reactos/boot/bootdata/txtsetup.sif [iso-8859-1] (original)
+++ trunk/reactos/boot/bootdata/txtsetup.sif [iso-8859-1] Sun Aug 13 13:11:43 2017
@@ -94,12 +94,12 @@
PCI\CC_0C0310 = usbohci
PCI\CC_0C0320 = usbehci
USB\Class_08&SubClass_06&Prot_50 = usbstor
-HID_DEVICE_SYSTEM_KEYBOARD = kbdhid
+HID_DEVICE_SYSTEM_KEYBOARD = kbdhid,{4D36E96B-E325-11CE-BFC1-08002BE10318}
USB\COMPOSITE = usbccgp
GenDisk = disk
USB\Class_03 = hidusb
GENERIC_HID_DEVICE = hidusb
-*PNP0303 = i8042prt
+*PNP0303 = i8042prt,{4D36E96B-E325-11CE-BFC1-08002BE10318}
ROOT\SWENUM = swenum
[BootBusExtenders.Load]