+ // Freeing everything in DeviceExtension
+ ASSERT(
+ DeviceExtension->DeviceDescriptor &&
+ DeviceExtension->ConfigurationDescriptor &&
+ DeviceExtension->InterfaceInformation &&
+ DeviceExtension->ResetDeviceWorkItem
+ );
+
+ ExFreePoolWithTag(DeviceExtension->DeviceDescriptor, USB_STOR_TAG);
+ ExFreePoolWithTag(DeviceExtension->ConfigurationDescriptor, USB_STOR_TAG);
+ ExFreePoolWithTag(DeviceExtension->InterfaceInformation, USB_STOR_TAG);
+ IoFreeWorkItem(DeviceExtension->ResetDeviceWorkItem);
+
+ if (DeviceExtension->SerialNumber)
+ {
+ ExFreePoolWithTag(DeviceExtension->SerialNumber, USB_STOR_TAG);
+ }
+
+ // Send the IRP down the stack