为了学习存储知识,我也是拼了,来,翻译一下下面这篇微软的文章(如果有谁翻译过了,或者微软有中文翻译,请绕路):

Storage Port Drivers

Last Updated: 4/20/2017
 

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 RoutinesStorport 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。

括弧里面的是另外添加的,不欢迎的欢迎来斗!

正所谓:

寻得千篇难得解,自个翻译释忧愁。

我欲磨练成高手,耐得英语舍自由。

Storage Port Drivers的更多相关文章

  1. libVirt APIs uris (storage,hypervisors)drivers terminologies,glossary xml VMI format

  2. Send custom commands to Mass Storage device

    http://stackoverflow.com/questions/14363152/send-custom-commands-to-mass-storage-device I have devel ...

  3. USB storage drivers分析之一

    /drivers/usb/storage/Makefile ## Makefile for the USB Mass Storage device drivers.## 15 Aug 2000, Ch ...

  4. Linux/drivers/usb/serial/ftdi_sio.c

    Linux/drivers/usb/serial/ftdi_sio.h /* 2 * Driver definitions for the FTDI USB Single Port Serial Co ...

  5. 如何切入 Linux 内核源代码

    Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了 ...

  6. Linux内核学习方法

    Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了 ...

  7. Basic Printing Architecture

    https://blogs.technet.microsoft.com/askperf/2007/06/19/basic-printing-architecture/ Printer sharing, ...

  8. Linux内核(1) - Kernel地图:Kconfig与Makefile

    Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了 ...

  9. 《Linux内核修炼之道》精华分享与讨论(5)——Kernel地图:Kconfig与Makefile

    转自:http://blog.csdn.net/fudan_abc/article/details/5340408 Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天 ...

随机推荐

  1. Win自带mastc远程Cenots7桌面

    1.Centos7安装桌面 yum -y groups install "GNOME Desktop" startx 2.安装xrdp 操作需要root用户权限,所以,我们先切换为 ...

  2. 滤波器算法(1)-卡尔曼滤波小车附带题目与MATLAB程序

    1 简介 由卡尔曼这个学者提出的最佳线性滤波器,单纯时域维度即可实现[无需进行频域变换] 2 思路 由上一时刻的最佳估计值XKE_P预测①当前时刻预测值Pxv 与 ②当前时刻的测量值Mxv 进行联立计 ...

  3. php批量检测并去除BOM头的代码

    开发中会遇到BOM头, 导致程序无法执行. 浏览器返回接口如下图: 去除BOM头解决方法:<?phpini_set('memory_limit','1024M'); function check ...

  4. FICO-错误日志集

    1.F-02报错 System error in routine FI_TAX_CHK_PRICING_DATA error code 13 function builder TAX2 程序 FI_T ...

  5. Mysql 中完善的帮助命令

    Mysql 中完善的帮助命令 Mysql 中的帮助系统很完善,很多操作都可以通过命令行直接获得帮助,如下示例: Mysql 命令行帮助 [root@mysql1 mydata1]# mysql -S ...

  6. CEIWEI CommTone串口调试精灵7.1 串口调试 串口工具

    CEIWEI CommTone串口调试精灵   是一款功能强大的串行端口通信调试软件,内嵌超过100种标准的CRC校验功能,并支校验结果高低位字节前导转换:支持批量协议调试,并支持文件.16进制.UN ...

  7. microsoft office 2007 在已经安装pdf maker的情况下另存为没有adobe pdf选项

    通常,此类情况是pdf maker 插件被禁用导致,点击office 2007左上角菜单栏,选项,加载项,在管理处选择禁用项目, 找到acrobat pdf maker office com addi ...

  8. PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能

    PHP开启目录引索 一. 前言 不知为何对nginx情有独钟, 最近练习php, 为了方便写代码, 便想要开启nginx的目录索引功能, 显然不如Apache开启的方便, 几次尝试都崩了... 我这个 ...

  9. Windows server 2012 利用ntdsutil工具实现AD角色转移及删除域控方法

    场景1:主域控制器与辅助域控制器运行正常,相互间可以实现AD复制功能.需要把辅助域控制器提升为主域控制器 ,把主域控制器降级为普通成员服务器:这种场景一般应用到原主域控制器进行系统升级(先转移域角色, ...

  10. 0021SpringMVC环境搭建及入门程序编写

    环境搭建: 1.创建项目 创建maven项目,勾选上Create from archetype,然后选中webapp再点击下一步,如下图: 解决项目创建过慢问题: 在创建maven项目过程中加入一组键 ...