Calcular valores necesarios
Actualización: noviembre 2007
Hay dos partes esenciales de información que tiene que calcular la rutina auxiliar de carga retrasada. Hay dos funciones inline en delayhlp.cpp que se utilizan para calcular esta información.
La primera calcula el índice de la importación actual en las tres diferentes tablas (tabla de direcciones de importación (IAT), tabla de direcciones de importación enlazadas (BIAT) y tabla de direcciones de importación no enlazadas (UIAT)).
La segunda cuenta el número de importaciones de una IAT válida.
// utility function for calculating the index of the current import
// for all the tables (INT, BIAT, UIAT, and IAT).
__inline unsigned
IndexFromPImgThunkData(PCImgThunkData pitdCur, PCImgThunkData pitdBase) {
return pitdCur - pitdBase;
}
// utility function for calculating the count of imports given the base
// of the IAT. NB: this only works on a valid IAT!
__inline unsigned
CountOfImports(PCImgThunkData pitdBase) {
unsigned cRet = 0;
PCImgThunkData pitd = pitdBase;
while (pitd->u1.Function) {
pitd++;
cRet++;
}
return cRet;
}