[HIDCLASS]
authorJohannes Anderwald <johannes.anderwald@reactos.org>
Sat, 8 Dec 2012 19:17:35 +0000 (19:17 +0000)
committerJohannes Anderwald <johannes.anderwald@reactos.org>
Sat, 8 Dec 2012 19:17:35 +0000 (19:17 +0000)
- Handle device initialization errors
CORE-6575

svn path=/trunk/; revision=57825

reactos/drivers/hid/hidclass/fdo.c

index 1a31822..18480b2 100644 (file)
@@ -350,7 +350,13 @@ HidClassFDO_StartDevice(
     // query capabilities
     //
     Status = HidClassFDO_QueryCapabilities(DeviceObject, &FDODeviceExtension->Capabilities);
     // query capabilities
     //
     Status = HidClassFDO_QueryCapabilities(DeviceObject, &FDODeviceExtension->Capabilities);
-    ASSERT(Status == STATUS_SUCCESS);
+    if (!NT_SUCCESS(Status))
+    {
+        DPRINT1("[HIDCLASS] Failed to retrieve capabilities %x\n", Status);
+        Irp->IoStatus.Status = Status;
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+        return Status;
+    }
 
     //
     // lets start the lower device too
 
     //
     // lets start the lower device too
@@ -369,13 +375,25 @@ HidClassFDO_StartDevice(
     // lets get the descriptors
     //
     Status = HidClassFDO_GetDescriptors(DeviceObject);
     // lets get the descriptors
     //
     Status = HidClassFDO_GetDescriptors(DeviceObject);
-    ASSERT(Status == STATUS_SUCCESS);
+    if (!NT_SUCCESS(Status))
+    {
+        DPRINT1("[HIDCLASS] Failed to retrieve the descriptors %x\n", Status);
+        Irp->IoStatus.Status = Status;
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+        return Status;
+    }
 
     //
     // now get the the collection description
     //
     Status = HidP_GetCollectionDescription(FDODeviceExtension->ReportDescriptor, FDODeviceExtension->HidDescriptor.DescriptorList[0].wReportLength, NonPagedPool, &FDODeviceExtension->Common.DeviceDescription);
 
     //
     // now get the the collection description
     //
     Status = HidP_GetCollectionDescription(FDODeviceExtension->ReportDescriptor, FDODeviceExtension->HidDescriptor.DescriptorList[0].wReportLength, NonPagedPool, &FDODeviceExtension->Common.DeviceDescription);
-    ASSERT(Status == STATUS_SUCCESS);
+    if (!NT_SUCCESS(Status))
+    {
+        DPRINT1("[HIDCLASS] Failed to retrieve the collection description %x\n", Status);
+        Irp->IoStatus.Status = Status;
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+        return Status;
+    }
 
     //
     // complete request
 
     //
     // complete request