WWW bustrace.com

Google

PRODUCTS

busTRACE 10.0

busTRACE User's Manual

Screenshots

 

DOWNLOADS

Product Updates

Demos

Free Utilities

 

ORDERING INFORMATION

Online Store

Refund Policy

View Price List

Subscription Renewals

Resellers

 

SUPPORT

busTRACE Change Log

Frequently Asked Questions

Feature Requests

Contact Support

 

COMPANY

Overview

News

Contact Us

 
Quick Links: Home | busTRACE 6.0 | Screenshots
 

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

busTRACE x64 Support
busTRACE 6.0 comes with a native 64-bit device driver to support Windows x64. This includes Windows XP x64, Windows 2003 x64, and Windows Vista x64.

Analyzing I/O activity on an x64 system is largely the same as on a 32-bit system. The only difference is that you are now dealing with 64-bit data structures instead of 32-bit data structures. Below, you will find some details on how we handle this within busTRACE.

x64 Data Structures
I/O activity is very similar on the 32-bit and 64-bit versions of Windows. For example, the URB structures (USB Request Block) and SCSI_REQUEST_BLOCK structures are the same under both platforms. However, because one deals with 32-bit pointers and one deals with 64-bit pointers, their actual structure member positions may be different.

busTRACE insulates you from these differences and captures all 32-bit and 64-bit data structures transparently. When you are analyzing I/O activity, the I/O activity will look similar regardless of which platform you are running. The key difference you will see is in busTRACE's ability to show you the I/O data structures going down and back up the I/O stack.

As we mentioned above, a SCSI_REQUEST_BLOCK structure is the same under a 32-bit or 64-bit platform. That's true at least from the source code perspective. However, when you compile the structure, the actual raw data is different between the two platforms. This is due to 32-bit pointers taking up 4 bytes of memory while 64-bit pointers take up 8 bytes. In order to help you determine which structure was captured (either a 32-bit or 64-bit version of the structure), busTRACE appends a '64' tag to the end of the structure name when it decodes a captured 64-bit I/O request. Below, we have compiled a partial list of 32-bit and 64-bit data structures that busTRACE will capture and decode for you.

There are many other structures that busTRACE decodes that do not differ between win32 and win64. Those structures are not listed below.

32-Bit Structures
64-Bit Structures
SCSI_REQUEST_BLOCK
SCSI_REQUEST_BLOCK64
_SCSI_REQUEST_BLOCK
_SCSI_REQUEST_BLOCK64
SCSI_PASS_THROUGH
SCSI_PASS_THROUGH64
SCSI_PASS_THROUGH_DIRECT
SCSI_PASS_THROUGH_DIRECT64
_SCSI_PASS_THROUGH
_SCSI_PASS_THROUGH64
_SCSI_PASS_THROUGH_DIRECT
_SCSI_PASS_THROUGH_DIRECT64
ATA_PASS_THROUGH_EX
ATA_PASS_THROUGH_EX64
ATA_PASS_THROUGH_DIRECT
ATA_PASS_THROUGH_DIRECT64
_ATA_PASS_THROUGH_EX
_ATA_PASS_THROUGH_EX64
_ATA_PASS_THROUGH_DIRECT
_ATA_PASS_THROUGH_DIRECT64
URB
URB64
_URB
_URB64
USB_DEFAULT_PIPE_SETUP_PACKET
USB_DEFAULT_PIPE_SETUP_PACKET64
_USB_DEFAULT_PIPE_SETUP_PACKET
_USB_DEFAULT_PIPE_SETUP_PACKET64
USBD_PIPE_INFORMATION
USBD_PIPE_INFORMATION64
_USBD_PIPE_INFORMATION
_USBD_PIPE_INFORMATION64
USBD_INTERFACE_INFORMATION
USBD_INTERFACE_INFORMATION64
_USBD_INTERFACE_INFORMATION
_USBD_INTERFACE_INFORMATION64
_URB_HCD_AREA
_URB_HCD_AREA64
_URB_HEADER
_URB_HEADER64
_URB_SELECT_INTERFACE
_URB_SELECT_INTERFACE64
_URB_SELECT_CONFIGURATION
_URB_SELECT_CONFIGURATION64
_URB_PIPE_REQUEST
_URB_PIPE_REQUEST64
_URB_FRAME_LENGTH_CONTROL
_URB_FRAME_LENGTH_CONTROL64
_URB_GET_FRAME_LENGTH
_URB_GET_FRAME_LENGTH64
_URB_SET_FRAME_LENGTH
_URB_SET_FRAME_LENGTH64
_URB_GET_CURRENT_FRAME_NUMBER
_URB_GET_CURRENT_FRAME_NUMBER64
_URB_CONTROL_DESCRIPTOR_REQUEST
_URB_CONTROL_DESCRIPTOR_REQUEST64
_URB_CONTROL_GET_STATUS_REQUEST
_URB_CONTROL_GET_STATUS_REQUEST64
_URB_CONTROL_FEATURE_REQUEST
_URB_CONTROL_FEATURE_REQUEST64
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST64
_URB_CONTROL_GET_INTERFACE_REQUEST
_URB_CONTROL_GET_INTERFACE_REQUEST64
_URB_CONTROL_GET_CONFIGURATION_REQUEST
_URB_CONTROL_GET_CONFIGURATION_REQUEST64
_URB_OS_FEATURE_DESCRIPTOR_REQUEST
_URB_OS_FEATURE_DESCRIPTOR_REQUEST64
_URB_CONTROL_TRANSFER
_URB_CONTROL_TRANSFER64
_URB_CONTROL_TRANSFER_EX _URB_CONTROL_TRANSFER_EX64
_URB_BULK_OR_INTERRUPT_TRANSFER
_URB_BULK_OR_INTERRUPT_TRANSFER64
_USBD_ISO_PACKET_DESCRIPTOR
_USBD_ISO_PACKET_DESCRIPTOR64
_URB_ISOCH_TRANSFER
_URB_ISOCH_TRANSFER64
_URB_TIMEOUT
_URB_TIMEOUT64
_URB_RAW_CONTROL_TRANSFER
_URB_RAW_CONTROL_TRANSFER64
_URB_SET_PIPE_PARAMETERS
_URB_SET_PIPE_PARAMETERS64
_URB_GET_PIPE_PARAMETERS
_URB_GET_PIPE_PARAMETERS64
DEVICE_RELATIONS DEVICE_RELATIONS64
PDEVICE_RELATIONS PDEVICE_RELATIONS64