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とできるのでしょうか?