USBSTOR.SYS 生成的标识符

从 Windows 2000 开始,操作系统为许多 USB 大容量存储设备提供本机支持。 Usbstor.inf 安装文件包含那些明确支持的设备的设备 ID。 如果 USB 集线器驱动程序枚举其中一个设备,操作系统将自动加载 USB 存储端口驱动程序 ,Usbstor.sys

Usbstor.inf 中 USB 大容量存储设备的设备 ID 采用使用 USB 设备描述符中的信息构成的 USB 设备 ID 的通常形式:

USB\VID_v (4) &PID_d (4) &REV_r (4)

其中:

  • v (4) 是 USB 委员会分配给供应商的 4 位供应商代码。

  • d (4) 是供应商分配给设备的 4 位产品代码。

  • r (4) 是修订代码。

除了这些设备 ID 之外, Usbstor.inf 还包含适用于第 8 类 ATAPI CD-ROM 的兼容 ID,以及支持批量传输的可移动媒体设备:

USB\CLASS_08&SUBCLASS_02&PROT_50

USB\CLASS_08&SUBCLASS_05&PROT_50

USB\CLASS_08&SUBCLASS_06&PROT_50

其中:

  • class 08h = 大容量存储设备。

  • 子类 02h = SFF-8020i ATAPI CD-ROM 设备。

  • 子类 05h = SFF-8070i ATAPI 可移动媒体。

  • 子类 06h = 泛型 SCSI 媒体。

  • 协议 50h = 仅批量传输协议。

如果从设备的设备描述符检索到的数据与其中任何兼容 ID 匹配,则操作系统将加载 Usbstor.sys

加载后,USB 存储端口驱动程序会为每个设备的逻辑单元创建新的 PDO。 有关详细信息,请参阅 USB 大容量存储设备的设备对象示例中所述 Usbstor.sys 创建的示例设备堆栈。

当 PnP 管理器查询新创建的 PDO 的设备标识字符串时,USB 存储端口驱动程序会创建一组派生自设备的 SCSI 查询数据的新设备、硬件和兼容 ID。 设备 ID 格式如下所示:

USBSTOR\v (8) p (16) r (4)

其中:

  • v (8) 是一个 8 个字符的供应商标识符。

  • p (16) 是 16 个字符的产品标识符。

  • r (4) 是一个 4 个字符的修订级别值。

磁盘驱动器的设备 ID 示例如下:

USBSTOR\SEAGATE_ST39102LW_______0004

USB 存储端口驱动程序生成的硬件 ID 如下所示:

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

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

USBSTOR\t*v (8)

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

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

USBSTOR\GenericTypeString

GenericTypeString

其中:

  • t* 是长度可变的 SCSI 设备类型代码。

  • v (8) 是一个 8 个字符的供应商标识符。

  • p (16) 是 16 个字符的产品标识符。

  • r (4) 是一个 4 个字符的修订级别值。 在这些附加标识符中, r (1) 仅表示修订标识符的第一个字符。

下表包含 USB 存储端口驱动程序用于生成标识符字符串的 SCSI 设备类型代码。

SCSI 类型代码 设备类型 泛型类型

DIRECT_ACCESS_DEVICE (0)

Disk 或 SFloppy

GenDisk 或 GenSFloppy

SEQUENTIAL_ACCESS_DEVICE (1)

顺序程序

GenSequential

WRITE_ONCE_READ_MULTIPLE_DEVICE (4)

蠕虫

GenWorm

READ_ONLY_DIRECT_ACCESS_DEVICE (5)

CdRom

GenCdRom

OPTICAL_DEVICE (7)

光学

GenOptical

MEDIUM_CHANGER (8)

GenChanger

默认类型 (前面未列出的所有值)

其他

UsbstorOther

这些示例演示 USB 存储端口驱动程序生成的硬件 ID:

USBSTOR\DiskSEAGATE_ST39102LW_______0004

USBSTOR\DiskSEAGATE_ST39102LW_______

USBSTOR\DiskSEAGATE_

USBSTOR\SEAGATE_ST39102LW_______0

SEAGATE_ST39102LW_______0

USBSTOR\GenDisk

GenDisk

USB 存储端口驱动程序生成两个兼容的 ID。

USBSTOR\t*

USBSTOR\RAW

其中 t* 是长度可变的 SCSI 设备类型代码。

以下示例演示了 USB 存储端口驱动程序生成的兼容 ID:

USBSTOR\Disk

USBSTOR\RAW