可以比较PEPROCESS值吗?

时间:2016-05-25 13:59:09

标签: c windows driver filter-driver

我正在审核"一些代码在我面前写得很好,而且我注意到了一些我对此有疑问的模式:

存储PsGetCurrentProcess()函数的结果,然后与该指针(它是指向EPROCESS结构的指针)进行比较。 但是,我没有在文档中找到任何内容,这表明此函数每次都保证返回相同的指针。更令我惊讶的是,这段代码显然已经工作了很长时间。

这是一个错误,您是否建议将该逻辑更改为例如比较进程ID(使用PsGetProcessId)?

1 个答案:

答案 0 :(得分:4)

是的,这非常正确。 EPROCESS的文档清楚地表明每个进程都有一个这样的对象,并且任何PEPROCESS指向此进程。这意味着PsGetCurrentProcess()不会返回指向 EPROCESS的指针,而是指向 EPROCESS的指针。如果指针指向同一个对象,则两个指针相等。

相关问题