Don't dereference device objects if they were not referenced
authorHervé Poussineau <hpoussin@reactos.org>
Sat, 22 Apr 2006 14:08:43 +0000 (14:08 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Sat, 22 Apr 2006 14:08:43 +0000 (14:08 +0000)
Remove one hack from kbdclass

svn path=/trunk/; revision=21708

reactos/base/setup/usetup/console.c
reactos/drivers/input/kbdclass/kbdclass.c
reactos/drivers/input/mouclass/mouclass.c

index 0fd9d35..dd765c7 100644 (file)
@@ -52,17 +52,16 @@ ConGetConsoleScreenBufferInfo(PCONSOLE_SCREEN_BUFFER_INFO ConsoleScreenBufferInf
 NTSTATUS
 ConAllocConsole(VOID)
 {
+  UNICODE_STRING ScreenName = RTL_CONSTANT_STRING(L"\\??\\BlueScreen");
+  UNICODE_STRING KeyboardName = RTL_CONSTANT_STRING(L"\\Device\\KeyboardClass0");
   OBJECT_ATTRIBUTES ObjectAttributes;
   IO_STATUS_BLOCK IoStatusBlock;
-  UNICODE_STRING Name;
   NTSTATUS Status;
   CONSOLE_SCREEN_BUFFER_INFO csbi;
 
   /* Open the screen */
-  RtlInitUnicodeString(&Name,
-                      L"\\??\\BlueScreen");
   InitializeObjectAttributes(&ObjectAttributes,
-                            &Name,
+                            &ScreenName,
                             0,
                             NULL,
                             NULL);
@@ -76,10 +75,8 @@ ConAllocConsole(VOID)
     return(Status);
 
   /* Open the keyboard */
-  RtlInitUnicodeString(&Name,
-                      L"\\??\\Keyboard");
   InitializeObjectAttributes(&ObjectAttributes,
-                            &Name,
+                            &KeyboardName,
                             0,
                             NULL,
                             NULL);
index 3b01962..88944d6 100644 (file)
@@ -284,7 +284,6 @@ CreateClassDeviceObject(
        OUT PDEVICE_OBJECT *ClassDO OPTIONAL)
 {
        PCLASS_DRIVER_EXTENSION DriverExtension;
-       UNICODE_STRING SymbolicLinkName = RTL_CONSTANT_STRING(L"\\??\\Keyboard");
        ULONG DeviceId = 0;
        ULONG PrefixLength;
        UNICODE_STRING DeviceNameU;
@@ -374,10 +373,6 @@ cleanup:
                DriverExtension->RegistryPath.Buffer,
                DriverExtension->RegistryPath.MaximumLength);
 
-       /* HACK: 1st stage setup needs a keyboard to open it in user-mode
-        * Create a link to user space... */
-       IoCreateSymbolicLink(&SymbolicLinkName, &DeviceNameU);
-
        ExFreePool(DeviceNameU.Buffer);
 
        if (ClassDO)
@@ -597,7 +592,6 @@ ClassAddDevice(
        if (!NT_SUCCESS(Status))
        {
                DPRINT("ConnectPortDriver() failed with status 0x%08lx\n", Status);
-               ObDereferenceObject(Fdo);
                goto cleanup;
        }
        Fdo->Flags &= ~DO_DEVICE_INITIALIZING;
index e7981a8..c38ddc9 100644 (file)
@@ -569,7 +569,6 @@ ClassAddDevice(
        if (!NT_SUCCESS(Status))
        {
                DPRINT("ConnectPortDriver() failed with status 0x%08lx\n", Status);
-               ObDereferenceObject(Fdo);
                goto cleanup;
        }
        Fdo->Flags &= ~DO_DEVICE_INITIALIZING;