reactos/drivers/storage/port/scsiport/scsitypes.h
Victor Perevertkin a97c6e0aa9
[SCSIPORT] Make the driver PnP-aware
Basic functions are implemented in order to work in PnP stack,
only legacy (non-pnp) miniport drivers are supported.
Tested mostly with uniata

CORE-17132
2020-12-05 22:28:54 +03:00

125 lines
3.7 KiB
C

// see https://docs.microsoft.com/en-us/windows-hardware/drivers/install/identifiers-for-scsi-devices
// and https://docs.microsoft.com/en-us/windows-hardware/drivers/install/identifiers-for-ide-devices
FORCEINLINE
PCSTR
GetDeviceType(
_In_ PINQUIRYDATA InquiryData)
{
switch (InquiryData->DeviceType)
{
case DIRECT_ACCESS_DEVICE:
return "Disk";
case SEQUENTIAL_ACCESS_DEVICE:
return "Sequential";
case PRINTER_DEVICE:
return "Printer";
case PROCESSOR_DEVICE:
return "Processor";
case WRITE_ONCE_READ_MULTIPLE_DEVICE:
return "Worm";
case READ_ONLY_DIRECT_ACCESS_DEVICE:
return "CdRom";
case SCANNER_DEVICE:
return "Scanner";
case OPTICAL_DEVICE:
return "Optical";
case MEDIUM_CHANGER:
return "Changer";
case COMMUNICATION_DEVICE:
return "Net";
case ARRAY_CONTROLLER_DEVICE:
return "Array";
case SCSI_ENCLOSURE_DEVICE:
return "Enclosure";
case REDUCED_BLOCK_DEVICE:
return "RBC";
case OPTICAL_CARD_READER_WRITER_DEVICE:
return "CardReader";
case BRIDGE_CONTROLLER_DEVICE:
return "Bridge";
default:
return "Other";
}
}
FORCEINLINE
PCSTR
GetGenericType(
_In_ PINQUIRYDATA InquiryData)
{
switch (InquiryData->DeviceType)
{
case DIRECT_ACCESS_DEVICE:
return "GenDisk";
case PRINTER_DEVICE:
return "GenPrinter";
case WRITE_ONCE_READ_MULTIPLE_DEVICE:
return "GenWorm";
case READ_ONLY_DIRECT_ACCESS_DEVICE:
return "GenCdRom";
case SCANNER_DEVICE:
return "GenScanner";
case OPTICAL_DEVICE:
return "GenOptical";
case MEDIUM_CHANGER:
return "ScsiChanger";
case COMMUNICATION_DEVICE:
return "ScsiNet";
case ARRAY_CONTROLLER_DEVICE:
return "ScsiArray";
case SCSI_ENCLOSURE_DEVICE:
return "ScsiEnclosure";
case REDUCED_BLOCK_DEVICE:
return "ScsiRBC";
case OPTICAL_CARD_READER_WRITER_DEVICE:
return "ScsiCardReader";
case BRIDGE_CONTROLLER_DEVICE:
return "ScsiBridge";
default:
return "ScsiOther";
}
}
FORCEINLINE
PCWSTR
GetPeripheralTypeW(
_In_ PINQUIRYDATA InquiryData)
{
switch (InquiryData->DeviceType)
{
case DIRECT_ACCESS_DEVICE:
return L"DiskPeripheral";
case SEQUENTIAL_ACCESS_DEVICE:
return L"TapePeripheral";
case PRINTER_DEVICE:
return L"PrinterPeripheral";
// case 3: "ProcessorPeripheral", classified as 'other': fall back to default case.
case WRITE_ONCE_READ_MULTIPLE_DEVICE:
return L"WormPeripheral";
case READ_ONLY_DIRECT_ACCESS_DEVICE:
return L"CdRomPeripheral";
case SCANNER_DEVICE:
return L"ScannerPeripheral";
case OPTICAL_DEVICE:
return L"OpticalDiskPeripheral";
case MEDIUM_CHANGER:
return L"MediumChangerPeripheral";
case COMMUNICATION_DEVICE:
return L"CommunicationsPeripheral";
case ARRAY_CONTROLLER_DEVICE:
return L"ArrayPeripheral";
case SCSI_ENCLOSURE_DEVICE:
return L"EnclosurePeripheral";
case REDUCED_BLOCK_DEVICE:
return L"RBCPeripheral";
case OPTICAL_CARD_READER_WRITER_DEVICE:
return L"CardReaderPeripheral";
case BRIDGE_CONTROLLER_DEVICE:
return L"BridgePeripheral";
default:
return L"OtherPeripheral";
}
}