cch7701
驱动牛犊
驱动牛犊
  • 注册日期2002-08-25
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1586回复:3

还是个虚拟光驱的问题??

楼主#
更多 发布于:2003-08-24 09:42
我最近装了Alcohol 120%,发现它是先虚拟了一个Plug and Play Bus Extension的系统设备,在这个设备上虚拟了一个SCSI卡,而虚拟出来的DVD光驱的驱动则是微软的。我想请问一下它们之间(Bus Extension和SCSI Adapter;SCSI Adapter和DVD_Rom)是如何通信的,以及如何在一个不存在的总线上挂一个设备?

最新喜欢:

lofelofe
icube
驱动牛犊
驱动牛犊
  • 注册日期2002-04-11
  • 最后登录2004-12-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-10 13:06
这需要了解存储设备堆栈,由于scsi adapter是不存在的,所以该程序需要在ENUM\\Root总线注册键下面添加一个scsi adapter的硬件键,这样在系统启动时会加载该驱动。以后的行为就和PNP设备的行为一致了,系统会通过PNP命令询问该设备驱动是否发现子设备,这是scsi adapter会报告它发现了光驱设备并且创建相应的PDO设备对象,这是PNP管理器会根据设备id和类型加载cdrom类驱动程序,好了,存储设备堆栈建立起来了。当系统向存储设备堆栈发送请求时,cdrom类驱动回将IRP请求通过SRB(scsi request block)转换为scsi请求并发送给adapter创建的PDO,这时候scsi adapter驱动程序只要处理SRB中的scsi CDB(command descript block)就行了,他可以把这个请求转换为文件操作,如果是真的硬件设备的话就转换为总线相关的操作就行了。一般scsi adapter都是miniport架构
FredLiu
驱动牛犊
驱动牛犊
  • 注册日期2004-01-07
  • 最后登录2004-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-02-10 00:12
…………这时候scsi adapter驱动程序只要处理SRB中的scsi CDB(command descript block)就行了,他可以把这个请求转换为文件操作,…………


您这里提到的吧这个请求转换为文件操作是如何实现的? 在miniport 里面应该不能用ZwXXX这些些操作文件的api吧?那么在miniport 中应该如何操作文件呢??
望指点~~

[编辑 -  2/10/04 by  FredLiu]
FredLiu
驱动牛犊
驱动牛犊
  • 注册日期2004-01-07
  • 最后登录2004-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-02-10 00:41
另外,我在翻其他帖子的时候发现对于在miniport里面进行文件读写,好像要用到timer什么的,还要自己处理同步,但是那帖子主要是讨论timer的,我没能找到具体读文件的代码。
现在最困惑我的问题是: miniport里面只能用scsi port driver 提供的函数,可是这些函数里面没有提供文件读写的功能(还是我没发现??)这样岂不无法在miniport里面读文件了??
新手望指点~~
游客

返回顶部