Welcome to WinForumz.com!
FAQFAQ      ProfileProfile    Private MessagesPrivate Messages   Log inLog in

Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIR..

 
   Windows XP (Home) -> XP Device Driver RSS
Next:  Microsoft laser mouse 6000  
Author Message
cappy2112

External


Since: May 01, 2007
Posts: 6



(Msg. 1) Posted: Tue May 01, 2007 12:31 pm
Post subject: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives
Archived from groups: microsoft>public>windowsxp>device_driver>dev (more info?)

Has anyone been able to get reads/writes greater than 1 block to work
on Serial ATA drives using either of these passthrough structures?

They seem to work up to 250 blocks only using PATA drives, but can
only transfer 1 block using SERIAL ata drives.


Does anyone have any insight to this?

thanks

 >> Stay informed about: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIR.. 
Back to top
Login to vote
Gary G. Little

External


Since: Jan 04, 2006
Posts: 16



(Msg. 2) Posted: Wed May 02, 2007 9:18 am
Post subject: Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

By one block you mean 512 bytes? Seems a silly question, but "block"
definition can change by simply walking into a new office.

What ATA command are you using and what does the TFR look like?

--
The personal opinion of
Gary G. Little

"cappy2112" <cappy2112 RemoveThis @gmail.com> wrote in message
news:1178047906.745351.39680@h2g2000hsg.googlegroups.com...
>
> Has anyone been able to get reads/writes greater than 1 block to work
> on Serial ATA drives using either of these passthrough structures?
>
> They seem to work up to 250 blocks only using PATA drives, but can
> only transfer 1 block using SERIAL ata drives.
>
>
> Does anyone have any insight to this?
>
> thanks
>

 >> Stay informed about: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIR.. 
Back to top
Login to vote
cappy2112

External


Since: May 01, 2007
Posts: 6



(Msg. 3) Posted: Wed May 02, 2007 5:49 pm
Post subject: Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

On May 2, 7:18 am, "Gary G. Little" <gary.g.lit....TakeThisOut@seagate.com> 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....TakeThisOut@gmail.com> wrote in message
>
> news:1178047906.745351.39680@h2g2000hsg.googlegroups.com...
>
>
>
> > 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
 >> Stay informed about: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIR.. 
Back to top
Login to vote
Gary G. Little

External


Since: Jan 04, 2006
Posts: 16



(Msg. 4) Posted: Thu May 03, 2007 10:34 am
Post subject: Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

Next question is which OS?

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" <cappy2112.DeleteThis@gmail.com> wrote in message
news:1178153371.402975.320530@p77g2000hsh.googlegroups.com...
> On May 2, 7:18 am, "Gary G. Little" <gary.g.lit....DeleteThis@seagate.com> 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....DeleteThis@gmail.com> wrote in message
>>
>> news:1178047906.745351.39680@h2g2000hsg.googlegroups.com...
>>
>>
>>
>> > 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
>
>
 >> Stay informed about: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIR.. 
Back to top
Login to vote
cappy2112

External


Since: May 01, 2007
Posts: 6



(Msg. 5) Posted: Fri May 04, 2007 10:41 am
Post subject: Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

> Next question is which OS?
XP, SP2


> READ SECTOR(S) in Windows XP, up through SP2, has a history of having
I used that command as an example. We are actually trying to issue
download microcode x92, but I'm waiting for the FW to be released.
In the mean time I thought I would try doing reads & writes.

Is there any documentation for ATA passthrough other than this?
http://msdn2.microsoft.com/en-us/library/aa510324.aspx

> 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
Is this a list or a newsgroup?

Thanks for the information!
It's more than I got from Microsoft
 >> Stay informed about: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIR.. 
Back to top
Login to vote
cappy2112

External


Since: May 01, 2007
Posts: 6



(Msg. 6) Posted: Fri May 04, 2007 10:45 am
Post subject: Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

On May 3, 8:34 am, "Gary G. Little" <gary.g.lit....RemoveThis@seagate.com> 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.


>From Storage Devices: Windows Driver Kit
IOCTL_ATA_PASS_THROUGH_DIRECT

"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....RemoveThis@gmail.com> wrote in message
>
> news:1178153371.402975.320530@p77g2000hsh.googlegroups.com...
>
> > On May 2, 7:18 am, "Gary G. Little" <gary.g.lit....RemoveThis@seagate.com> 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....RemoveThis@gmail.com> wrote in message
>
> >>news:1178047906.745351.39680@h2g2000hsg.googlegroups.com...
>
> >> > 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
 >> Stay informed about: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIR.. 
Back to top
Login to vote
Gary G. Little

External


Since: Jan 04, 2006
Posts: 16



(Msg. 7) Posted: Mon May 07, 2007 10:18 am
Post subject: Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

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 RemoveThis @gmail.com> wrote in message
news:1178300733.205619.270950@l77g2000hsb.googlegroups.com...
> On May 3, 8:34 am, "Gary G. Little" <gary.g.lit... RemoveThis @seagate.com> 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.
>
>
>>From Storage Devices: Windows Driver Kit
> IOCTL_ATA_PASS_THROUGH_DIRECT
>
> "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... RemoveThis @gmail.com> wrote in message
>>
>> news:1178153371.402975.320530@p77g2000hsh.googlegroups.com...
>>
>> > On May 2, 7:18 am, "Gary G. Little" <gary.g.lit... RemoveThis @seagate.com> 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... RemoveThis @gmail.com> wrote in message
>>
>> >>news:1178047906.745351.39680@h2g2000hsg.googlegroups.com...
>>
>> >> > 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
>
>
 >> Stay informed about: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIR.. 
Back to top
Login to vote
cappy2112

External


Since: May 01, 2007
Posts: 6



(Msg. 8) Posted: Thu May 10, 2007 11:37 am
Post subject: Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

On May 7, 8:18 am, "Gary G. Little" <gary.g.lit... DeleteThis @seagate.com> wrote:
> 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.

Would it be possible to ask your developers which boundary alignment
they use for both data buffers and structures ( I assume they are the
same alignment, but since microsoft doesn't specify what the cache
alignment size is, I need to inquire)

thanks
 >> Stay informed about: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIR.. 
Back to top
Login to vote
Gary G. Little

External


Since: Jan 04, 2006
Posts: 16



(Msg. 9) Posted: Fri May 11, 2007 8:36 am
Post subject: Re: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIRECT on Serial ATA drives [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

8.

--
The personal opinion of
Gary G. Little

"cappy2112" <cappy2112 DeleteThis @gmail.com> wrote in message
news:1178822221.558650.200820@e51g2000hsg.googlegroups.com...
> On May 7, 8:18 am, "Gary G. Little" <gary.g.lit... DeleteThis @seagate.com> wrote:
>> 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.
>
> Would it be possible to ask your developers which boundary alignment
> they use for both data buffers and structures ( I assume they are the
> same alignment, but since microsoft doesn't specify what the cache
> alignment size is, I need to inquire)
>
> thanks
>
 >> Stay informed about: Using IOCTL_ATA_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH_DIR.. 
Back to top
Login to vote
Display posts from previous:   
   Windows XP (Home) -> XP Device Driver All times are: Eastern Time (US & Canada) (change)
Page 1 of 1

 
You can post new topics in this forum
You can reply to topics in this forum
You can edit your posts in this forum
You can delete your posts in this forum
You can vote in polls in this forum

Categories:
  Windows XP
 Windows Vista!
 Win 2000/NT/98/ME


[ Contact us | Terms of Service/Privacy Policy ]