update for HEAD-2003091401
[reactos.git] / drivers / input / mouclass / mouclass.c
index 849bb99..799d4c4 100644 (file)
@@ -140,7 +140,7 @@ NTSTATUS ConnectMousePortDriver(PDEVICE_OBJECT ClassDeviceObject)
    PDEVICE_OBJECT PortDeviceObject = NULL;
    PFILE_OBJECT FileObject = NULL;
    NTSTATUS status;
-   UNICODE_STRING PortName = UNICODE_STRING_INITIALIZER(L"\\Device\\Mouse");
+   UNICODE_STRING PortName = UNICODE_STRING_INITIALIZER(L"\\Device\\PointerClass0");
    IO_STATUS_BLOCK ioStatus;
    KEVENT event;
    PIRP irp;
@@ -156,7 +156,7 @@ NTSTATUS ConnectMousePortDriver(PDEVICE_OBJECT ClassDeviceObject)
 
    if(status != STATUS_SUCCESS)
    {
-      DbgPrint("MOUCLASS: Could not connect to mouse port driver\n");
+      DPRINT1("MOUCLASS: Could not connect to mouse port driver\n");
       return status;
    }
 
@@ -189,7 +189,7 @@ NTSTATUS ConnectMousePortDriver(PDEVICE_OBJECT ClassDeviceObject)
    return ioStatus.Status;
 }
 
-NTSTATUS STDCALL MouseClassDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
+NTSTATUS STDCALL_FUNC MouseClassDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
 {
    PIO_STACK_LOCATION Stack = IoGetCurrentIrpStackLocation(Irp);
    NTSTATUS Status;
@@ -222,7 +222,7 @@ NTSTATUS STDCALL MouseClassDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
        break;
 
       default:
-        DbgPrint("NOT IMPLEMENTED\n");
+        DPRINT1("NOT IMPLEMENTED\n");
         Status = STATUS_NOT_IMPLEMENTED;
        break;
      }
@@ -270,7 +270,7 @@ VOID MouseClassStartIo(PDEVICE_OBJECT DeviceObject, PIRP Irp)
    }
 }
 
-NTSTATUS STDCALL MouseClassInternalDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
+NTSTATUS STDCALL_FUNC MouseClassInternalDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 {
    // Retrieve GDI's callback
 
@@ -285,7 +285,7 @@ NTSTATUS STDCALL MouseClassInternalDeviceControl(IN PDEVICE_OBJECT DeviceObject,
          DeviceExtension->GDIInformation =
             *((PGDI_INFORMATION)Stack->Parameters.DeviceIoControl.Type3InputBuffer);
 
-         DbgPrint("MouseClassInternalDeviceControl() installed GDI callback at %p\n", DeviceExtension->GDIInformation.CallBack);
+         DPRINT("MouseClassInternalDeviceControl() installed GDI callback at %p\n", DeviceExtension->GDIInformation.CallBack);
 
          status = STATUS_SUCCESS;
          break;
@@ -318,7 +318,8 @@ DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
 {
    PDEVICE_OBJECT DeviceObject;
    UNICODE_STRING DeviceName = UNICODE_STRING_INITIALIZER(L"\\Device\\MouseClass");
-   UNICODE_STRING SymlinkName = UNICODE_STRING_INITIALIZER(L"\\??\\MouseClass");
+   UNICODE_STRING SymlinkName = UNICODE_STRING_INITIALIZER(L"\\??\\MouseClass");   NTSTATUS Status;
+
 
    DriverObject->MajorFunction[IRP_MJ_CREATE] = MouseClassDispatch;
 //   DriverObject->MajorFunction[IRP_MJ_CLOSE]  = MouseClassDispatch;
@@ -326,16 +327,32 @@ DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
    DriverObject->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = MouseClassInternalDeviceControl; // to get GDI callback
 //   DriverObject->DriverStartIo                = MouseClassStartIo;
 
-   IoCreateDevice(DriverObject,
-                 sizeof(DEVICE_EXTENSION),
-                 &DeviceName,
-                 FILE_DEVICE_MOUSE,
-                 0,
-                 TRUE,
-                 &DeviceObject);
+   Status = IoCreateDevice(DriverObject,
+                          sizeof(DEVICE_EXTENSION),
+                          &DeviceName,
+                          FILE_DEVICE_MOUSE,
+                          0,
+                          TRUE,
+                          &DeviceObject);
+   if (!NT_SUCCESS(Status))
+     {
+       return(Status);
+     }
    DeviceObject->Flags = DeviceObject->Flags | DO_BUFFERED_IO;
 
-   IoCreateSymbolicLink(&SymlinkName, &DeviceName);
+   Status = IoCreateSymbolicLink(&SymlinkName, &DeviceName);
+   if (!NT_SUCCESS(Status))
+     {
+       IoDeleteDevice(DeviceObject);
+       return(Status);
+     }
 
-   return ConnectMousePortDriver(DeviceObject);
+   Status = ConnectMousePortDriver(DeviceObject);
+   if (!NT_SUCCESS(Status))
+     {
+       IoDeleteSymbolicLink(&SymlinkName);
+       IoDeleteDevice(DeviceObject);
+       return(Status);
+     }
+   return(STATUS_SUCCESS);
 }