教えてください。


以下のpfnOrig,pfnOrig1はどちらも0xcccccccでした。どうして同じなのでしょか?GetProcAddress実行時にはuser32.dllのインポートセクションを見に行くって同じアドレスなのでしょうか?それともどこか他のところで最初からこの2つは同じMessageBoxAなどとする(例)としているのでしょうか? unicode/マルチバイトの両方のコンパイルでも同じでした。


PROC pfnOrig;
pfnOrig = ::GetProcAddress(GetModuleHandleA("user32.dll"), "MessageBoxA");
PROC pfnOrig1;
pfnOrig1 = ::GetProcAddress(GetModuleHandleA("user32.dll"), "MessageBoxW");

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/03/26 18:10:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答0件)

回答はまだありません

  • id:mai_mai_mail
    もしかしたら0xcccccccは正しいアドレスではないような気がします。このコードを含んだプログラムを実行すると実行エラーになります。なぜ0xcccccccとなるのでしょうか?
  • id:cx20
    解決済みかもしれないですが、
    0xccccccc は初期化されていない値になります。
    恐らく、GetProcAddress() が呼ばれていないような気がします。
    Win32 API の実行結果は、GetLastError() で取得できますので
    ・GetModuleHandleA()
    ・GetProcAddress()
    を、1つづつ呼び出して、それぞれの呼出し後に、GetLastError() でエラーコードが返却されていないか確認するのが良いかと思います。

    <参考情報>
    ■ hjm/記/Microsoft Visual C++/デバグ
    http://homepage1.nifty.com/hjm/doc/visualc/debug.html

    0xcccccccc … 自動変数
    0xfdfdfdfd … ヒープメモリの末尾
    0xdddddddd … 解放済みメモリ領域
    0xcdcdcdcd … 未使用メモリ領域

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません