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。
括弧里面的是另外添加的,不欢迎的欢迎来斗!
正所谓:
寻得千篇难得解,自个翻译释忧愁。
我欲磨练成高手,耐得英语舍自由。
Storage Port Drivers的更多相关文章
- libVirt APIs uris (storage,hypervisors)drivers terminologies,glossary xml VMI format
- Send custom commands to Mass Storage device
http://stackoverflow.com/questions/14363152/send-custom-commands-to-mass-storage-device I have devel ...
- USB storage drivers分析之一
/drivers/usb/storage/Makefile ## Makefile for the USB Mass Storage device drivers.## 15 Aug 2000, Ch ...
- 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 ...
- 如何切入 Linux 内核源代码
Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了 ...
- Linux内核学习方法
Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了 ...
- Basic Printing Architecture
https://blogs.technet.microsoft.com/askperf/2007/06/19/basic-printing-architecture/ Printer sharing, ...
- Linux内核(1) - Kernel地图:Kconfig与Makefile
Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了 ...
- 《Linux内核修炼之道》精华分享与讨论(5)——Kernel地图:Kconfig与Makefile
转自:http://blog.csdn.net/fudan_abc/article/details/5340408 Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天 ...
随机推荐
- 效率提升工具Listary
效率提升工具Listary https://baijiahao.baidu.com/s?id=1590032175308204846&wfr=spider&for=pc
- go的安装及环境变量设置
1,go安装 https://studygolang.com/dl 官网下载,找自己需要的版本,傻瓜式安装 2.go的环境变量设置 windows下面要设置root和path root代表go安装路径 ...
- [技术翻译]预加载响应式图像,从Chrome 73开始实现
本次预计翻译三篇文章如下: 01.[译]9个可以让你在2020年成为前端专家的项目 02.[译]预加载响应式图像,从Chrome 73开始实现 03.[译]您应该知道的13个有用的JavaScript ...
- 什么是Familywise Error Rate
1.什么是Familywise Error Rate(FWE or FWER) 定义:在一系列假设检验中,至少得出一次错误结论的概率. 换句话说,是造成至少一次Type I Error的概率.术语FW ...
- docker linux下配置加速器
[root@foundation83 ~]# cd /etc/docker/[root@foundation83 docker]# vim daemon.json{ "registry-mi ...
- 说说你对kubernetes的理解(简单)
目录 整体概述 pod工作流程 k8s网络 flannel 网络策略,network proxy 几套证书理解 组件 master管理节点上组件 node节点 整体概述 k8s是一个编排工具,是谷歌的 ...
- Flutter——Switch组件(开关组件)
Switch组件常用的属性: 属性 描述 value 单选的值 onChanged 改变时触发 activeColor 选中的颜色.背景颜色 import 'package:flutter/mater ...
- [dev][ipsec] 基于路由的VPrivateN
VPrivateN的配置分两个模式 1. 基于策略的VPrivateN ( policy based) 2. 基于路由的VPrivateN (route based) 以strongswan为例, 在 ...
- 使用Dell iDRAC服务器远程控制安装操作系统简要图解
使用Dell iDRAC服务器远程控制安装操作系统简要图解 iDARC tools iDRAC又称为Integrated Dell Remote Access Controller,也就是集成戴尔 ...
- 9.1: 请每个小组在 cnblogs.com 上面创建团队博客,第一个博客把小组成员都介绍一下 #团队博客作业1------------------答题者:徐潇瑞
大家好,我们这个团队的名字叫14组之家,之所以这么叫,因为我们是在章亦葵老师的现代软件工程课上成立为14组,而且我们每个组员在这个小家庭中都感受到温暖,我们互相协作,互相配合,来完成我们的任务. 首先 ...