From 49da35696707deeb1a505885f95ff69533341b5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Sun, 26 Feb 2006 12:14:48 +0000 Subject: [PATCH] Revert simplification of SearchForLegacyDrivers done in r21188, because it breaks bootcd svn path=/trunk/; revision=21195 --- reactos/drivers/input/kbdclass/kbdclass.c | 30 ++++++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/reactos/drivers/input/kbdclass/kbdclass.c b/reactos/drivers/input/kbdclass/kbdclass.c index 73082641554..d039b0877db 100644 --- a/reactos/drivers/input/kbdclass/kbdclass.c +++ b/reactos/drivers/input/kbdclass/kbdclass.c @@ -747,11 +747,33 @@ SearchForLegacyDrivers( continue; } - Status = ClassAddDevice(DriverObject, PortDeviceObject); - if (!NT_SUCCESS(Status)) + /* Connect the port device object */ + if (DriverExtension->ConnectMultiplePorts) { - /* FIXME: Log the error */ - DPRINT("ClassAddDevice() failed with status 0x%08lx\n", Status); + Status = ConnectPortDriver(PortDeviceObject, DriverExtension->MainClassDeviceObject); + if (!NT_SUCCESS(Status)) + { + /* FIXME: Log the error */ + DPRINT("ConnectPortDriver() failed with status 0x%08lx\n", Status); + } + } + else + { + PDEVICE_OBJECT ClassDO; + Status = CreateClassDeviceObject(DriverObject, &ClassDO); + if (!NT_SUCCESS(Status)) + { + /* FIXME: Log the error */ + DPRINT("CreatePointerClassDeviceObject() failed with status 0x%08lx\n", Status); + continue; + } + Status = ConnectPortDriver(PortDeviceObject, ClassDO); + if (!NT_SUCCESS(Status)) + { + /* FIXME: Log the error */ + DPRINT("ConnectPortDriver() failed with status 0x%08lx\n", Status); + IoDeleteDevice(ClassDO); + } } } if (Status == STATUS_NO_MORE_ENTRIES)