From what I've seen, third party SATA controllers (Adaptec, Promise)
are implementing there miniport drivers as SCSI miniport drivers, so
IOCTL_SCSI_PASS_THROUGH is supported, but not IOCTL_ATA_PASS_THROUGH.
This makes something as simple as sending an Identify command through
the pass through interface impossible (?).
Also, does anyone know if the Intel ICH5 chipset supports the
IOCTL_ATA_PASS_THROUGH for SATA devices?
Any feedback would be greatly appreciated.
Thanks,
Jeff
Gary
"J. Mullins" <jmul...@ccs.neu.edu> wrote in message
news:3bd86067.04062...@posting.google.com...
IOCTL_ATA_PASS_THROUGH is new. Try IOCTL_SCSI_MINIPORT_IDENTIFY and
IOCTL_IDE_PASS_THROUGH on legacy subsystems.
IOCTL_SCSI_MINIPORT + SMART_RCV_DRIVE_DATA will read the ATA IDENTIFY data for
any disks, even pre-SMART ones :-). Works on all NTs since NT4.
--
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
ma...@storagecraft.com
http://www.storagecraft.com
As of right now, if you need to do pass through using ATAPI.sys you are
restricted to XP SP2 RC1 and Server 2003, and note that XP SP2 RC2 has fixes
that may not be in the Server 2003.
--
Gary G. Little
Seagate Technologies, LLC
"heinz baer" <heinz...@my-deja.com> wrote in message
news:5a47bd7f.04062...@posting.google.com...
Also, if this is also implemented as a SCSI miniport, how does one go
about sending pass through ATA commands through SATA controllers? Do
you need the miniport driver specs? How would you go about getting
the specs on a SATA controller's miniport driver? It seems like
getting your hands on these would be very unlikely.
Intel's ACHI standard is open. This leaves open the possibility of
writing your own driver for a SATA controller or you could wait for
the ATAPORT driver, availble in operating systems greater than Server
2003.
Are there any other options?
"Gary G. Little" <gary.g.lit...@seagate.com> wrote in message news:<AuXBc.7946$WU1...@newssvr24.news.prodigy.com>...
Gary.
"J. Mullins" <jmul...@ccs.neu.edu> wrote in message
news:3bd86067.04062...@posting.google.com...
False. IOCTL_IDE_PASS_THROUGH works on 2000 and XP including SP1. I
listed it as there is a chance 3rd party drivers implemented it for
compatibility. You can get sample code for using this IOCTL from here:
ftp://ftp.heise.de/pub/ct/listings/0207-218.zip
> You need the hot fix, XP SP2 RC2 or Server 2003
Does not apply to the OP who is using 3rd party scsi miniport drivers.
> using the SCSI miniport IOCTL with a SMART command will work to get
> IDENTIFY data but the full spectrum of pass through and used defined
> commands allowed by the ATA-6 specification are not doable using that IOCTL
> unless the SCSI miniport permits it.
IF AND ONLY IF you send the command above disk.sys you can use Max's
SMART_RCV_DRV_DATA "trick", otherwise use IOCTL_SCSI_MINIPORT_IDENTIFY
I mentioned before (OP may not be running a disk drive or sending
commands below the disk.sys level). Note there are numerous other
IOCTLs for other ATA commands such as
IOCTL_SCSI_MINIPORT_EXECUTE_OFFLINE_DIAGS. Not the full spectrum, but
IOCTL_ATA_PASS_THROUGH doesn't permit that either. The SCSI miniport
IOCTLs have also been around since Windows 2000 and thus have a chance
of being implemented by existing 3rd party drivers. See the DDK
samples for how to use these.
--
Gary G. Little
Seagate Technologies, LLC
"heinz baer" <heinz...@my-deja.com> wrote in message
news:5a47bd7f.04062...@posting.google.com...
You seem to be confusing the two. IOCTL_IDE_PASS_THROUGH is a
completely different animal and has no resemblance at all to
IOCTL_ATA_PASS_THROUGH/DIRECT. IDE_PASS_THROUGH was never documented
by Microsoft, though the IOCTL code has existed in the DDK header
files for years before ATA_PASS_THROUGH was invented. It doesn't use
anything like the ATA_PASS_THROUGH_EX/DIRECT structures either; you
won't find the IDE_PASS_THROUGH structure in any Microsoft
headers--only in 3rd party sample code like I referenced before. I use
the below tool to send ATA commands and it does so by way of
IOCTL_IDE_PASS_THROUGH under regular Win2k & XP systems (no hot
fixes):
http://www.perisoft.net/bushound
IOCTL_IDE_PASS_THROUGH isn't as powerful as IOCTL_ATA_PASS_THROUGH,
but if you just want to do simple things like read the partition
table, query the IDENTIFY data, or RESET an atapi device, then it
works well.