[USBSTOR] Weaken the type checks of a device.
authorVictor Perevertkin <victor@perevertkin.ru>
Sat, 27 Apr 2019 20:29:45 +0000 (23:29 +0300)
committerVictor Perevertkin <victor@perevertkin.ru>
Tue, 11 Jun 2019 01:39:43 +0000 (04:39 +0300)
This adds usb-cdrom support to usbstor.sys

drivers/usb/usbstor/fdo.c
drivers/usb/usbstor/pdo.c
media/inf/usbstor.inf

index 16e00da..1c19495 100644 (file)
@@ -177,12 +177,12 @@ USBSTOR_FdoHandleStartDevice(
         return STATUS_NOT_SUPPORTED;
     }
 
-    if (InterfaceDesc->bInterfaceSubClass != 0x06)
+    if (InterfaceDesc->bInterfaceSubClass == 0x04) // UFI subclass
     {
         // FIXME: need to pad CDBs to 12 byte
         // mode select commands must be translated from 1AH / 15h to 5AH / 55h
         DPRINT1("[USBSTOR] Error: need to pad CDBs\n");
-        return STATUS_NOT_IMPLEMENTED;
+        return STATUS_NOT_SUPPORTED;
     }
 
     // now select an interface
index 93caca4..b41cb93 100644 (file)
@@ -897,7 +897,7 @@ USBSTOR_CreatePDO(
         return Status;
     }
 
-    if (PDODeviceExtension->InquiryData->DeviceType == DIRECT_ACCESS_DEVICE)
+    if (PDODeviceExtension->InquiryData->DeviceType == DIRECT_ACCESS_DEVICE || PDODeviceExtension->InquiryData->DeviceType == READ_ONLY_DIRECT_ACCESS_DEVICE)
     {
         PDODeviceExtension->IsFloppy = FALSE; // TODO: implement the actual check
     }
index a7fd9ff..87a80f6 100644 (file)
@@ -18,7 +18,9 @@ DefaultDestDir = 12
 %GenericMfg% = GenericMfg
 
 [GenericMfg]
-%GenericBulkOnlyTransport.DeviceDesc% = USBBulkOnly_Inst,USB\Class_08&SubClass_06&Prot_50
+%GenericBulkOnlyTransport.DeviceDesc% = USBBulkOnly_Inst,USB\Class_08&SubClass_06&Prot_50 ; SCSI devices
+; usbstor.sys supports usb-cdroms but cdrom.sys from ReactOS does not like it
+;%GenericBulkOnlyTransport.DeviceDesc% = USBBulkOnly_Inst,USB\Class_08&SubClass_02&Prot_50 ; SFF-8020i (ATAPI)
 
 ;-------------------------- USB STORAGE DRIVER --------------------------