2016-05-25 3 views
9

私は私の前にも書かれていたいくつかのコードを「見直し」していると私は私がに関するいくつかの疑問を持っているパターンに気付いています:PEPROCESSの値を比較することはできますか?

PsGetCurrentProcess()関数の結果を(保存された後、比較はそのポインタで作られていますこれは構造体EPROCESSへのポインタです)。 しかし、ドキュメントでは何も見つけられません。この関数は、毎回同じポインタを返すことが保証されています。もっと驚くべきことは、このコードが長い間明らかに働いていたことです。

これはバグですか?そのロジックをたとえば次のように変更することをおすすめします。プロセスIDの比較(PsGetProcessIdの使用)?

+0

私はコメントなしでdownvoteを受け取ります。私はこれが非常に邪魔になることを知っています。なぜ誰かがこれが良い質問ではないとコメントしたい、または批評を述べたいと思うなら、サイトのルールによって非常に強く勧められます。 –

+3

これはバグかもしれません。あなたの質問は大丈夫だと思います。それは私が見た最高の一つですので、私はあまりにもdownvoteを理解していない。 –

+0

ポインタ*値**の "*この結果で*比較が行われました"が返されますか? – alk

答えて

4

はい、これはかなり正しいです。 EPROCESSのドキュメントでは、プロセスごとに1つのオブジェクトが存在することが明らかになり、PEPROCESSはこれを指しています。つまり、PsGetCurrentProcess()へのポインタを返しません。EPROCESSですが、EPROCESSにポインタを返します。同じオブジェクトを指す場合、2つのポインタは等しいと見なされます。

+0

答えをありがとう。あなたはこれの決定的な情報源を提供できますか?ドキュメントはいくらか示唆していますが(** ** **の代わりに**を使用することで)、このトピックについては何も見つかりません。 –

+0

自明なので、明示的に文書化されることはありません。 –

+1

(これは私の経験上、マイクロソフトが自明であるとみなし、明示的に文書化することは考えられないものであることを明確にするために書かれたものではない、または愚かな質問。) –

関連する問題