Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives
- From: "Gary G. Little" <gary.g.little@xxxxxxxxxxx>
- Date: Mon, 7 May 2007 10:18:28 -0500
NtDev is one of several newsgroups where kernel/driver developers persist.
Look at osronline.com and register there.
I believe we align to an 8 byte boundary, but that's more of a guess, as in
that regard I tend to be more of a user than an implement.
My testing on WinXP SP2 indicated that the timeout error is really a lie.
The amount of data I requested was indeed read. However, that will most
likely cause addtiional code-consternation since with a known failure you
should then verify any data that was read is indeed valid, if you can. Your
FW binary should have internal checks such as CRC and or chesksum, but you
have to know the format and algorhythms used.
Gary
"cappy2112" <cappy2112@xxxxxxxxx> wrote in message
news:1178300733.205619.270950@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
On May 3, 8:34 am, "Gary G. Little" <gary.g.lit...@xxxxxxxxxxx> wrote:
Next question is which OS?
BTW- in your implementation of the ATA passthrough- are your
structures or data buffers aligned to specific boundaries?
The IOCTL ATA_Passthrough referes to cahce-aligned boundaries, but it
doesn't specify what size that is.
IOCTL_ATA_PASS_THROUGH_DIRECTFrom Storage Devices: Windows Driver Kit
"if the ATA command requests a data transfer operation, the caller
must set up a cache-aligned buffer from which, or into which, the
driver can transfer data directly. The IOCTL_ATA_PASS_THROUGH_DIRECT
request is typically used for transferring large amounts of data (more
than 16 KB)."
READ SECTOR(S) in Windows XP, up through SP2, has a history of having
timeout problems reading more than 1 sector. Do a search both here and on
the NtDev list and you should see this discussed in earlier threads.Vista
appears to have resolved the problem, but I have also seen this vary
across
different drives. I have several ATA discs that I use for testing: ST9120
(PATA), ST980 (PATA), and ST360 (SATA). The ST9120 gobbles up a 255 block
read, but the ST980 and ST360 both evidence timeouts when number of
blocks >
1, even though the data was read to completion. The firmware in all 3
drives
has never been released, so the fact that the ST9120 succeeded could be
more
a function of that firmware.
--
The personal opinion of
Gary G. Little
"cappy2112" <cappy2...@xxxxxxxxx> wrote in message
news:1178153371.402975.320530@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
On May 2, 7:18 am, "Gary G. Little" <gary.g.lit...@xxxxxxxxxxx> wrote:
By one block you mean 512 bytes? Seems a silly question, but "block"
definition can change by simply walking into a new office.
WhatATAcommand are youusingand what does the TFR look like?The subject line refers to Serial ATA drives. Blocks and sectors mean
the same with regards to hard drives.
The task files are as follows 0 2 E8h 03 00 E0h 20h
Using parallel ATA drives, up to 250 sectors can be transferred in
either direction, but not on SATA drives.
--
The personal opinion of
Gary G. Little
"cappy2112" <cappy2...@xxxxxxxxx> wrote in message
news:1178047906.745351.39680@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Has anyone been able to get reads/writes greater than 1 block to
work
onSerialATAdrivesusingeither of these passthrough structures?
They seem to work up to 250 blocks onlyusingPATAdrives, but can
only transfer 1 blockusingSERIALatadrives.
Does anyone have any insight to this?
thanks
.
- Follow-Ups:
- References:
- Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives
- From: cappy2112
- Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives
- From: Gary G. Little
- Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives
- From: cappy2112
- Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives
- From: Gary G. Little
- Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives
- From: cappy2112
- Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives
- Prev by Date: Memory allocation in windows kernel driver
- Next by Date: IRP Response
- Previous by thread: Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives
- Next by thread: Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives
- Index(es):
Relevant Pages
|
|