> So for a SATA based hard drive, ataport model is the one that is used used?
It does not depend on a drive. It depends on a controller.
A) For usual south-bridge PC/AT-compatible (0x1f0/0xf) controller, the old-style ATAPI.SYS is used, which is a full reimplementation of the SCSIPORT-style storage port talking to 0x1f0/0xf PC/AT controller.
ATAPI.SYS can have the decorator modules for DMA support - like PCIIDE.SYS, PCIIDEX.sys etc.
Without the decorators, ATAPI creates the “IDE channel” devnode with <= 2 bus children devnodes which are 2 disk or CD/DVD drives. DMA is not supported.
With the decorator, there is an “Intel PCI IDE controller”-style devnode created by the decorator, with possibly several “IDE channel” devnodes. For these latter ones, decorator is the PDO and ATAPI.SYS is the FDO. ATAPI.SYS running on such PDOs can support DMA.
B) In modern (Vista+) OSes, the suggested model for non PC/AT-compatible controllers is ATAPORT. The architecture is similar to STORPORT but supports lots of ATA-specific things.
IIRC ATAPORT code being implemented in the same STORPORT.SYS binary (I have doubts there is a separate ATAPORT.SYS).
The sample of the driver using ATAPORT is MSAHCI.SYS driver used for all AHCI controllers regardless of their vendor.
C) In pre-Vista OSes, for non PC/AT compatible controller (AHCI, HighPoint, Promise etc), the only model was SCSIPORT one. STORPORT could also be used, but it started from Server 2003 and is absent in XP, so it is hardly relevant here.
In this case, all translation of “emulated SCSI” commands to actual ATA commands is inside the vendor’s binary, MS does not know anything on this. And yes, the ATA controller looks as a SCSI controller in Device Manager, and its drives - as “SCSI Disk Device”.
–
Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com