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

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. 三元组[01 Trie计数]

    也许更好的阅读体验 \(\mathcal{Description}\) \(\mathcal{Solution}\) 有两种方法都可以拿到满分 \(Solution\ 1\) 考虑枚举\(y\) 建两 ...

  2. 1.VBA Excel宏

    Excel VBA宏 在这一章中,让我们了解如何编写一个简单的宏.让我们一步一步来. 第1步:首先,让我们能够在Excel20XX'开发'菜单.做同样的,点击 File >> Option ...

  3. logback日志无法按日期分割的问题

    发现在线上的时候,日志无法按日期分割的问题,所有日志都在第一天部署的那个日期的文件里面. 背景是Springboot + logback 原因是: 之前是: 用timeBaseRollingPolic ...

  4. Java Comparable与Comparator区别

    1,两种接口的展示 下面的程序是两个类各自实现了Comparable接口.Comparator接口 package com.cnblogs.mufasa.Solution; import java.u ...

  5. Python之原始数据-1

    一.数据对于模型来说是基础,是数据成就了模型,而现在的又是一个数据时代,比如:淘宝等.通过对用户数据的分析挖掘,预测用户的消费习惯等,再比如:人工智能.通过提取摄像头的图片帧数,通过分析图片,得出具体 ...

  6. webstrom设置语句中的分号

    webstrom可以设置语句默认是否添加分号 setting >editor > Code Style > Javascript

  7. Go 实现短 url 项目

    首先说一下这种业务的应用场景: 把一个长 url 转换为一个短 url 网址 主要用于微博,二维码,等有字数限制的场景 主要实现的功能分析: 把长 url 地址转换为短 url 地址 通过短 url ...

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

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

  9. EntityFramework进阶(一)- DbContext与ObjectContext互转

    本系列原创博客代码已在EntityFramework6.0.0测试通过,转载请标明出处 EF中我们常用的是DbContext作为上下文,如果要想获取元数据等信息还是要用到ObjectContext这个 ...

  10. kvm虚拟化环境的搭建

    首先搭建kvm的虚拟化环境,我选择的环境是在vmvare上的Centos 7的虚拟机,在该环境上搭建kvm的虚拟化环境 1:安装虚拟机(该过程自行安装) 2:操作系统环境的设置 (1)修改内核模式为兼 ...