私は、Windows7 64ビットで別のプロセスのEBPレジスタの値を取得しようとしています。このため
私はこのようなGetThreadContextを使用しています:私も使ってみましたWOW64_GetThreadContextが、それは... のGetLastError()が復帰を助けなかったEIP値はOKらしいGetThreadContextはEBP = 0を返す
static CONTEXT threadContext;
memset(&threadContext, 0, sizeof(CONTEXT));
threadContext.ContextFlags = CONTEXT_FULL;
bool contextOk = GetThreadContext(threadHandle, &threadContext);
が、EBP = 0 0なので、それは大丈夫であるはずです。 このスレッドをSuspendThreadで中断します。スレッドをサンプリングするたびにこのスレッドは実行されません。
この原因は何ですか?
あなたは知っています「あなたは実行中のスレッドのための有効なコンテキストを取得することはできません。 'GetThreadContext'を呼び出す前に、スレッドを一時停止するために' SuspendThread'関数を使用しますか。」? MSDN –
はい、私は、あなたがプロセス(あるいは少なくともスレッド)を持っているので、私は:) – Idov
をした中断は、多分あなたはそれに本当のデバッガをアタッチし、それ*はEBPが言っている*見ることができました。 –