Identifiers for SCSI Devices

Starting with Windows 10, Version 2004 (OS build 19041.488 or higher), two additional identifiers are available for NVMe storage disk drives which support the STOR_RICH_DEVICE_DESCRIPTION structure:

SCSI\t*v(8)p(40)

Where:

  • t* is a device type code of variable length

  • v(8) is an 8-character vendor identifier

  • p(40) is a 40-character product identifier

SCSI\t*v(8)p(40)r(8)

Where:

  • t* is a device type code of variable length

  • v(8) is an 8-character vendor identifier

  • p(40) is a 40-character product identifier

  • r(8) is an 8-character revision level value

In versions of Windows prior to Windows 10, Version 2004 (OS build 19041.488 or higher), the device ID format for a small computer system interface (SCSI) device is as follows:

SCSI\t*v(8)p(16)r(4)

Where:

  • t* is a device type code of variable length

  • v(8) is an 8-character vendor identifier

  • p(16) is a 16-character product identifier

  • r(4) is a 4-character revision level value

The bus enumerator determines the device type by indexing an internal string table, using a numerically encoded SCSI device type code, obtained by querying the device, as shown in the following table. The remaining components are just strings returned by the device, but with special characters (including space, comma, and any nonprinting graphic) replaced with an underscore.

The SCSI Port driver currently returns the following device type strings, the first nine of which correspond to standard SCSI type codes.

SCSI type code Device type Generic type Peripheral ID
DIRECT_ACCESS_DEVICE (0) Disk GenDisk DiskPeripheral
SEQUENTIAL_ACCESS_DEVICE (1) Sequential TapePeripheral
PRINTER_DEVICE (2) Printer GenPrinter PrinterPeripheral
PROCESSOR_DEVICE (3) Processor OtherPeripheral
WRITE_ONCE_READ_MULTIPLE_DEVICE (4) Worm GenWorm WormPeripheral
READ_ONLY_DIRECT_ACCESS_DEVICE (5) CdRom GenCdRom CdRomPeripheral
SCANNER_DEVICE (6) Scanner GenScanner ScannerPeripheral
OPTICAL_DEVICE (7) Optical GenOptical OpticalDiskPeripheral
MEDIUM_CHANGER (8) Changer ScsiChanger MediumChangerPeripheral
COMMUNICATION_DEVICE (9) Net ScsiNet CommunicationsPeripheral
10 ASCIT8 ScsiASCIT8 ASCPrePressGraphicsPeripheral
11 ASCIT8 ScsiASCIT8 ASCPrePressGraphicsPeripheral
12 Array ScsiArray ArrayPeripheral
13 Enclosure ScsiEnclosure EnclosurePeripheral
14 RBC ScsiRBC RBCPeripheral
15 CardReader ScsiCardReader CardReaderPeripheral
16 Bridge ScsiBridge BridgePeripheral
17 Other ScsiOther OtherPeripheral

An example of a device ID for a disk drive would be as follows:

SCS\\DiskSEAGATE_ST39102LW_______0004

There are four hardware IDs in addition to the device ID:

SCSI\t*v(8)p(16)

SCSI\t*v(8)

SCSI\v(8)p(16)r(1)

V(8)p(16)r(1)

In the third and fourth of these additional identifiers, r(1) represents just the first character of the revision identifier. These hardware IDs are illustrated by the following examples:

SCSI\DiskSEAGATE_ST39102LW_______

SCSI\DiskSEAGATE_

SCSI\DiskSEAGATE_ST39102LW_______0

SEAGATE_ST39102LW_______0

The SCSI Port driver supplies only one compatible ID, one of the variable-sized generic type codes from the previous table.

For example, the compatible ID for a disk drive is as follows:

GenDisk

The generic identifier is used in INF files for SCSI devices more than any other, because SCSI drivers are typically generic.

Be aware that the SCSI Port driver returns no generic name for sequential access and "processor" devices.