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