Hi,
There’s an ATAPORT miniport driver in WDK samples called msahci. I’m trying to utilize it to make possible sending ATA commands directly (with ATA CDBs inside) and asynchronously. I used IOCTL_ATA_PASS_THROUGH command code to to send them, and they were processed in a synchronous way, so the miniport driver wasn’t hahding them simultaneously.
Considering overlapped requests, DDK help claims that “All pass-through requests must be synchronous” and while debugging it looks that even if they aren’t, the upper-level ATAPORT driver passes the next command only after the previous has completed.
Is they some workaround to make the processing asynchronous?
Thanks.
Not likely. That’s one of the restrictions with pass through; it must be synchronous. However, looking at ATA itself, the controller will not start another transaction until the current one is completed.
Gary G. Little
----- Original Message -----
From: xxxxx@gmail.com
To: “Windows System Software Devs Interest List”
Sent: Tuesday, January 25, 2011 4:37:29 AM
Subject: [ntdev] Overlapped requests to ATAPORT miniport driver
Hi,
There’s an ATAPORT miniport driver in WDK samples called msahci. I’m trying to utilize it to make possible sending ATA commands directly (with ATA CDBs inside) and asynchronously. I used IOCTL_ATA_PASS_THROUGH command code to to send them, and they were processed in a synchronous way, so the miniport driver wasn’t hahding them simultaneously.
Considering overlapped requests, DDK help claims that “All pass-through requests must be synchronous” and while debugging it looks that even if they aren’t, the upper-level ATAPORT driver passes the next command only after the previous has completed.
Is they some workaround to make the processing asynchronous?
Thanks.
—
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
Right, sequential processing of commands takes place always… but not in case of NCQ commands. NCQ commands (Read/Write FPDMA Queued) are expected to be processed asynchronously by HBA as well when they are issued to more than a single slot.
If there’s no way of sending overlapped pass-through requests down to miniport driver, are there any other commands or tricks I can use for sending asynchronous requests to miniport passing an ATA taskfile as a parameter/buffer? Since I got a source code of the miniport, I can change the driver if necessary.
Thanks.