VCでプログラムを書いています。教えてください。以下はその抜粋です。ソースコードの途中に質問を書きました。



IMAGE_IMPORT_DESCRIPTOR *plmpDesc;
IMAGE_THUNK_DATA *pThunkINT,*pThunkIAT;
IMAGE_IMPORT_BY_NAME *plmpByName;
ULONG Size;


plmpDesc=(IMAGE_IMPORT_DESCRIPTOR*)ImageDirectoryEntryToData(hMod,TRUE,IMAGE_DIRECTORY_ENTRY_IMPORT,&Size);
ImageDirectoryEntryToDataの戻りを修飾してplmpDescに代入しています。多分、これでplmpDesc(構造体)に値が代入されると思いますが、ImageDirectoryEntryToDataの定義を見るとPVOIDがついていました。どうしてこの式が成り立つのかわからないので教えてください。

while(plmpDesc->Name){
pThunkINT=(IMAGE_THUNK_DATA*)((BYTE*)hMod+plmpDesc->OriginalFirstThunk);
}
上記も同様な疑問です。どうしてhMod+plmpDesc->OriginalFirstThunkの演算結果を代入できるのでしょうか?
while(pThunkINT->u1.Function){
sprintf(strDummy,"%x\t",int((PROC)pThunkIAT->u1.Function));
my_fputs_write1(strDummy);
}
最後ですが、int((PROC)pThunkIAT->u1.Functionのu1.Functionは関数でもないのでどうしてPROCとできるのでしょうか?

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

回答0件)

回答はまだありません

  • id:cx20
    (VOID*) → (IMAGE_IMPORT_DESCRIPTOR*) の式が成り立つ理由は、
    以下の資料が参考になるのでは?と思います。

    ■ ImageDirectoryEntryToDataの代わり
    http://katahiromz.web.fc2.com/win32/peformat.html

    自分も PE フォーマットについて勉強不足なので、あまり偉そうなことは言えないですが。。。

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

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

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

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