[HIDCLASS]

- Handle device initialization errors
CORE-6575

svn path=/trunk/; revision=57825
This commit is contained in:
Johannes Anderwald 2012-12-08 19:17:35 +00:00
parent 752fa55287
commit 0b6cc39c0a

View file

@ -350,7 +350,13 @@ HidClassFDO_StartDevice(
// 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
@ -369,13 +375,25 @@ HidClassFDO_StartDevice(
// 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);
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