阅读:3948回复:12
有看过tiamodisk源码的朋友恳请给指点一下,非常感谢……
源代码下载[/url]前几天下载了tiamo的范例:基于SCSI Miniport 实现的虚拟磁盘。
下下来安装后用hdtune进行测试,发现其读写速度很慢,只有0.2M/s,而正常的磁盘速度达到70M/s。 恳请各位大侠给指点一二。 第一次在这里发帖,不足之处还望各位大侠海涵…… |
|
最新喜欢:wangza... |
沙发#
发布于:2010-04-12 12:50
速度很慢有几个原因:
1:scsiport执行效率不高,所以微软在win2k3以后就推出storport来取代scsiport. 2:对读写I/O队列处理不够完善。 你可以参照VHDMOUNT,在网上可以找到。这是微软的虚拟磁盘,它就不是用scsiport。它的读写速度就很快。 |
|
板凳#
发布于:2010-04-12 13:04
感谢楼上大牛指点,我去找找VHDMOUNT看看。
在win7中自带一个把文件虚拟成磁盘的,不知道有没有大牛研究过…… |
|
地板#
发布于:2010-04-12 18:05
那个VHDMOUNT有源代码参考没……
|
|
地下室#
发布于:2010-04-12 18:54
VHDMOUNT没源码,但你可以用IDA看一下,也许对你有所启发。另外网上有一个例子VSCSIDISK,你可以下下来参考一下,它的架构和VHDMOUNT差不多。win7的虚拟磁盘的架构用的是storport,这也说明storport确实比scsiport有所改善。
|
|
5楼#
发布于:2010-04-13 08:58
找到了VSCSIDISK,去和tamodisk对比一下。storport性能的确比scsiport好,另外它支持RAID
|
|
6楼#
发布于:2010-04-13 14:30
VSCSIDISK的源代码初步看了一遍,它只能虚拟出一块磁盘来,不知道是否有人修改过这块让它可以虚拟出多块硬盘 。
感觉改动好像不小。 |
|
|
7楼#
发布于:2010-04-14 16:48
VSCSIDISK代码在win7下蓝屏,报0x19.磁碟机在磁碟找不到 持定的磁区或磁轨
|
|
8楼#
发布于:2010-04-17 07:46
VSCSIDISK加载后蓝屏(在XP下也是),如果用windbg跟踪的时候又没有问题。接下来该怎样调试呢?
另外有朋友有不出错的虚拟磁盘的例子,恳请给传一份作为参考,学习一下…… zhangxun_07@126.com |
|
9楼#
发布于:2010-04-22 17:52
據他們說
讀寫慢是因為 1.timer觸發就決定了他快不鳥 2.zwcreatefile的時候填錯了一個參數,文件打開方式沒對. 垃圾代碼 見笑了 |
|
10楼#
发布于:2010-04-23 10:10
哇,见到原作者了,激动。
我参考了那个VScsiDisk和ddk中toaster的例子重新做了。 非常感谢您放出来的代码,跟着您的例子对小端口驱动入了点门。非常感谢。 不过还有个问题想向您请教一下: Irp的stack中封装了SCSI命令包。 NTSTATUS Pdo_InternalCotrol( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ) { NTSTATUS status; PIO_STACK_LOCATION irpStack; PSCSI_REQUEST_BLOCK srb; PCDB cdb; PAGED_CODE (); KdPrint(("Pdo_InternalCotrol ++\n")); irpStack = IoGetCurrentIrpStackLocation(Irp); srb = irpStack->Parameters.Scsi.Srb; cdb = (PCDB)srb->Cdb; srb->SrbStatus = SRB_STATUS_SUCCESS; Irp->IoStatus.Information = 0; //接下来需要对srb中的命令进行处理了 switch(srb->Function) { case SRB_FUNCTION_EXECUTE_SCSI: { //这里需要处理SCSI command,也就是您示例代码中processscsi.cpp中的一组函数 这里我遇到问题了,cdb中封装了CDB6、CDB10、CDB12、CDB16等结构。 不同的windows 系统会发不同的命令。有没有方法动态获得程序运行的系统到底用的是哪一套命令呢? } break; //其它代码 } } |
|
11楼#
发布于:2010-05-03 16:36
你可以分析cdb中的op来获取某个命令的类型
windows使用的是一套固定的scsiop 这个列表我倒是没在什么地方见过完整的总结好的 但是classpnp,disk,cdrom等等这些都是有源代码的. windows使用的scsiop集中都在classpnp里面 |
|
12楼#
发布于:2010-05-05 16:39
非常感谢tiamo大侠指点迷津
|
|