Previous Topic Next Topic
 

There are a variety of columns you can add to the I/O Capture List window. Each one of these is described in this section. Please note that not all columns are applicable for each type of I/O. When not applicable, the column will be left blank.

Bookmark

This column shows you whether the I/O has a bookmark set or not. If the I/O has a bookmark set, a bookmark icon appears in this column.

Bytes Captured

This column shows you how many bytes of data have been captured for the given I/O. If you have configured busTRACE to capture less data than what was actually transferred, this value may be less than the Bytes Transferred described below.

Bytes Requested

This column shows you how many bytes were requested to be transferred. In other words, how large the original data buffer was. This may be larger than what was actually transferred. For example, if a command is issued to a device that will return between 0 and 256 bytes (depending on what data is available), the caller may set the original buffer size to 256 bytes. This way, there is enough space to store the entire data transfer.

Bytes Transferred

This column shows you how many bytes were actually transferred along with the I/O. This may be less than (but never more than) the Bytes Requested value described above. There are some circumstances where this value is always set to the Bytes Requested value, and does not represent the true number of bytes transferred. This is usually caused by a limitation of the underlying software driver or hardware. Additional details on this limitation can be found in our Troubleshooting busTRACE section.

Class Driver

This column shows you the class driver that the I/O request went through.

Command 1

This column shows you text describing the I/O command sent. For a storage device, this is usually the name of the CDB being sent to the device (e.g. Test Unit Ready, Inquiry, etc.). For a USB device, this is usually the URB Function being sent to the device (e.g. Get Descriptor, Select Interface, etc.).

Command 2

This column shows you more specific text describing the I/O command sent. For a storage device, this is usually the hex Command Descriptor Block being sent. For a USB device, this is usually additional details about the URB Function being sent.

Counter

This column indicates the order in which the I/Os were initiated.

Data Underrun

This column will show a blue flag icon whenever a data underrun is detected. A data underrun occurs when the data transferred is less than the data requested. For example, you issue an Inquiry CDB with a 128 bytes buffer and only 36 bytes are returned. This is a data underrun. Data underruns are not normally considered an error but can be if the device does not transfer as much data as expected.

Device

This column displays an icon for the device that the I/O was sent too. This is the same icon that appears in the Capture Devices pane. If you float the mouse over the device icon, in the I/O Capture List, busTRACE will show you the full device name in a tool tip.

Device ID

This column will show you the Port Number, Path ID, Target ID, and LUN for the device that processed the captured I/O. This field is only applicable to storage devices. If no such value is available, the field is left empty.

Device Name

This column shows you the device name (i.e. the name that appears in the Capture Devices Tree).

Device Pointer

This field shows you a unique 32-bit or 64-bit value that is used internally to represent the device that processed the I/O request. When you are capturing I/O activity, this field shows you the PDEVICE_OBJECT pointer value for the device object that received the IRP request. For busPROBE or busSCRIPT, the value is an internally used pointer.

Device Serial Number

This column shows you the device serial number (if available).

End Time

This column displays when the I/O finished. You can customize how the I/O timing is displayed.

Error Indicator

This column indicates whether the I/O succeeded or failed. If successful, nothing appears in this column entry. If the I/O fails, an error icon will appear.

NOTE: If busFAULT was the one that generated the I/O failure, a busFAULT icon will appear instead. This provides a quick method for you to determine if the failure was returned by the device or simulated by busFAULT.

Execution Time

This column displays the time it took for the I/O to execute. You can customize how the I/O timing is displayed.

I/O Direction

This column shows you whether data is being transferred to the device (data out) or from the device (data in). If no data is transferred, nothing appears in this column.

I/O Interleave Arrows

If you have configured busTRACE to view interleaved I/O activity (one showing the I/O going down the stack, and the other going up the stack), this column shows you how the I/Os are interleaved by drawing an arrow from where the I/O starts to where the I/O finishes.

I/O Timeout

This column displays the timeout set for the given I/O.

IRP Direction

This column indicates whether the I/O is going down the I/O stack or going back up the I/O stack. This is only applicable if you have configured busTRACE to view interleaved I/O activity. If busTRACE is configured in its default state of not viewing interleaved I/O activity, then this column will simply show you a double arrow indicator.

IRP Pointer

This field shows you a unique 32-bit or 64-bit value that is used internally to represent the I/O request. When you are capturing I/O activity, this field shows you the PIRP pointer value for the IRP that was sent to generate the I/O request. For busPROBE or busSCRIPT, the value is an internally used pointer.

IRP Status

This field shows you the IRP's 32-bit return status.

IRP Type

This column shows you the type of I/O Request Packet (IRP) that was captured. Details on types of I/O Request Packets are described in Microsoft's Windows Driver Development Kit. One of the following fields will be displayed here:

SRB This value indicates a standard IRP_MJ_SCSI request (i.e. SRB/CDB) was captured.
exSRB This value indicates an extended SRB (i.e. STORAGE_REQUEST_BLOCK) was captured.
SPTI_BUFFERED This value indicates an IOCTL_SCSI_PASS_THROUGH request was captured. This request is typically sent by a ring 3 application (i.e. Windows application) to send a CDB to a storage device.
SPTI_DIRECT This value indicates an IOCTL_SCSI_PASS_THROUGH_DIRECT request was captured. This request is typically sent by a ring 3 application (i.e. Windows application) to send a CDB to a storage device.
IOCTL This value indicates an IOCTL was captured.
USB/URB This value indicates a low-level USB Request Block (URB) was captured.
IRP_MJ_POWER This value indicates a power management IRP was captured.
IRP_MJ_PNP This value indicates a Plug and Play IRP was captured.
LBA

If dealing with storage class devices (e.g. hard drive, CD/DVD drive), and a read, write, or verify is issued, this column shows you the I/O request's starting Logical Block Address (LBA).

LBA Alignment

This column shows you the I/O alignment for the given I/O in number of blocks. For example, a value of 8 means it's aligned to 8 blocks which is 4K for a 512 byte block. You can click on the "LBA Align" column header to sort based on that value if you want to easily find any I/Os which are unaligned.

LBA Count

If dealing with storage class devices (e.g. hard drive, CD/DVD drive), and a read, write, or verify is issued, this column shows you the number of blocks requested by the I/O.

NUMA Node

This column shows you the NUMA Node the I/O was processed on. Floating the mouse over the value shows you the specific NUMA node values. For example:

Originator

If we are able to determine which driver submitted the I/O request, the name of the driver will appear here.

NOTE: If we detect that the I/O is being sent directly to the port driver, bypassing the I/O stack, we place an "[x]" indicator to the right of the originator name. We can only detect this if busTRACE's Advanced Filtering option is enabled.

Raw Data

This column will show you up to the first eight bytes of data transfer. You can click on the column header to sort on this field if you like. If there are more than eight bytes available, "..." is appended to the end of the entry.

If you float the mouse over the raw data, a tooltip will appear that will show you up to 128 bytes of the raw data. Both hex and ASCII data are shown.

Sense Data

If dealing with storage class devices (e.g. hard drive, CD/DVD drive, etc.), and a check condition occurs, this column will show you three hex bytes. The first is the sense key followed by the sense code followed by the sense code qualifier.

Sense Data (All)

This column is identical to the "Sense Data" column as described directly above. The difference is that this column will show you all of the sense data (up to 18 bytes) in hex format.

SRB Status

If the I/O captured is a SCSI_REQUEST_BLOCK, or STORAGE_REQUEST_BLOCK, this column would show you the SrbStatus field.

Start Time

This column displays when the I/O started. You can customize how the I/O timing is displayed.

Target Status

If the I/O captured is a SCSI_REQUEST_BLOCK, or STORAGE_REQUEST_BLOCK, this column would show you the ScsiStatus field.

Thread ID

If you captured the I/O using busSTRESS, this column shows you the thread ID the submitted the Windows file system API.

Time Between I/Os

This column shows you the time between the last I/O initiated on this device object and this I/O.
Trigger Indicator

This column shows you whether the I/O hit a trigger point or not. If the I/O did hit a trigger point, a trigger icon appears in this column.

User Comment

If a user comment is attached to a given I/O, floating the mouse over the list item will display a tool tip with that user comment. You can choose to view all user comments in their own column by selecting this option.

See Also: