阅读:4005回复:14
谁有磁盘驱动访问网络的源代码,就是在磁盘驱动中加入TDI支持
谁有磁盘驱动访问网络的源代码,就是在磁盘驱动中加入TDI支持
|
|
|
沙发#
发布于:2005-03-04 11:34
I have
|
|
板凳#
发布于:2005-03-04 11:40
I have 兄弟,能否分享一下阿? |
|
|
地板#
发布于:2005-03-04 16:57
兄台,能否共享一下你的资料
wdynasty@tom.com |
|
|
地下室#
发布于:2005-03-05 02:07
还是做个连接吧,大家可以共享
|
|
5楼#
发布于:2005-03-06 00:29
有一个比filedisk更简单的虚拟硬盘例子,网址是http://bcompute.com/rambler/cn/WinDriverDownload.htm。当然,功能也少一些,毕竟是一个演示程序嘛。
把这个例子中的Zw...函数调用改成对TDI的调用就可以了。 关于使用TDI,可以看一下DriverStudio的DriverNetwork库。 |
|
6楼#
发布于:2005-03-06 12:30
改起来比较麻烦吧,driverStudio有一个tdiclient的例子
但用在虚拟磁盘里面比较麻烦阿。库不一样。改起来很费尽阿 |
|
|
7楼#
发布于:2005-03-06 16:41
呵呵,你到本站的
http://www.driverdevelop.com/source.php?sortid=3 在下载列表里有TDI Client的例子代码! |
|
8楼#
发布于:2005-03-06 19:37
tdiclient 的源代码我也有,
但是如何和虚拟磁盘做到一起,挺麻烦。 |
|
|
9楼#
发布于:2005-03-06 23:26
实现一个TDI版的send,recv函数就可以了。
从DriverNetwork的KStreamSocket派生一个类,然后实现send, recv,connect方法。 实现send方法调用KStreamSocket::send就可以了,但要注意KStreamSocket::send方法是异步调用的,send完成后它要调用On_sendComplete虚方法。所以要重载这个方法。调用KStreamSocket::send以后,你可以等一个semaphore。然后当你的On_sendComplete被调用时Signal这个semaphore,就实现了同步版的send方法了。 实现connect方法调用KStreamSocket::connect。这个方法也是异步的,在完成时会调用On_connectComplete方法,所以要重载这个方法。实现同步版的方法同上。 实现recv麻烦些,TDI接口不推荐使用它提供的recv,而是需要重载KStreamSocket::OnReceive方法。你自己的recv可以等一个semaphore,然后当OnReceive被调用时signal这个semaphore,就实现了recv了。当然,别忘了在signal这个semaphore前把OnReceive传过来的数据保存在你自己的缓冲区中。 原理就是这样了。再看看DriverNetwork中的例子,就成了。 然后把vdisk中的Zw...函数调用改成对你的send, recv, connect的调用就可以了。简单的说,把open file部分改成对connect调用,读写改成send, recv调用即可。 |
|
10楼#
发布于:2005-03-07 16:24
非常感谢。
|
|
|
11楼#
发布于:2005-03-10 12:34
:cool:
|
|
12楼#
发布于:2005-07-27 00:38
liuge老大,能发一份给我吗?我的老师要我做类似的程序,急呢
mapleaves@gmail.com |
|
13楼#
发布于:2005-07-27 13:38
下面是引用liuge于2005-03-06 23:26发表的: 如果是用scsi miniport实现的虚拟磁盘,恐怕不能简单地替换吧,超时问题怎么办? |
|
14楼#
发布于:2009-08-02 21:31
各位大大,可否寄给我一份类似的程序 caterpillar1985@hotmail.com
|
|