Previous Page
www.bustrace.com

Storage devices support any number of commands. Read, Write, Read Capacity, Test Unit Ready, Inquiry, are all examples of commands that can be sent to a storage device. These commands are packaged in a structure called the Command Descriptor Block (CDB). The T10 committee manages the command sets that are available for the various devices types. For example, there are specifications for CD/DVD devices (MMC), hard drives (SBC), tape drives (SSC), and more.

This web page refers to our older busTRACE 6.0 which is no longer shipping. Click here for details on our latest busTRACE version.

The Windows storage stack is built around this Command Descriptor Block. To submit an I/O request to a storage device, you build up what's called a SCSI Request Block (SRB), or a SCSI Pass Through request. Embedded within the SRB is the actual CDB. While the CDB specifies the command to send to the device, the SRB specifies things such as the buffer location, buffer size, direction bits, and more.

SRBs and CDBs are used across any hard drive whether it's SCSI, ATA, Fibre Channel, RAID, SAS, or others. Even though ATA devices technically do not process CDBs, it is a CDB that is submitted to the ATA port driver. It is the responsibility of the ATA port driver (e.g. ATAPI.SYS) to convert the CDB request into a native ATA command sequence.

busTRACE captures the SRBs and CDBs sent to generate an I/O. Our product includes a large built-in database of CDBs so that we can decode the command exactly as you would see it defined in the T10 specifications. We make it even more readable by using different background colors to highlight structures in the inbound or outbound data. We also flag common firmware bugs on the decoded display to assist software and firmware developers. We regularly update our CDB database to ensure we decode the latest generation CDBs.

In this sample screenshot, we see how an Inquiry CDB is fully decoded for you.