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 |