阅读:1586回复:3
还是个虚拟光驱的问题??
我最近装了Alcohol 120%,发现它是先虚拟了一个Plug and Play Bus Extension的系统设备,在这个设备上虚拟了一个SCSI卡,而虚拟出来的DVD光驱的驱动则是微软的。我想请问一下它们之间(Bus Extension和SCSI Adapter;SCSI Adapter和DVD_Rom)是如何通信的,以及如何在一个不存在的总线上挂一个设备?
|
|
最新喜欢:lofe |
沙发#
发布于: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架构
|
|
板凳#
发布于:2004-02-10 00:12
…………这时候scsi adapter驱动程序只要处理SRB中的scsi CDB(command descript block)就行了,他可以把这个请求转换为文件操作,………… 您这里提到的吧这个请求转换为文件操作是如何实现的? 在miniport 里面应该不能用ZwXXX这些些操作文件的api吧?那么在miniport 中应该如何操作文件呢?? 望指点~~ [编辑 - 2/10/04 by FredLiu] |
|
地板#
发布于:2004-02-10 00:41
另外,我在翻其他帖子的时候发现对于在miniport里面进行文件读写,好像要用到timer什么的,还要自己处理同步,但是那帖子主要是讨论timer的,我没能找到具体读文件的代码。
现在最困惑我的问题是: miniport里面只能用scsi port driver 提供的函数,可是这些函数里面没有提供文件读写的功能(还是我没发现??)这样岂不无法在miniport里面读文件了?? 新手望指点~~ |
|