阅读:1768回复:13
写过滤驱动遇到的问题,请指点。
写了两个Driver,第一个名为MyTest,创建一个设备对象\\\\Device\\MyTest,第二个为MyFilter,创建一个设备对象并通过IoAttachDeviceToDeviceStack附加到\\\\Device\\MyTest上。在加载了第一个Driver后,向\\\\Device\\MyTest发送控制请求很正常,可是在加载MyFilter后,再向\\\\Device\\MyTest发送控制请求时出现“拒绝访问”错误,是在CreateFile(\"\\\\Device\\MyTest\"...)时出现的,请问应该是哪里出问题了~?
|
|
沙发#
发布于:2003-02-20 15:25
请问一下,你这两个driver的依赖关系是怎么指定的?就是说MyFilter的DriverEntry传入的PDO指针为什么会指向MyTest?inf文件里吗?
|
|
板凳#
发布于:2003-02-20 15:26
请问一下,你这两个driver的依赖关系是怎么指定的?就是说MyFilter的DriverEntry传入的PDO指针为什么会指向MyTest?
|
|
地板#
发布于:2003-02-20 15:31
这两个Driver都是通过应用程序动态加载和卸载的,我是想通过MyFilter这个Driver来过滤发往MyTest里创建的\\\\Device\\MyTest的控制请求。
|
|
地下室#
发布于:2003-02-20 16:03
是
|
|
5楼#
发布于:2003-02-20 18:48
能问一下,如何 安装 filter 驱动呢?
能不能把你的 inf 贴上来,让大家看看呢?先谢过了。 我倒是能够通过 inf 把驱动程序 拷到系统的目录。但是我的 filter 程序有一个!,通过debugview 也没有看到驱动程序输出的信息。 这是什么原因呢? |
|
|
6楼#
发布于:2003-02-21 09:14
我不会写inf文件,向来是通过程序加载。
|
|
7楼#
发布于:2003-02-21 15:10
没有人能指点一下么?为什么我把一个设备对象附加到原来的设备对象上以后,再在用户程序中用CreateFile打开原来的设备对象时会出现“拒绝访问”错误呢~?
|
|
8楼#
发布于:2003-02-21 15:30
通过工具我发现在MyTest这个Driver里创建的设备对象\\\\Device\\MyTest最初的属性为允许读、写,而在其上面挂接了别的设备对象后其属性为空,这就是出现“拒绝访问”的原因,但为什么会发生这种情况呢~~?
|
|
9楼#
发布于:2003-02-21 18:14
你用什么程序把 驱动安装到系统上?
怎么会没有inf 文件呢? |
|
|
10楼#
发布于:2003-02-22 12:06
你是否在Filter中处理IRP_MJ_CREATE时使用了IoCompleteRequest
或完成例程,如果这样我想你没有办法法打开MyTest了 |
|
|
11楼#
发布于:2003-02-23 22:14
你换成CreateFile(\"\\\\\\\\Device\\\\MyTest\"...)这种形式试试看
|
|
|
12楼#
发布于:2003-02-26 23:23
”\\\\\\\\Device\\\\MyTest\"
这不是合法的操作,转换成正常的,岂不是 \\\\Device\\MyTest 系统会认为是网络地址 |
|
|
13楼#
发布于:2003-02-28 16:51
问题解决了,原来我在用IoCreateDevice创建“\\\\Device\\MyTest”这个设备对象的时候,第六个参数设成了TRUE,改成FALSE就没有问题了。关于这个参数,书上解释如下:
第六个参数指出设备是否是排斥的。通常,对于排斥设备,I/O管理器仅允许打开该设备的一个句柄。 |
|