I have a lower disk filter driver (processing read/write SRBs from class driver) on an ata drive. I need to make use of the “Reserved” bits of the (FP)DMA commands to be sent to the ata drive. What SRB field may I use so that when port driver translates it to ata (FP)DMA read/write command, the value of the modified SRB field is propogated to the desired “Reserved” bits?
Thank you.
Your best bet is to look up the T10 SAT spec, and see if you can find any
HBAs that implement that. I don’t remember seeing any FPDMA support in the
SAT draft I reviewed, but that was a very early draft a long, long time ago.
Otherwise, you would probably need to use a SATA HBA and hope you can get
the driver writers to expose something for you. Or write your own HBA
driver that implements what you need.
Phil
Philip D. Barila ?(303) 776-1264
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-436751-
xxxxx@lists.osr.com] On Behalf Of xxxxx@gmail.com
Sent: Tuesday, January 11, 2011 7:32 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] scsi to ata translation?
I have a lower disk filter driver (processing read/write SRBs from class
driver) on an ata drive. I need to make use of the “Reserved” bits of the
(FP)DMA commands to be sent to the ata drive. What SRB field may I use so
that when port driver translates it to ata (FP)DMA read/write command, the
value of the modified SRB field is propogated to the desired “Reserved”
bits?
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.
Thanks Phil, before posting I looked at the SAT draft (not sure if it is the recent one) and couldn’t find useful inrformation.
As mentioned, the storage stack talks CDBs so you can’t do this in a filter driver. So one way to accomplish this would be to replace the inbox driver with a SATA miniport.