Identifiers for 1394 Devices

The 1394 bus driver constructs these identifiers for a device:

1394\VendorName&ModelName

1394\UnitSpecId&UnitSwVersion

Where:

  • VendorName is the name of the hardware vendor.

  • ModelName identifies the device.

  • UnitSpecId identifies the software specification authority.

  • UnitSwVersion identifies the software specification.

The information that is used to construct these identifiers comes from the device's configuration ROM.

If a device has vendor and model name strings, the 1394 bus driver uses the first identifier as both, the device ID and the hardware ID, and the second identifier as the compatible ID. If a device lacks a vendor or model name string, the bus driver uses the second identifier as both, the device ID and the compatible ID, and returns double null if queried for the hardware ID. Therefore, the IEEE1394 bus driver, under certain circumstances, supplies a device ID but no hardware ID. This is an exception to the general rule that the device ID is one of the hardware IDs.

The device ID for a camera on a IEEE1394 might be:

1394\SONY&CCM-DS250_1.08

Multifunction devices have a separate set of identifiers for each unit directory in the device's configuration ROM.

If the device's function driver sits on top of the SBP-2 port driver, then its device ID has the following format.

SBP2\VendorName&ModelName&LUNn*

Where:

  • VendorName is the hardware vendor.

  • ModelName identifies the device.

  • n* is a string representing the lower-order 2 bytes of the logical unit number in hexadecimal. Various functions on a multifunction device produce device IDs that are identical except for this number.

The device ID for a SBP-2 1394 hard disk might be as follows:

SBP2\VST_TECHNOLOGIESINC.&VST_FULL_HEIGHT_FIREWIRE_DRIVE&LUN0

As with the 1394 bus, the SBP2 port driver does not classify the device ID as a hardware ID. However, whereas the 1394 bus distinguishes between hardware IDs and compatible IDs, the SBP2 port driver does not. For IRP_MN_QUERY_ID IRPs of type BusQueryHardwareIDs and IRP_MN_QUERY_ID IRPs of type BusQueryCompatibleIDs SBP2 returns the same set of four identifiers:

SBP2\VendorName&ModelName&CmdSetIdn*

SBP2\Gen

Gen

SBP2\n*&d*

Where:

  • *n** is the Command Set ID number.

  • Gen is one of the generic names that are listed in the Generic Type column of the following table.

  • *d** is a number formed by taking the lower five bits of the upper two bytes of the logical unit number. This number is the numeric code for the generic name of the device that corresponds to the Gen string identifier.

The fourth ID, listed in the previous example (SBP2\*n*&d**), is unique among all the SBP2 hardware identifiers in that both *n**, the Command Set ID number and *d**, the numeric code of the generic name are in decimal, not hexadecimal.

This table lists the generic device names returned by the SBP2 port driver. Most, but not all, of the generic names generated by the SBP2 port driver are a subset of those generated by the SCSI Port driver.

1394 Type Code Device Type Generic Type

RBC_DEVICE or DIRECT_ACCESS_DEVICE (0)

Disk

GenDisk

SEQUENTIAL_ACCESS_DEVICE (1)

Sequential

GenSequential

PRINTER_DEVICE (2)

Printer

GenPrinter

WRITE_ONCE_READ_MULTIPLE_DEVICE (4)

Worm

GenWorm

READ_ONLY_DIRECT_ACCESS_DEVICE (5)

CdRom

GenCdRom

SCANNER_DEVICE (6)

Scanner

GenScanner

OPTICAL_DEVICE (7)

Optical

GenOptical

MEDIUM_CHANGER (8)

Changer

GenChanger

Default Type (all values not listed above)

Other

GenSbp2Device