Move the initialization of USB keyboard and mouse to DriverEntry, to prevent some (not all!) race conditions with the loading of kbd/mouclass.
It is still not satisfying (they are not real USB drivers), but that's better...
Modified: trunk/reactos/drivers/usb/miniport/common/main.c

Modified: trunk/reactos/drivers/usb/miniport/common/main.c
--- trunk/reactos/drivers/usb/miniport/common/main.c	2005-11-12 08:40:47 UTC (rev 19171)
+++ trunk/reactos/drivers/usb/miniport/common/main.c	2005-11-12 09:27:52 UTC (rev 19172)
@@ -280,11 +280,6 @@
 
 	Status = IoCreateSymbolicLink(&LinkDeviceName, &DeviceName);
 
-	if (NT_SUCCESS(Status))
-		Status = AddDevice_Keyboard(DriverObject, pdo);
-	if (NT_SUCCESS(Status))
-		Status = AddDevice_Mouse(DriverObject, pdo);
-
 	if (!NT_SUCCESS(Status))
 	{
 		DPRINT("USBMP: IoCreateSymbolicLink() call failed with status 0x%08x\n", Status);
@@ -428,5 +423,8 @@
 	
 	RegisterPortDriver(DriverObject, &UsbPortInterface);
 
+	AddDevice_Keyboard(DriverObject, NULL);
+	AddDevice_Mouse(DriverObject, NULL);
+
 	return STATUS_SUCCESS;
 }