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/interface... ============================================================================== --- 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]