掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
カレントのプロセス以外の情報取得の疑問 (ID:66927)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
簡単に書くと,プロセス境界をまたぐために,アドレスだけ渡しても別のメモリを参照してしまうからです。 知っての通り,Win32環境ではプロセスごとに別のメモリ空間を持っています。 そのため,メッセージの送信側と受信側が異なるプロセスの場合,ポインタを送受信しても,正しく情報は伝わりません。 最悪,受信側がクラッシュしてしまいます。 # スタックフレームを破壊した場合など。 で,今回のように他のプロセス内の情報を得るためにポインタが必用になる場合ですが,受信側のプロセス内に情報を受け渡すための領域があればよいわけです。 そうすれば,メッセージの送信側と受信側は異なるプロセスであっても,ポインタは受信側プロセス内の領域を示すためのものですから,受信側は問題なく読み書き出来ます。 で,その受信側プロセス内にメモリ領域を確保するための手段がVirtualAllocExであり,そこへ送信側プロセスが読み書きするための手段がReadProcessMemory, WriteProcessMemoryになります。 デバッグカテゴリにあるのは,これを利用するのは通常デバッガくらいだからでしょう。 # 他のプロセスのメモリを弄るなんてのは危険な行為。 このあたりは,絵を描いてみると理解の助けになるかもしれません。 ちなみに,WM_GETTEXTなどの一部のメッセージに限り,Windowsがそのあたりをうまいこと処理してくれます。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.