首页
社区
课程
招聘
KeGetPreviousModeByThread和PsGetCurrentProcessByThread这二函数怎么用
发表于: 2010-10-2 16:51 8633

KeGetPreviousModeByThread和PsGetCurrentProcessByThread这二函数怎么用

2010-10-2 16:51
8633
小弟初学驱动,在写的时候使用到了KeGetPreviousModeByThread和PsGetCurrentProcessByThread这二函数,编译的时候提示没有定义

要使用这二个函数要包含什么头文件,或怎么申明呢?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 34
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
没有导出的函数.
你把ntoskrnl.exe脱进ida里边,看export,找不到就是没有导出.不能用.
KeGetPreviousMode可以用.
2010-10-2 19:40
0
雪    币: 998
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没有导出的话就硬搜之。。。
2010-10-3 09:10
0
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
4
直接在wrk里面找到自己写个啊,就几行代码
2010-10-3 09:46
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
可能是宏定义函数,不在导出函数范围之列。
宏定义等于是别人定义好了,如果找不到宏就自己定义一个,楼上正解,就几行代码而已。
2010-10-3 09:49
0
雪    币: 106
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
线程的PreviousMode和所属进程都是KTHREAD结构相关的,即使从WRK代码里复制也没有通用性。
2010-10-11 16:55
0
雪    币: 152
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
在WRK中E:\****\WRK-v1.2\base\ntos\inc\ke.h这个文件中有定义:
#define KeGetPreviousModeByThread(xxCurrentThread)                          \
    (ASSERT (xxCurrentThread == KeGetCurrentThread ()),                     \
    (xxCurrentThread)->PreviousMode)
2014-9-28 14:18
0
雪    币: 152
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
实际上和KeGetPreviousMode是相同的功能,只不过是对输入参数的验证更严格了一些
而KeGetPreviousMode是导出函数,但是没有定义,只要定义一下就可以直接用KeGetPreviousMode这个函数了...

如果非要用KeGetPreviousModeByThread的话,在对文件里加上这个宏就可以了
#define KeGetPreviousModeByThread(xxCurrentThread)                          \
    (ASSERT (xxCurrentThread == KeGetCurrentThread ()),                     \
    (xxCurrentThread)->PreviousMode)


以下是在 wrk中的定义
/*++

KPROCESSOR_MODE
KeGetPreviousMode (
    VOID
    )

Routine Description:

    This function gets the threads previous mode from the trap frame


Arguments:

   None.

Return Value:

    KPROCESSOR_MODE - Previous mode for this thread.

--*/

#define KeGetPreviousMode() (KeGetCurrentThread()->PreviousMode)

/*++

KPROCESSOR_MODE
KeGetPReviousModeByThread (
    __in PKTHREAD xxCurrentThread
    )

Routine Description:

    This function gets the threads previous mode from the trap frame.


Arguments:

   xxCurrentThread - Current thread.

   N.B. This must be the current thread.

Return Value:

    KPROCESSOR_MODE - Previous mode for this thread.

--*/

#define KeGetPreviousModeByThread(xxCurrentThread)                          \
    (ASSERT (xxCurrentThread == KeGetCurrentThread ()),                     \
    (xxCurrentThread)->PreviousMode)
2014-9-28 14:25
0
游客
登录 | 注册 方可回帖
返回
//