Storage Port Drivers
为了学习存储知识,我也是拼了,来,翻译一下下面这篇微软的文章(如果有谁翻译过了,或者微软有中文翻译,请绕路):
Storage Port Drivers
Microsoft Windows contains three system-supplied storage port drivers:
-
SCSI Port Driver (Scsiport.sys)
-
Storport Driver (Storport.sys), available in Windows Server 2003 and later versions of the operating system
-
ATA Port Driver (Ataport.sys), available in Windows Vista and later versions of the operating system
The Storport driver is a more efficient, higher performance driver than SCSI Port. Therefore you should develop miniport drivers that work with the Storport driver whenever possible. It is particularly important to use Storport with high performance devices, such as host-based RAID and fibre channel adapters. Storport cannot be used with adapters or devices that do not support Plug and Play (PnP) or that must use system DMA. For a detailed list of restrictions on the use of the Storport driver, see Requirements for Using Storport with an Adapter.
The ATA port driver shields an ATA miniport driver from the SCSI-based protocol that the port driver uses to communicate with higher-level drivers, such as storage class drivers. For instance, miniport drivers that are attached to either SCSI port or Storport must provide SCSI sense data to the port driver. This is not necessary for an ATA miniport driver. The ATA port driver collects the necessary data from the ATA miniport driver by using ATA commands, organizes the data so that it conforms to a SCSI sense data format, and passes the data on to higher-level drivers as though it were SCSI sense data. The ATA port driver also converts each SCSI_REQUEST_BLOCK that it receives from higher-level drivers into an ATA-based equivalent called an IDE_REQUEST_BLOCK.
Each port driver communicates with a set of vendor-supplied storage miniport drivers and supplies a set of support routines for the miniport drivers to call. Support routines supplied by the SCSI Port driver are described in SCSI Port Library Routines. Support routines supplied by the Storport driver are described in Storport Driver Support Routines. Support routines supplied by the ATA port driver are described in ATA Port Library Routines.
Each port driver communicates with its miniport drivers by calling a standard set of routines that every storage miniport driver must implement. The miniport driver routines called by the SCSI port driver, the Storport driver, and the ATA port driver are very similar to one another. Descriptions of these routines can be found in SCSI Miniport Driver Routines, Storport Driver Miniport Routines, and ATA Miniport Driver Routines, respectively.
If you want your storage device to be supported on client Windows products, or on server products earlier than Windows Server 2003, you must supply a SCSI Port miniport driver.
If you want your storage device to be supported on Windows Server 2003 and later versions of the server product family, you can provide either a SCSI Port miniport driver or a Storport miniport driver. If you wish to install an ATA storage device in Windows Vista and later versions of the operating system, you must provide an ATA port miniport driver.
The sections that follow describe the SCSI Port, Storport, and ATA port drivers and how they differ...
存储端口驱动程序
微软的Windows包含三种类型的存储端口驱动:
- SCSI 端口驱动(Scsiport.sys)
- StorPort 端口驱动(Storport.sys), Windows Server 2003以及之后的OS版本都支持
- ATA 端口驱动 (Ataport.sys) Windows Vista以及之后的OS版本都支持
Storport 驱动比SCSIport高效,高能。所以想开发miniport(话说这是啥东西,待研究,我是初学者请吐槽)驱动的话,尽量用Storport。特别是当给高能设备如RAID或者FC adapter使用的话,更得用这个了。Storport不能给“不支持PnP或必须用系统DMA”的设备或者适配器使用(真TM拗口)。关于具体的限制,请看这里(抽空再来翻译它)。
ATA 端口驱动把SCSI协议包装了一下,包装成ATA miniport驱动。然后通过SCSI协议与上层的驱动进行通信,如storage class drivers。(说白了,就是贴牌)。一般来讲,miniport驱动,不管是依托于SCSI端口亦或是Storport都必须提供一个SCSI sense data到端口驱动中(就是你得遵循和使用人家既定的数据、结构,接受潜规则)。但是ATA miniport 驱动却不需要(够拽的,他以为他是侯亮平)。ATA 端口驱动使用ATA命令从ATA miniport驱动中获取需要的数据,并把之编排成SCSI sense data的格式然后传送到高层,好像它就是SCSI sense data似的(伪装成功)。相应的,ATA驱动呢也将每个从高层发下来的SCSI_REQUEST_BLOCK转换成ATA命令格式,即IDE_REQUEST_BLOCK。(从中文上来讲这句话不完整,没说完,anyway,感觉ATA接口驱动就是个二道贩子)。
每个端口驱动都跟用户定义的一系列storage miniport驱动进行通信,同时也提供一系列的例程供miniport驱动调用(吃人家的还得给人家吃)。这些例程,SCSI端口驱动提供的在SCSI Port Library Routines, Storport接口驱动的在Storport Driver Support Routines,还有ATA接口驱动提供的在ATA Port Library Routines。
每个端口驱动会调用一系列标准的例程,这些例程是每个miniport驱动必须提供的(就是说我端口驱动按固定的格式去调用一些函数,你底层的miniport要想和我兼容,必须提供这些标准函数给我用)。SCSI,Storport和ATA端口驱动要求的例程格式差不多。具体描述在: SCSI Miniport Driver Routines, Storport Driver Miniport Routines, and ATA Miniport Driver Routines。
如果你想你的存储设备能在client Windows或者比Windows Server 2003更老的server产品上使用,你必须提供SCSI 端口的miniport驱动。
如果你想你的存储设备能在Windows Server 2003 以及之后的server产品上使用,你可以要么提供一个 SCSI Port miniport driver要么提供一个 Storport miniport driver. 如果你想你的ATA存储设备能在 Windows Vista以及之后的产品上使用,那么你必须提供一个 ATA port miniport driver。
括弧里面的是另外添加的,不欢迎的欢迎来斗!
正所谓:
寻得千篇难得解,自个翻译释忧愁。
我欲磨练成高手,耐得英语舍自由。