2010-12-03 16 views
0

私はちょうどkernel32.dllの中にある「GetThreadContext」を使用しています(C++/Windowsの場合)プロセスをデバッグしてきました。
私はそれがVS2008のデバッガとkernel32.dllの

unsigned long address = (unsigned long)(&GetThreadContext); 

とアドレスだが、私がロードされたモジュール]タブを見たときに得ることができることに気づいた - 私はkernel32.dllのためのシンボルが読み込まれていないことを見ました!
どうVS2008は、「GetThreadContext」のアドレスをご存知でしたか?
PDBを持たずに自分でどうすればいいですか?
感謝:)

+2

GetProcAddr(http://msdn.microsoft.com/en-gb/library/64tkc9y5%28v=VS.80%29.aspx)多分?私はそれを使ったことがないので、これについて完全にはわかっていません。 – BlackBear

+0

ありがとう、ありがとう... :) – Idov

+0

ご使用の製品にPDBを発送しないでください。 –

答えて

3

これは

GetThreadContext(hThread, lpContext); 

作品と同じ理由のために働きます。コードで使用される名前付き関数は、リンク時に解決されなければなりません。そうしないと、リンクが失敗します。 &を使用して住所を取得しているかどうかは関係ありません。実行時にDLLがロードされ、関数名がプロセス内の特定のアドレスに解決されます。

PDBファイルは、デバッグ中に強化されたシンボリック情報を提供するためにのみ使用されます。通常、実行時には使用されません。

[私はこの質問について何かが欠けてる考えて助けることはできません。これはあなたの問題ではない場合を教えてください。]

+0

を私はそれが何を混乱だと思いますコンパイラは、デバッガがシンボルをどのように解決するかについて対処します。どちらの場合も、.dllからのシンボルなしで正しい値が得られます。 – MSN

関連する問題