HRESULT WINAPI __HrLoadAllImportsForDll(LPCSTR szDll) { HRESULT hrRet = HRESULT_FROM_WIN32(ERROR_MOD_NOT_FOUND); PCImgDelayDescr pidd = PiddFromDllName(szDll); if (pidd != NULL) { // Found a matching DLL name, now process it. // // Set up the internal structure // FARPROC * ppfnIATEntry = PFromRva<FARPROC*>(pidd->rvaIAT); size_t cpfnIATEntries = CountOfImports(PCImgThunkData(ppfnIATEntry)); FARPROC * ppfnIATEntryMax = ppfnIATEntry + cpfnIATEntries; for (;ppfnIATEntry < ppfnIATEntryMax; ppfnIATEntry++) { __delayLoadHelper2(pidd, ppfnIATEntry); } // Done, indicate some semblance of success // hrRet = S_OK; } return hrRet; }
static inline void WINAPI OverlayIAT(PImgThunkData pitdDst, PCImgThunkData pitdSrc) { __memcpy(pitdDst, pitdSrc, CountOfImports(pitdDst) * sizeof IMAGE_THUNK_DATA); }
static void WINAPI OverlayIAT(IMAGE_THUNK_DATA *pitdDst, const IMAGE_THUNK_DATA *pitdSrc) { memcpy(pitdDst, pitdSrc, CountOfImports(pitdDst) * sizeof (IMAGE_THUNK_DATA)); }