Previous Next

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, and UnitSwVersion identifies the software specification. The information 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. Thus, 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 appear as follows

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, and 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 listed in the Generic Type column of the table below, and 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 corresponding to the string identifier Gen. The fourth ID, listed in the preceding example (SBP2\n*&d*), is unique among all of 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 ScsiPort 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