首页
社区
课程
招聘
[求助]请大大再进来下,关于DeviceIoControl一直返回0.请进来帮我看下代码!
发表于: 2008-12-20 18:43 6618

[求助]请大大再进来下,关于DeviceIoControl一直返回0.请进来帮我看下代码!

2008-12-20 18:43
6618
大大好.我不知道为什么一直返回0

我在驱动的入口函数这样定义了.
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]=abc;

---------------------------------------------ABC函数我什么也没做-----------
NTSTATUS abc(
                IN PDEVICE_OBJECT DEVICEObject,
                IN PIRP pirp
                         )
{
    pirp->IoStatus.Status=STATUS_SUCCESS;

        pirp->IoStatus.Information=12;

        IoCompleteRequest(pirp,IO_NO_INCREMENT);

        return STATUS_SUCCESS;

}

在应用程序调用DeviceIoControl函数时,我想把lpBytesReturned返回的取那个12.
但是一直返回0, 而DeviceIoControl函数也一直反回0.

DeviceIoControl的参数我都设置0,就第一个是驱动的句柄,用CreateFileA函数得到是204.
lpBytesReturned放了一个整型变量来取这12.可就是不行,请大大指出一下哪里问题,!

谢谢!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
[QUOTE=六月;553217]大大好.我不知道为什么一直返回0

我在驱动的入口函数这样定义了.
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]=abc;

---------------------------------------------ABC函数我什么也...[/QUOTE]
对了忘记说了
CreateFileA函数的取法是不是不对.

CreateFileA(“C:\WINDOWS\system32\drivers\ffddj.sys”,GENERIC_READ_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)

是不是驱动的路径不该这样?可返回的不是0,是204!
2008-12-20 18:50
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
3
你还是好好对照驱动通信的例子看看吧……
2008-12-20 19:59
0
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你用DeviceIoControl调用驱动时,函数abc中的IoStatus.Information里面放的实际上是结果的长度,所以你想把12取出来当然会失败!
2008-12-21 11:21
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢楼上2位,问题发现主要自己没好好去了解驱动!

这个好象没关系的,这里是可以写实际操作多少字节,如果没有操作可以随便设置个0也可以的,
昨天主要一直没有创建设备和给设备取别名,发现用CreateFile打不开设备,在R3下识别不到内核模式下的驱动名,后来才发现////.//name这样才可以打开设备,研究了2天了,终于有点弄懂了派遣函数了!

不过昨天发现,IRP_MJ_CLOSE这个IRP处理我已经指向自己的函数了,当R3调用CloseHandle,关闭CreateFile创建的句柄的时候,这个IRP不会被派到我指的函数中...

不知道大家是否有碰到过.还是我弄错了.还是要用IRP_MJ_CLEANUP来派遣呢?
2008-12-21 17:22
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
6
本来就不会。
2008-12-21 17:28
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
啊?那IRP_MJ_CLOSE这个IPR在什么情况下才会被派遣自定义的函数呢?
2008-12-21 17:41
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
8
3楼不是让你先看书么? 错误在CreateFile打开的是文件,不是设备
2008-12-22 08:43
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
9
向欧阳大哥学习
2008-12-22 08:49
0
雪    币: 287
活跃值: (102)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
10
向西毒学 习。。。。
2008-12-22 12:30
0
游客
登录 | 注册 方可回帖
返回
//