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

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. 代码质量控制 & 编程注意项

    目录 代码质量控制 编程注意项 代码&功能优化 代码优化 功能&模块优化 其他 小技巧 调试 用于记录工作中出现的问题和编程时需要注意的重点,保证代码质量和编程效率     代码质量控 ...

  2. 使用parted对Linux未分区部分进行分区

    1. 使用命令parted -l 查看当前分区 可以看到硬盘有2396GB即有2.5T , 但是分区就分了50G一个盘, 需要分剩下部分 [root@localhost ~]# parted -l M ...

  3. flutter从入门到精通二

    静态方法和静态属性(static): 通过static修饰的方法和属性称为静态方法和静态属性,注意静态方法和静态属性只能通过类名访问,不能通过对象访问. 静态方法不能访问非静态的属性和非静态方法,反正 ...

  4. 从入门到精通,Java学习路线导航

    引言最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧. Ja ...

  5. C#在DataTable中使用LINQ

    LINQ 查询适用于实现的数据源 IEnumerable<T>接口或System.Query.IQueryable接口. DataTable类默认是没有实现以上接口的. 所以要在DataT ...

  6. (详细)Eclips+jsp+servlet+mysql+登录实例+源代码

    欢迎任何形式的转载,但请务必注明出处. 该教程较全,从软件的安装以及相关的环境配置我都放置了相关教程的链接,读者可直接点击进入.自己写电商网站作业时查找了很多资料,但都不是很全,所以趁着寒假写了这份教 ...

  7. 【日语】日语能力考试N2级核心词汇必备—接续词

    日语能力考试N2级核心词汇必备—接续词 顺接 だから 因为......所以......(下文可用命令,意志劝诱等)その結果  其结果(口语,书面语都行,但是比较生硬)したがって  从而,因而(书面语, ...

  8. 【robotframework】robotframework基本使用

    一.创建项目 1.创建测试项目 选择菜单栏 file----->new Project Name 输入项目名称:Type 选择 Directory. 2.创建测试套件 右键点击“测试项目”选择 ...

  9. java - day019 - 反射

    网络程序,难点在线程 反射 reflect 实用 类对象 来执行反射操作 反射获得一个类的定义信息 反射创建对象 反射调用成员变量, 方法 方法 获得类对象的三种方式 A.class Class.fo ...

  10. 原生Ajax代码实现

    Ajax Asynchronous JavaScript And XML   异步: 指一段程序执行时不会阻塞其他程序执行,其表现形式为程序的执行顺序不依赖程序本身的书写顺序 ,相反的则为同步, 自己 ...