首页
社区
课程
招聘
[求助]Win7下驱动调用ObReferenceObjectByName失败! 
发表于: 2010-3-24 12:01 10997

[求助]Win7下驱动调用ObReferenceObjectByName失败! 

2010-3-24 12:01
10997
第一次发驱动的求助,小弟刚入门, 兄弟们帮忙啊 !!!!

我想用ObReferenceObjectByName获取一个驱动对象 DriverObject 可是,在Win7下调用这个函数老返回 0xC0000024。 但在XP下就没问题。  

请问这个错误码如何解决? 如果要获取 DriverObject 在WIN7下如何获取?  

先谢谢了!!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
2
STATUS_OBJECT_TYPE_MISMATCH?是不是Type不能填NULL了?

没用过win7……
2010-3-24 12:15
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
3
NTSTATUS
ObReferenceObjectByName (
    __in PUNICODE_STRING ObjectName,
    __in ULONG Attributes,
    __in_opt PACCESS_STATE AccessState,
    __in_opt ACCESS_MASK DesiredAccess,
    __in POBJECT_TYPE ObjectType,
    __in KPROCESSOR_MODE AccessMode,
    __inout_opt PVOID ParseContext,
    __out PVOID *Object
    )

ObjectType不是可选的,当然需要填写。

DriverObject直接填写IoDriverObjectType 即可
2010-3-24 14:32
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
4
返回错误,没蓝给你看已经不错了~~
Type必须要写~~
2010-3-24 16:10
0
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
5
被楼主的“但在XP下就没问题”误导了……
放虚拟机测试了一下,XP一样蓝。
2010-3-24 16:36
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢各位大牛。

这是我的参数传递, 可照样返回错误啊。

        RtlInitUnicodeString( &DriverNameString, L"\\Driver\\hidusb");

        //获取驱动对象
        status = ObReferenceObjectByName(
                &DriverNameString,
                OBJ_CASE_INSENSITIVE,
                NULL,
                0,
                IoDriverObjectType,
                KernelMode,
                NULL,
                &pDriverObject    //保存得到的驱动对象
                );
2010-3-24 16:48
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
7
*IoDriverObjectType试试
2010-3-24 19:21
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
楼上的大牛 *IoDriverObjectType 编译失败啊。

下面是我的函数声明和调用。 谢谢了。

extern NTKERNELAPI
                NTSTATUS
                ObReferenceObjectByName(
                IN PUNICODE_STRING ObjectName,
                IN ULONG Attributes,
                IN PACCESS_STATE PassedAccessState,
                IN ACCESS_MASK DesiredAccess,
                IN POBJECT_TYPE ObjectType,
                IN KPROCESSOR_MODE AccessMode,
                IN OUT PVOID ParseContext,
                OUT PVOID * Object
                );

extern POBJECT_TYPE IoDriverObjectType;

        RtlInitUnicodeString( &DriverNameString, L"\\Driver\\hidusb");

        //获取驱动对象
        status = ObReferenceObjectByName(
                &DriverNameString,
                OBJ_CASE_INSENSITIVE,
                NULL,
                0,
                *IoDriverObjectType,
                KernelMode,
                NULL,
                &pDriverObject    //保存得到的驱动对象
                );
2010-3-24 19:46
0
雪    币: 7992
活跃值: (2566)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
extern POBJECT_TYPE *IoDriverObjectType;

注意红色的*..加上即可..
2010-3-24 19:50
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
多谢,多谢。 测试成功了。
2010-3-24 20:13
0
雪    币: 156
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我也遇到这样的问题。不过我的是在XP下面,不过我想得到的是设备对象,"\\device\\kabc"这个设备已经在我的另一个驱动里面创建
RtlInitUnicodeString(&DriverNameStr, L"\\device\\kabc");
        status = ObReferenceObjectByName(
                &DriverNameStr,
                OBJ_CASE_INSENSITIVE,
                NULL,
                0,
                *IoDeviceObjectType,
                KernelMode,
                NULL,
                &pDeviceObj    //保存得到的驱动对象
                );
返回值是STATUS_OBJECT_TYPE_MISMATCH。谁能帮忙解答一下啊?
2010-4-7 14:50
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
12
各种基础问题啊
2010-4-7 19:39
0
游客
登录 | 注册 方可回帖
返回
//