阅读:1911回复:10
高分!奇怪的事情,我做出来的虚拟磁盘不能调用DispatchWrite()
它从来不调用DispatchWrite(),可我明明在DriverEntry中设定好
MajorFunction[IRP_MJ_WRITE] = DispatchWrite() 我在做一个虚拟磁盘,映象文件存放在网络服务器上。我在本机上的虚拟磁盘已经实现,是模仿(基本是抄的)filedisk做的,我把它加了一个网络接口,连接到网络上的映象,在TDI层发送和接受数据。这些都没问题。 现在的问题是Read正常,它会在网络上发送请求,处理接收数据。但是就是它不会去调用write,当我点格式化时,系统就提示“Windows 不能完成格式化”。我的DispatchWrite()的第一行就是一条打印语句,可是在格式化的时候就是不打印出来,也就是说没有调用。 这是怎么回事啊 |
|
最新喜欢:![]() |
沙发#
发布于:2003-08-02 17:37
没有人知道吗?郁闷
当我把网络上的映象文件先用filedisk格式化后,我客户端在连接后读取一些区块信息,然后当我双击驱动盘符时它却直接提示无法操作,连一些Read的Irp都不发,当我点格式化时,系统却提示我没有权限,这是什么原因?(我肯定是管理员权限身份进去的) 我的READ操作应该是没有问题的,因为我测试时在驱动中把读到的信息写到一个文件里,我比较后发现读取是正常的,如第一个区块中的信息512字节是 ? |
|
板凳#
发布于:2003-08-02 19:38
设备对象的属性是可写吗?
|
|
|
地板#
发布于:2003-08-02 20:18
当然可写了,不就是在打开设备时CreateFile()中指定的吗,我的设备又有IRP_MJ_WRITE函数
|
|
地下室#
发布于:2003-08-03 18:44
你好!
可以聊聊吗? QQ:4932992 |
|
5楼#
发布于:2003-08-04 12:24
把你的代码贴出来看看
|
|
6楼#
发布于:2003-08-04 12:40
代码太长了,接近2000行了,不好贴
我的问题是为什么我做出来的虚拟盘会说我没有权限。 还有现在发现个问题是我在关闭客户端时在即将关闭的时候会连续发出几个读写请求,如第一个是要求读第一个扇区的4096字节 |
|
7楼#
发布于:2003-08-04 12:44
那你参考pgpdisk吧,这个的代码更长
|
|
8楼#
发布于:2003-08-04 13:48
pgpdisk也是涉及网络的吗?
我参考的是filedisk |
|
9楼#
发布于:2003-08-06 10:04
TDI层的通讯该怎样做呢?
|
|
10楼#
发布于:2003-08-07 09:54
pgpdisk不涉及网络,网络部分可以参考PCAUSA的例子。
http://www.driverdevelop.com/forum/upload/else/2003-03-26_PCAUSA.zip |
|