可以比较PEPROCESS值吗?

K.S*_*eff 9 c windows driver filter-driver

我正在"审查"一些在我之前编写的代码,我注意到一种模式,我有一些疑问:

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

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

MSa*_*ers 4

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