首页
社区
课程
招聘
[求助]驱动 IRP_MJ_DEVICE_CONTROL
发表于: 2008-9-8 11:39 13351

[求助]驱动 IRP_MJ_DEVICE_CONTROL

2008-9-8 11:39
13351
以下代码是 EasySys生成
    //
    // Create dispatch points for device control, create, close.
    //

    DriverObject->MajorFunction[IRP_MJ_CREATE]         = Rw_DispatchCreate;
    DriverObject->MajorFunction[IRP_MJ_CLOSE]          = Rw_DispatchClose;
    DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = Rw_DispatchDeviceControl;
    DriverObject->DriverUnload                         = Rw_Unload;

在驱动入口 已经指向了 Rw_DispatchDeviceControl;

当我用API DeviceIoControl 发送一个Irp请求后,他应该走 Rw_DispatchDeviceControl这个

函数吧.我在函数第一行有一句打印,结果加载驱动后,点击发送Irp请求,结果这句并没有打印出来.

我想问一下是什么原因?

Delphi做的exe端

DeviceIoControl(m_hCommDevice, IOCTL_RW__HELLO, pointer(procid),        0, @outData, 1024, dwReturn, nil);

m_hCommDevice := CreateFile('\\.\RWSYS',        GENERIC_READ or GENERIC_WRITE,        FILE_SHARE_READ, nil,
                                        OPEN_EXISTING, 0, 0);

VC声明
#define RW__WIN32_DEVICE_NAME_A        "\\\\??\\RWSYS"
#define RW__WIN32_DEVICE_NAME_W        L"\\\\??\\RWSYS"
#define RW__DEVICE_NAME_A                        "\\Device\\RWSYS"
#define RW__DEVICE_NAME_W                        L"\\Device\\RWSYS"
#define RW__DOS_DEVICE_NAME_A                "\\DosDevices\\RWSYS"
#define RW__DOS_DEVICE_NAME_W                L"\\DosDevices\\RWSYS"

不知道问题出在哪里.

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
检查一下你打开的驱动句柄是否有效,以及DeviceIoControl的返回值。如果这都没问题,再检察你的驱动吧
2008-9-8 12:14
0
雪    币: 668
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
1.驱动句柄是否有效 怎么检测?

2.DeviceIoControl 由于这个api发送请求以后 驱动就没有收到 处理.
2008-9-8 14:46
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
1.判断返回值是否为0xFFFFFFFF,是则无效。
2.同法,检测返回值或GetLastError取错误代码。
用微软的东西就多看看MSDN,打好基础
2008-9-8 15:16
0
雪    币: 668
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
m_hCommDevice 有值 115
DeviceIoControl 发送的代码也对.就是没有运行驱动里的 io处理函数.为什么?
2008-9-8 16:14
0
游客
登录 | 注册 方可回帖
返回
//