Calcul des valeurs nécessaires
Deux informations très importantes doivent être calculées par la routine d'assistance de chargement différé. Il existe à cet effet deux fonctions inline dans le fichier delayhlp.cpp permettant de calculer ces informations.
La première calcule l'index de l'importation active dans les trois tables IAT (import address table), BIAT (bound import address table) et UIAT (unbound import address table).
La seconde comptabilise le nombre d'importations dans une table IAT valide.
// 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;
}