以下の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");
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 … 未使用メモリ領域